
画像生成AIのhow to記事です。
今回は背景切り抜きができる拡張機能やツールをまとめて紹介します。
Rembg
おそらく一番メジャーなツールです。
u2netモデルを使用した背景処理が可能で、さまざまなプラットフォームで使えます。
WebUI(A1111・reforge)
新Forgeはなんかエラーが出て使えませんでした。
・インストール
Extensions→Install from URL→URL for~にgithubのURLを入力してinstallをクリックします。
https://github.com/AUTOMATIC1111/stable-diffusion-webui-rembg.git
再起動してExtrasにRemove backgroundがあればインストール完了です。

・使い方
Extrasタブで何らかの画像をセットします。

Remove backgroundにチェックを入れてタブを開きます。

Remove backgroundからモデルを選択してGenerateを実行すると背景が切り抜けます。
またモデルによって処理速度や精度、服だけ抜いたりなど用途が異なります。

・u2netで処理した画像

Return maskにチェックを入れるとマスクだけ返してくれます。

Alpha mattingにチェックを入れると切り抜き度合いを調整できます。
・Erode size:切り抜きの境界部分を「削る」量 被写体の周りに背景が残っている場合、値を調整すると上手く抜けるかもしれません。
・Foreground threshold:アルファ値(透明度)が高い部分をどの程度「前景」として扱うかを指定 値を高くすると、被写体の境界付近や半透明部分が「背景」として認識されやすくなる。
・アルファ値(透明度)が低い部分をどの程度「背景」として扱うかを指定 値を低くすると、背景として認識される部分が減り、前景と混ざった部分が背景から外れる可能性がある。
ComfyUI
ComfyUIはシンプルなrembg-comfyui-nodeやrembg-comfyui-node-betterというカスタムノードがあったのですが、現在のバージョンに対応していない?のかnodeが使えません。
現状rembgで処理できるものだとComfyUI-GeekyRemBがあります。
ComfyUI-Managerをインストールしている方は、Manager→Custom Nodes Manager→検索にComfyUI-GeekyRemBと入力してinstallしてください。

手動の場合はターミナルを開き、カスタムノードのパスに移動してからクローンします。
cd C:\ComfyUI_windows_portable_nvidia\ComfyUI_windows_portable\ComfyUI\custom_nodes
git clone https://github.com/GeekyGhost/ComfyUI-GeekyRemB.gitインストール後はリスタートしてください。
あとはLoad image、Geeky RemB、Preview Imageのノードを追加します。
右クリック、または空白部分をダブルクリックしてキーワード入力すると該当のノードを追加できます。

あとはこんな感じで繋げれば背景処理が可能です。

基本的にはA1111の拡張機能と同じく、モデルを切り替えればさまざまな用途で使用できます。
パラメータの使い方など詳細は公式で確認してください。

Python
ターミナルを開いてrembgをインストールします。
pip install rembg[cli]あとは「rembg i 元画像のパス 出力先のパス」で実行可能です。
rembg i "C:\sample.jpg" "C:\sample1.jpg"これで実行するとCドライブにあるsample.jpgに背景処理が行われ、sample1.jpgとして保存されます。
pythonファイルやnotebookでも使用可能です。
from rembg import remove
from PIL import Image
input_path = 'input.jpg' #ここに元画像のファイル
output_path = 'output.png' #ここに出力先のファイル
with open(input_path, 'rb') as i:
with open(output_path, 'wb') as o:
o.write(remove(i.read()))ABG Remover(拡張機能)
ABG Removerもu2netモデルで背景処理ができます。
anime-remove-backgroundをWebUIで使えるようにしたもので、名前の通りアニメキャラの切り抜きに適している?ようです。
ただ個人的にあまり精度の違いはわかりませんでした。
あとABG Removerは新forgeでも使えます。
・インストール
Extensions→Install from URL→URL for~にgithubのURLを入力してinstallをクリックします。
https://github.com/KutsuyaYuki/ABG_extension.git
再起動してimg2imgタブを開き、scriptにABG Removerがあればインストールは完了です。

・使い方
img2imgに画像を取り込みます。

Resize toで画像サイズを同じにします。

Denoising strengthを0.1にします。

あとはScriptでABG Removerを選んで、実行するだけです。
デフォルトのままだと3つ(元画像・マスク・背景処理)が出力されます。

背景処理されたものだけで良ければ「Only save background free pictures」にチェックを入れてください。
Custom Backgroundにチェックを入れると、Background Colorで指定した色を背景にできます。
Random Custom Backgroundはランダムで背景が設定されます。
BiRefNet
BiRefNetはu2netより高精度処理が可能なモデルです。
u2netの方が動作は軽いですが、BiRefNetの方が切り抜き精度は良いと言われています。
WebUI(A1111・forge・reforge)
・インストール
Extensions→Install from URL→URL for~にgithubのURLを入力してinstallをクリックします。
https://github.com/dimitribarbot/sd-webui-birefnet.git
再起動してExtrasタブを開き、「Remove background with BiRefNet」のタブが追加されていればインストール完了です。

・使い方
Extrasタブで画像を取り込みます。

Remove background with BiRefNetにチェックを入れてタブを開きます。

処理に使用するモデルを選択します。
基本のモデルはGeneralです。

これで実行すると背景を切り抜けます。

rembgの処理と並べて見ると精度の違いが分かりやすいです。
左:rembg 右:BiRefNet

オプションでリサイズしたり、出力画像を選択できるので、用途に合わせて使い分けてみてください。
ComfyUI
ComfyUI-Managerをインストールしている方は、Manager→Custom Nodes Manager→検索にBiRefNetと入力してください。
基本のBiRefNetや派生したものが出てきますが、私の環境だとComfyUI_BiRefNet_llしか動きませんでした。
なのでこの記事ではComfyUI_BiRefNet_llを使った処理を紹介します。
ComfyUI_BiRefNet_llをインストールしてください。

手動の場合はターミナルを開き、カスタムノードのパスに移動してからクローンします。
cd C:\ComfyUI_windows_portable_nvidia\ComfyUI_windows_portable\ComfyUI\custom_nodes
git clone https://github.com/lldacing/ComfyUI_BiRefNet_ll.gitインストール後はリスタートしてください。
以下のパスにworkflowがあるのでComfyUIに取り込みます。
C:\ComfyUI_windows_portable_nvidia\ComfyUI_windows_portable\ComfyUI\custom_nodes\ComfyUI_BiRefNet_ll\examplegithubからダウンロードも可能。
https://github.com/lldacing/ComfyUI_BiRefNet_ll/blob/main/example/workflow_base.png
なお、取り込むと画像処理と動画処理に分かれており、下の動画処理はノードが一部使えずに動きませんでした。
画像の切り抜きだけで良ければ下のGroupは削除してください。
Ctrl+範囲選択でノードを選択後、Deleteで削除可能です。
あとはLoad imageに画像を取り込んで実行するだけです。
モデルは初回使用時に自動的にダウンロードされます。

Transparent-Background
こちらはRembgやBiRefNetとも異なる「InSPyReNet」というモデルを使用して背景除去ができます。
スタンドアローン
まずリポジトリをローカルにクローンします。
git clone https://github.com/plemeri/transparent-backgroundtransparent-backbroundに移動します。
cd transparent-backbround仮想環境を作成してアクティベートします(任意)
python -m venv venv
venv/scripts/activate依存関係をインストールします。
pip install --extra-index-url https://download.pytorch.org/whl/cu118 .インストールが終わったら以下のコマンドでGUIが起動できます。
transparent-background-guiGUIのopen filesから切り抜きたい画像を取り込みます。

Open destinationで出力先を指定できます。

あとはProcessをクリックすれば実行可能です。

Typeで出力する形式を変えられます。
rgba:背景除去 map:マスクのみ green:グリーンバック white:白背景 blue:背景をぼかす overlay:マスクを重ねて出力 custum:任意の色を指定(RBG)
なお、動画も取り込んで処理が可能です。
ただrgbaは使えないのでgreenなどで出力し、編集ソフトのクロマキーで抜くとかが一般的かもしれません。
・お借りした動画 https://www.pexels.com/ja-jp/video/3959704/
・greenで処理した動画
ComfyUI
ComfyUI-Managerをインストールしている方は、Manager→Custom Nodes Manager→検索にComfyUI-Inspyrenet-Rembgと入力してinstallしてください。

手動の場合はターミナルを開き、カスタムノードのパスに移動してからクローンします。
cd C:\ComfyUI_windows_portable_nvidia\ComfyUI_windows_portable\ComfyUI\custom_nodes
git clone https://github.com/john-mnz/ComfyUI-Inspyrenet-Rembg.gitインストール後はリスタートしてください。
workflowはgithubのbasic workflowにある「inspyrenet-rembg-basic-workflow.json」からダウンロードできます。
ComfyUIに取り込んでください。

あとはLoad imageに画像をセットして実行すれば背景除去とマスクで出力できます。

オンラインツール
photoroom
無料で使える背景除去ツールです。
上記のような方法が面倒な場合は、画像を取り込むだけで簡単に処理できます。
ただ処理後は元の画像サイズでダウンロードはできず、リサイズされます。

remove.bg
こちらも同じオンラインで使える背景除去ツールです。
ほぼphotoroomと同じですが、こっちはphotoroomより解像度が小さくなります。

まとめ
他にもいっぱいあるのですがうまく使えなかったり、試せてないものがあるので、触れたら徐々に追加してこうと思います。
以上画像の背景除去ができる拡張機能やツールをまとめて紹介しました。
参考になれば幸いです。

