近年AI登場によって、画像の背景削除がかなり簡単にできるようになりました。

Web上で無料利用できるとか、すごすぎ!!
しかし、意図に反して必要な部分が削除されたり、不要な部分が残ったりした経験、一度や二度はあるのではないでしょうか?
「もう少し削除範囲を調整したい」
「背景だけをキレイに残したい」
「背景削除以外の画像加工をしたい」
本記事では、そういった悩みを解決します。
無料ソフト「GIMP」に「AI背景削除プラグイン」を導入し、背景を削除する方法を詳しく解説していきます。
さらに、AI背景削除プラグインも配布しています。
※海外の有識者の方が作成したものをベースに、改良したものになります。
図をたくさん使用して説明していますので、初めての方でもわかりやすいかと思います。
それでは一緒にやっていきましょう!
GIMPプラグイン「ガイド一括生成プラグイン」も公開しています。興味のある方はぜひ、ご活用ください。
GIMP本体
GIMP本体が必要な場合は、こちらからダウンロードしてください。
GIMP2
※最終安定バージョンは、GIMP 2.10.38です。
GIMP3
AI画像背景削除 for GIMP
概要
Pythonライブラリ「Rembg」というAI背景削除ツールを、GIMP上で呼び出して使いやすくするプラグインとなります。
作成の際、こちらのサイトを参考にさせて頂きました。ありがとうございます。この場をお借りして、心より感謝いたします。
使いやすくするように、オリジナルから以下の内容を改良しています。
英語→日本語表記
レイヤー名が学習モデル名になるよう変更
学習モデル(太文字)を追加
u2net / u2netp / u2net_human_seg
u2net_cloth_seg / silueta / isnet-general-use
isnet-anime / sam / birefnet-general
birefnet-general-lite / birefnet-portrait
birefnet-dis / birefnet-hrsod
birefnet-cod / birefnet-massive
機能
編集したい画像を自動で分析し、背景を自動で削除します。さらに削除範囲をマスク(選択範囲)として保存します。


選択範囲として残しておける機能が、かなり便利!!もうWeb版のAI背景削除には戻れなくなります!!
ダウンロード
GIMP2と3では、仕様がまったく別物のため、プラグインを共通化できません。
そのため、ご利用のGIMPバージョンにあわせて、プラグインをダウンロードしてください。
※セキュリティ面を考慮して、Google Driveにファイルを保管しています。
導入方法
プラグインを動作させるために、色々と下準備が必要となります。詳しくはこちらを参考にしてください。

Pythonのインストール
rembgのインストール
GIMPのAI背景削除プラグインの導入
注意事項
ダウンロードファイルを解凍後、フォルダごとGIMPのプラグインフォルダに設置してください。詳しくは、こちらで解説しています。


フォルダとプラグインが違う名前になっていて、読み込まないことに気づかず、無駄な時間を過ごしました…。注意されたし!!
ソースコード
ソースコードも掲載しておきます。
ぜひ、自分色にアレンジしてみてください。
- GIMP2以前
- GIMP3以降
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 原作者:James Huang <elastic192@gmail.com>
# https://elastic192.blogspot.com/
from gimpfu import *
import os, sys, string, tempfile
import platform
import subprocess
def Rembg(image, drawable, asMask, selModel, AlphaMatting, aeValue):
#ユーザー設定部分
#rembg.exeのアドレスを指定する
aiExe = r"C:\Users\■■■\AppData\Local\Programs\Python\Python■■■\Scripts\rembg.exe"
#初期値:aiExe = r"C:\Users\■■■\AppData\Local\Programs\Python\Python■■■\Scripts\rembg.exe"
#画像処理をするアドレスを指定する
tdir = tempfile.gettempdir()
#初期値:tdir = tempfile.gettempdir()
#学習モデル
tupleModel = ("u2net","u2net_human_seg","u2net_cloth_seg","u2netp","silueta","isnet-general-use",\
"isnet-anime","sam","birefnet-general","birefnet-general-lite","birefnet-portrait",\
"birefnet-dis","birefnet-hrsod","birefnet-cod","birefnet-massive")
removeTmpFile = True
OutputMessage = False
osName = platform.system()
exportSep = str(os.sep)
if OutputMessage:
pdb.gimp_message(tdir)
jpgFile = "%s%sTemp-gimp-0000.jpg" % (tdir, exportSep)
pngFile = "%s%sTemp-gimp-0000.png" % (tdir, exportSep)
errFile = "%s%sErrMsg.txt" % (tdir, exportSep)
x1 = 0
y1 = 0
option = ""
image.undo_group_start()
curLayer = pdb.gimp_image_get_active_layer(image)
x1, y1 = curLayer.offsets
gimp.progress_init("AI背景除去を実行中...")
gimp.progress_update(0.1)
if pdb.gimp_selection_is_empty(image):
pdb.file_jpeg_save(image, drawable, jpgFile, jpgFile, 0.95, 0, 1, 0, "", 0, 1, 0, 0)
else:
pdb.gimp_edit_copy(drawable)
non_empty, x1, y1, x2, y2 = pdb.gimp_selection_bounds(image)
tmpImage = gimp.Image(x2-x1, y2-y1, 0)
tmpDrawable = gimp.Layer(tmpImage, "Temp", tmpImage.width, tmpImage.height, RGB_IMAGE, 100, NORMAL_MODE)
pdb.gimp_image_add_layer(tmpImage, tmpDrawable, 0)
pat = pdb.gimp_context_get_pattern()
pdb.gimp_context_set_pattern("Leopard")
pdb.gimp_drawable_fill(tmpDrawable, 4)
pdb.gimp_context_set_pattern(pat)
pdb.gimp_floating_sel_anchor(pdb.gimp_edit_paste(tmpDrawable,TRUE))
pdb.file_jpeg_save(tmpImage, tmpDrawable, jpgFile, jpgFile, 0.95, 0, 1, 0, "", 0, 1, 0, 0)
pdb.gimp_image_delete(tmpImage)
#Rembg操作
if OutputMessage:
pdb.gimp_message(aiExe)
if AlphaMatting:
option = "-a -ae %d" % (aeValue)
cmd_list = [aiExe, "i", "-m", tupleModel[selModel]]
if option:
cmd_list.extend(option.split())
cmd_list.extend([jpgFile, pngFile])
creationflags = 0
process = subprocess.Popen(cmd_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while process.poll() is None:
gimp.progress_update(0.7)
gimp.displays_flush()
import time
time.sleep(0.1)
stdout, stderr = process.communicate()
if OutputMessage:
pdb.gimp_message(str(stderr.decode('cp950', errors='ignore')))
if os.path.exists(errFile):
with open(errFile, "r", encoding='cp950') as fp:
output = fp.read()
if len(output) > 0:
unicodestr = output.encode('utf-8')
if OutputMessage:
pdb.gimp_message(unicodestr)
os.remove(errFile)
if len(output) > 0 and not OutputMessage:
pdb.gimp_message(unicodestr)
gimp.progress_update(0.8)
#GIMP操作
#GIMPに追加されるレイヤー名
layer_name = str(tupleModel[selModel])
if asMask:
layer_name =layer_name + "-mask"
if AlphaMatting:
layer_name =layer_name + "-am-" + str(aeValue)
file_exists = os.path.exists(pngFile)
if file_exists:
newlayer = pdb.gimp_file_load_layer(image, pngFile)
image.add_layer(newlayer, -1)
pdb.gimp_layer_set_name(newlayer, layer_name)
pdb.gimp_layer_set_offsets(newlayer, x1, y1)
if asMask:
pdb.gimp_image_select_item(image, CHANNEL_OP_REPLACE, newlayer)
image.remove_layer(newlayer)
copyLayer = pdb.gimp_layer_copy(curLayer, TRUE)
image.add_layer(copyLayer, -1)
pdb.gimp_layer_set_name(copyLayer, layer_name)
mask=copyLayer.create_mask(ADD_SELECTION_MASK)
copyLayer.add_mask(mask)
pdb.gimp_selection_none(image)
gimp.progress_update(0.9)
image.undo_group_end()
gimp.displays_flush()
if removeTmpFile:
if osName == "Windows":
del_command = "del \"%s%sTemp-gimp-0000.*\"" % (tdir, exportSep)
else:
del_command = "rm %s%sTemp-gimp-0000.*" % (tdir, exportSep)
os.system(del_command)
register(
"Rembg",
"AI背景除去",
"AI背景除去",
"JamesH, <elastic192@gmail.com>",
"JamesH, https://elastic192.blogspot.com",
"2022/6/4",
"<Image>/プラグイン/AI背景除去(Rembg)",
"RGB*",
[
(PF_TOGGLE, "asMask", ("レイヤーマスクを作成する"), True),
(PF_OPTION,"selModel","学習モデル", 0, tupleModel),
(PF_TOGGLE, "AlphaMatting", ("アルファマット"), False),
(PF_SPINNER,"aeValue", ("アルファマット侵食サイズ"), 15, (1,100,1))
],
[],
Rembg,
domain=("gimp20-python", gimp.locale_directory))
main()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 原作者:James Huang <elastic192@gmail.com>
# https://elastic192.blogspot.com/
import sys
import os, string, tempfile
import platform
import subprocess
import gi
gi.require_version('Gimp', '3.0')
from gi.repository import Gimp
gi.require_version('GimpUi', '3.0')
from gi.repository import GimpUi
from gi.repository import GLib
from gi.repository import GObject
from gi.repository import Gio
import time
def N_(message): return message
def _(message): return GLib.dgettext(None, message)
#学習モデル一覧
tupleModel = ("u2net","u2net_human_seg", "u2net_cloth_seg", "u2netp", "silueta", "isnet-general-use", "isnet-anime",
"birefnet-general","birefnet-general-lite","birefnet-portrait","birefnet-dis","birefnet-hrsod","birefnet-cod","birefnet-massive")
#ユーザー設定部分
#rembg.exeのアドレスを指定する
aiExe = r"C:\Users\■■■\AppData\Local\Programs\Python\Python■■■\Scripts\rembg.exe"
#初期値:aiExe = r"C:\Users\■■■\AppData\Local\Programs\Python\Python■■■\Scripts\rembg.exe"
#画像処理をするアドレスを指定する
tdir = tempfile.gettempdir()
#初期値:tdir = tempfile.gettempdir()
def pdbCall(procedureName, args):
pdb_proc = Gimp.get_pdb().lookup_procedure(procedureName)
pdb_config = pdb_proc.create_config()
for x in args:
pdb_config.set_property(x, args[x])
return pdb_proc.run(pdb_config)
def store_layer_png(image, drawable, path):
interlace, compression = 0, 2
_, x, y = drawable.get_offsets()
width, height = drawable.get_width(), drawable.get_height()
tmp_img = Gimp.Image.new(width, height, image.get_base_type())
drawable.set_offsets(0, 0)
tmp_layer = Gimp.Layer.new_from_drawable (drawable, tmp_img)
tmp_img.insert_layer (tmp_layer, None, 0)
drawable.set_offsets(x, y)
args = {
"run-mode": Gimp.RunMode.NONINTERACTIVE,
"image": tmp_img,
"file": Gio.File.new_for_path(path),
"options": None,
"interlaced": interlace,
"compression": compression,
"bkgd": True,
"offs": False,
"phys": True,
"time": True,
"save-transparent": True
}
pdbCall('file-png-export', args);
tmp_img.delete()
def store_layer_jpg(image, drawable, path):
_, x, y = drawable.get_offsets()
width, height = drawable.get_width(), drawable.get_height()
tmp_img = Gimp.Image.new(width, height, image.get_base_type())
drawable.set_offsets(0, 0)
tmp_layer = Gimp.Layer.new_from_drawable (drawable, tmp_img)
tmp_img.insert_layer (tmp_layer, None, 0)
drawable.set_offsets(x, y)
args = {
"run-mode": Gimp.RunMode.NONINTERACTIVE,
"image": tmp_img,
"file": Gio.File.new_for_path(path),
"options": None,
"quality": 0.95,
"smoothing": 0,
"optimize": True
}
pdbCall('file-jpeg-export', args);
tmp_img.delete()
def RemoveBG(procedure, run_mode, image, drawables, config, data):
if run_mode == Gimp.RunMode.INTERACTIVE:
GimpUi.init('plug-in-RemoveBG-python')
dialog = GimpUi.ProcedureDialog(procedure=procedure, config=config)
dialog.fill(["asMask"])
dialog.fill(["AlphaMatting"])
dialog.fill(["aeValue"])
dialog.get_int_combo("selModel", GimpUi.IntStore.new (tupleModel))
dialog.fill(["selModel"])
if not dialog.run():
return procedure.new_return_values(Gimp.PDBStatusType.CANCEL, GLib.Error())
removeTmpFile = True
OutputMessage = False
osName = platform.system()
exportSep = str(os.sep)
if OutputMessage:
Gimp.message(tdir)
jpgFile = os.path.join(tdir, "Temp-gimp-0000.jpg")
pngFile = os.path.join(tdir, "Temp-gimp-0000.png")
errFile = os.path.join(tdir, "ErrMsg.txt")
x1 = 0
y1 = 0
option = ""
Gimp.progress_init("AI背景削除中")
Gimp.progress_update(0.0)
asMask = config.get_property('asMask')
AlphaMatting = config.get_property('AlphaMatting')
aeValue = config.get_property('aeValue')
selModel = config.get_property('selModel')
if OutputMessage:
msg = "data: %s %s %d %s" % (asMask, AlphaMatting, aeValue, tupleModel[selModel])
Gimp.message(msg)
if OutputMessage:
Gimp.message(aiExe)
if AlphaMatting:
option = "-a -ae %d" % (aeValue)
command_args = [
aiExe,
"i",
"-m",
tupleModel[selModel]
]
if option:
command_args.extend(option.split())
command_args.append(jpgFile)
command_args.append(pngFile)
if OutputMessage:
Gimp.message("構築されたコマンド(リスト形式):" + str(command_args))
Gimp.progress_update(0.1)
Gimp.context_push()
image.undo_group_start()
drawable = drawables[0]
curLayer = drawable
_, x1, y1 = drawable.get_offsets()
Gimp.progress_update(0.2)
store_layer_jpg(image, drawable, jpgFile)
Gimp.progress_update(0.4)
max_attempts = 10
wait_interval = 0.2
file_ready = False
for i in range(max_attempts):
if os.path.exists(jpgFile) and os.path.getsize(jpgFile) > 0:
file_ready = True
break
time.sleep(wait_interval)
Gimp.message(f"一時ファイル '{jpgFile}' の準備を待機中... ({i+1}/{max_attempts}回目)")
if not file_ready:
Gimp.message(f"エラー: 一時ファイル '{jpgFile}' が時間内に生成されませんでした。処理を中止します。")
image.undo_group_end() # エラーで終了する場合もundoを閉じる
Gimp.context_pop()
Gimp.progress_end()
return procedure.new_return_values(Gimp.PDBStatusType.FAIL, GLib.Error())
try:
result = subprocess.run(
command_args,
check=True,
capture_output=True,
text=True,
shell=False
)
if OutputMessage and result.stdout:
Gimp.message("rembg.exe 標準出力:\n" + result.stdout)
if OutputMessage and result.stderr:
Gimp.message("rembg.exe 標準エラー:\n" + result.stderr)
except subprocess.CalledProcessError as e:
error_message = f"rembg.exe の実行エラー:\n"
error_message += f"コマンド: {e.cmd}\n"
error_message += f"戻り値: {e.returncode}\n"
if e.stdout:
error_message += f"標準出力:\n{e.stdout}\n"
if e.stderr:
error_message += f"標準エラー:\n{e.stderr}"
Gimp.message(error_message)
image.undo_group_end()
Gimp.context_pop()
Gimp.progress_end()
return procedure.new_return_values(Gimp.PDBStatusType.FAIL, GLib.Error())
except FileNotFoundError:
Gimp.message(f"エラー: rembg.exe が見つかりません。\nパス: {aiExe} を確認してください。")
image.undo_group_end()
Gimp.context_pop()
Gimp.progress_end()
return procedure.new_return_values(Gimp.PDBStatusType.FAIL, GLib.Error())
except Exception as e:
Gimp.message(f"不明なエラーが発生しました: {e}")
image.undo_group_end()
Gimp.context_pop()
Gimp.progress_end()
return procedure.new_return_values(Gimp.PDBStatusType.FAIL, GLib.Error())
Gimp.progress_update(0.8)
Gimp.progress_update(0.9)
file_exists = os.path.exists(pngFile)
if file_exists:
args = {
"run-mode": Gimp.RunMode.NONINTERACTIVE,
"image": image,
"file": Gio.File.new_for_path(pngFile)
}
result = pdbCall('gimp-file-load-layer', args);
if (result.index(0) == Gimp.PDBStatusType.SUCCESS):
gimp_layer = result.index(1)
gimp_layer.set_offsets(x1, y1)
image.insert_layer(gimp_layer, drawable.get_parent(),
image.get_item_position(drawable))
if asMask:
image.select_item(2, gimp_layer)
image.remove_layer(gimp_layer)
copyLayer = Gimp.Layer.copy(curLayer)
image.insert_layer(copyLayer, drawable.get_parent(),
image.get_item_position(drawable))
layer_name = str(tupleModel[selModel])
if asMask:
layer_name =layer_name + "-mask"
if AlphaMatting:
layer_name =layer_name + "-am-" + str(aeValue)
copyLayer.set_name(layer_name)
mask=copyLayer.create_mask(4)
copyLayer.add_mask(mask)
Gimp.Selection.none(image)
else:
print("Error loading layer from openraster image.")
Gimp.displays_flush()
image.undo_group_end()
Gimp.context_pop()
if removeTmpFile:
if osName == "Windows":
del_command = f"del \"{os.path.join(tdir, 'Temp-gimp-0000.*')}\""
else:
del_command = f"rm {os.path.join(tdir, 'Temp-gimp-0000.*')}"
os.system(del_command)
Gimp.progress_update(1.0)
Gimp.progress_end()
return procedure.new_return_values(Gimp.PDBStatusType.SUCCESS, GLib.Error())
class AIRemoveBG (Gimp.PlugIn):
def do_query_procedures(self):
return [ "plug-in-RemoveBG-python" ]
def do_set_i18n (self, name):
return False
def do_create_procedure(self, name):
procedure = Gimp.ImageProcedure.new(self, name,
Gimp.PDBProcType.PLUGIN,
RemoveBG, None)
procedure.set_image_types("*")
procedure.set_menu_label("AI背景削除")
procedure.add_menu_path('<Image>/プラグイン/')
procedure.set_documentation("AI背景削除",
"AI背景削除",
name)
procedure.set_attribution("JamesH", "JamesH", "2023")
procedure.add_boolean_argument ("asMask", _("_レイヤーマスクを作成"), _("レイヤーマスクを作成"),
True, GObject.ParamFlags.READWRITE)
procedure.add_boolean_argument ("AlphaMatting", _("_アルファマット"), _("アルファマット"),
False, GObject.ParamFlags.READWRITE)
procedure.add_int_argument ("aeValue", _("アルファ_マット侵食サイズ"), _("アルファマット侵食サイズ"),
1, 100, 15, GObject.ParamFlags.READWRITE)
procedure.add_int_argument ("selModel", _("学習_モデル"), _("学習モデル"),
0, len(tupleModel), 0, GObject.ParamFlags.READWRITE)
return procedure
Gimp.main(AIRemoveBG.__gtype__, sys.argv)
プラグインの導入方法

Pythonのインストール

今回のプラグインは、Pythonが動作できる環境を用意する必要があります。
- 1
- 2セットアップファイルをダウンロードする
- 3Pythonをインストールする
セットアップファイルを実行し、インストールを進めていきます。
②の「Add python.exe to PATH」は必ずチェックを入れてください。
環境変数に「python.exe」の場所を追加することで、コマンドプロンプトやPowershellで、Pythonを簡単に実行することができるようになります。
- 4コマンドプロンプトを「管理者権限」で起動する
Win+Rを押すか、スタートメニューから起動してください。
「cmd」と入力後、Ctrl+Shift+Enterを押してください。
- 5Pythonが正常に動作するか確認する
コードをコピーします。
python -V
コマンドプロンプトに右クリックで貼り付けて、実行してください。
正常にPythonがインストールされている場合は、図のようにPythonのバージョンが表示されます。
rembgのインストール

先ほどインストールした「Python」に、rembgをインストールしていきます。

rembgには「CPU版」と「GPU版」が存在しますが、「GPU版」を導入してもGIMP上ではCPUで処理されてしまいます。そのため導入の簡単な「CPU版」で解説を進めていきます。
- 1コマンドプロンプトを「管理者権限」で起動する
※Pythonインストール後にコマンドプロンプトを閉じていなければ、この作業は不要です。
Win+Rを押すか、スタートメニューから起動してください。
「cmd」と入力後、Ctrl+Shift+Enterを押してください。
- 2「rembg」と関連ライブラリをインストールする
以下のコードをコピーします。
pip install rembg onnxruntime click filetype watchdog aiohttp gradio asyncer
コマンドプロンプトに右クリックで貼り付けて、実行してください。
インストール完了後は、「C:\Windows\System32>」と表示されます。
- 3デスクトップに画像を用意する
「test.jpg」というファイル名の画像を用意し、デスクトップに置いてください。
「rembg」の動作確認に必要な作業となります
※画像の用意が難しい場合は、以下の画像を「右クリック」→「名前をつけて保存」でデスクトップに保存してください。
rembg動作確認用画像 - 4「rembg」を実行する
以下のコードをコピーします。
rembg i "C:\Users\%USERNAME%\Desktop\test.jpg" "C:\Users\%USERNAME%\Desktop\test-a.jpg"
コマンドプロンプトに右クリックで貼り付けて、実行してください。
- 5出力された「test-a.jpg」の背景がないことを確認する
図のように、背景が削除されていればOKです。
もしエラーが出た場合は、図のように不足のライブラリをインストールしてください。
コピー用のコードを置いておきます。
※●●●●には不足のライブラリ名を入力してください。pip install ●●●●
rembgのインストールは、以上となります。
GIMPプラグインの導入

下準備が完了したので、あとはGIMPプラグインを導入するだけ完了です。
もう少しなのでがんばりましょう!
- 1プラグインをダウンロードする
本記事では、GIMP3に導入する手順で進めていきます。
※GIMP2はダウンロードするファイルが異なりますが、導入方法は変わりません。参考にしてください。プラグインはこちらからダウンロードしてください。
- 2ダウンロードしたファイルを解凍する
- 3Pythonファイルを編集する
先ほどインストールした「rembg」の場所を指定する必要があります。
手順が多くてややこしいですが、頑張りましょう!!
メモ帳でPythonファイルを開きます。
次に「Python」フォルダにアクセスします。
C:\%USERPROFILE%\AppData\Local\Programs\Python\
「rembg.exe」まで移動します。
AppData フォルダは通常「隠しフォルダ」になっていて見えません。表示したい場合は、適当なフォルダから図のように「隠しファイル」にチェックを入れてください。
「rembg.exe」のアドレスをコピーします。
先ほど開いたPythonファイル内の「aiExe」のアドレス部分を上書きします。
Pythonファイルを保存します。
Pythonファイルの設定は、以上となります。
- 4GIMPのプラグインフォルダを確認する
GIMPを起動し、「編集」→「設定」にアクセスしてください。
「フォルダ」→「プラグイン」から、フォルダアドレスを選択後、右上のアイコンをクリックしてください。
初期状態では、以下の2ヶ所がプラグインフォルダとなっています。違いは以下のとおりです。どちらにプラグインを設置するか使い分けてください。
コンピュータ全体に適用する場合
GIMP2
C:\Program Files\GIMP 2\lib\gimp\2.0\plug-ins
GIMP3
C:\Program Files\GIMP 3\lib\gimp\3.0\plug-insユーザー毎に適用する場合
GIMP2
C:\Users\%USERNAME%\AppData\Roaming\GIMP\2.10\plug-ins
GIMP3
C:\Users\%USERNAME%\AppData\Roaming\GIMP\3.0\plug-ins - 5プラグインをフォルダごと移動させる
開いたプラグインフォルダに、先程解凍したファイルを「RemoveBG」フォルダごと移動させてください。
以下のようになればOKです。
これで、プラグインが使えるようになりました。
プラグインの使い方

- 1GIMPを起動し、編集したい画像を開く
- 2プラグインを起動する
メニューバーの「プラグイン」→「AI背景削除」の順にアクセスします。
- 3背景削除の設定をする
プラグイン(rembg)の設定が必要なので、各パラメーターについて解説します。
レイヤーマスクを作成
チェックを入れると、削除範囲をマスク(選択範囲)として残しておきます。
選択範囲の微調整に必要なので、基本的にはチェックを入れておきましょう。
アルファマットの作成とサイズ
アルファマットとは「対象物」と「背景」の境界線のあいまいな部分の透明度のことです。
「0~100」の間で調整が可能で、数字が大きいほど境界線の透明度の範囲が大きくなります。
アルファマット - サイズ15
アルファマット - サイズ100
学習モデル
背景削除するときに使用する計算モデルです。選択するモデルによって、対象物と背景の境界線の認識が変わります。
色々と試してみて、きれいに背景の削除ができる最適なモデルを探してください。
参考までに、同じ写真でモデルを変更した例を掲載しておきます。
u2net
一般向けモデルu2netp
u2netの軽量版u2net_human_seg
人物に特化したモデルu2net_cloth_seg
衣類を「上半身」「下半身」「全身」に分類silueta
u2netのサイズ縮小版isnet-general-use
一般向けの新モデルisnet-anime
アニメキャラ特化モデルsam
万能モデルbirefnet-general
一般向けモデルbirefnet-general-lite
一般向け軽量モデルbirefnet-portrait
人間(写真)特化モデルbirefnet-dis
細部切り抜き(DIS)モデルbirefnet-hrsod
HRSODモデルbirefnet-cod
CODモデルbirefnet-massive
大規模データモデルrembgのパラメーターの詳細については、公式サイト(英語)に詳しく記載されています。
- 4プラグインを実行して、背景を削除する
図の設定がオススメ設定となります。とはいえ写真によって異なりますので、過信は禁物です。
背景の削除は、以上となります。
背景削除範囲の調整方法
GIMPの一般的な使用方法の解説になってしまいますが、背景削除範囲の調整方法について、簡単に解説します。
- 1マスクから選択範囲を表示させる
AI背景削除プラグインで生成された「マスク」から選択範囲を表示させます。
- 2背景を削除したレイヤーを削除する
新しく選択範囲を作成するため、AI背景削除プラグインで作成したレイヤーは不要になります。
- 3クイックマスクモードを有効にする
「選択」→「クイックマスクモード」か、Shift + Qで有効にできます。
赤い部分が「非選択範囲」となります。図でいうと、対象物が選択範囲、背景が非選択範囲ということになります。
- 4マスクを修正する
ブラシで選択範囲を調整できます。
選択範囲の追加:白で塗る
選択範囲の削除:黒で塗る背景削除プラグインで漏れがあるところを、一つずつ修正していきます。
- 5クイックマスクモードを解除する
選択範囲を修正後、「選択」→「クイックマスクモード」か、Shift + Qで解除します。
- 6選択範囲を保存する
操作ミスで選択範囲が解除されると、やり直す羽目になるので、保存しておきます。
「選択」→「チャンネルに保存」をクリックします。
保存した選択範囲を呼び出すときは、図のような手順で対応してください。
- 7選択範囲を反転し、背景を選択する
選択範囲が対象物になっているので、選択範囲を反転します。
「選択」→「選択範囲の反転」か、Ctrl + I で対応できます。
- 8背景を削除する
Deleteを押すことで、背景を削除できます。
背景削除範囲の調整方法は、以上となります。
まとめ
ここまで読んで頂き、ありがとうございます。
いかがでしたでしょうか。
ぜひプラグインを使って、作業効率を爆アゲ☆してください!!
GIMPプラグイン「ガイド一括生成プラグイン」も公開しています。興味のある方はぜひ、ご活用ください。
不明な点がございましたら、気軽にお問合せフォームよりご連絡をお願いします。できる限りサポートさせて頂きます。
それではまた会いましょう!

コメント