BiRefNet for background removal をローカルマシンで実行する手順を紹介します。
高性能な背景削除方式である、Bilateral Reference for High-Resolution Dichotomous Image Segmentation を実装した、BiRefNetがリリースされました。
(https://github.com/ZhengPeng7/BiRefNet)
BiRefNetをローカルで実行して画像の背景削除処理を実行します。
ローカルでの実行方法は複数ありますが、簡単にセットアップできるStable Diffusion WebUI Forge を利用する方法、
ComfyUIを利用する方法をこの記事では紹介します。
ComfyUIをインストールします。インストール手順はこちらの記事を参照してください。
ComfyUI-RMBGをインストールします。ComfyUIを起動し上部の[Manager]ボタンをクリックします。
ComfyUI Manager ダイアログが表示されます。[Custom Nodes Manager]ボタンをクリックします。
カスタムノードの一覧リストが表示されます。
ダイアログ上部の[Search]テキストボックスに"BiRefNet"を入力します。フィルタされたカスタムノードの一覧が表示されます。
[ComfuUI-RMBG]の項目の[Install]ボタンをクリックします。
バージョンの選択ダイアログが表示されます。今回は[latest]の項目を選択します。[Select]ボタンをクリックします。
インストールが始まります。
インストールが完了すると下図の画面になります。ダイアログ左下の[Restart]ボタンをクリックしてComfyUIを再起動します。
再起動すると各種ファイルのダウンロードがあります。長時間反応しなくなってしまった場合は一度ComfuUIを閉じて、再起動します。
再起動できました。
次のコマンドを実行します。UTF-8モードにしないとエラーが発生する場合があります。
chcp 65001
set PYTHONUTF8=1
(ComfyUIの配置ディレクトリのパス)\python_embeded\python.exe -m pip install -r (ComfyUIの配置ディレクトリのパス)\ComfyUI\custom_nodes\comfyui-rmbg\requirements.txt
新規のワークフロー画面を作成します。
下図のワークフローを作成します。
[BiRefNet 背景削除(RMBG)]のノードは、[ノードを追加] > [AILab] > [RMBG] > [BiRefNet 背景削除(RMBG)] にあります。
[画像を読み込む (RMBG)]のノードは、[ノードを追加] > [AILab] > [IMAGE] > [画像を読み込む (RMBG)] にあります。
[画像プレビュー (RMBG)]のノードは、[ノードを追加] > [AILab] > [IMAGE] > [画像プレビュー (RMBG)] にあります。
[画像を保存]のノードは、[ノードを追加] > [画像] > [画像を保存] にあります。
設定ができたら、[画像を読み込む (RMBG)]のノードに入力画像を設定し[実行する]ボタンをクリックします。
実行後の結果は下図です。右側に背景が除去された画像が表示できています。
Stable Diffusion WebUI Forge をインストールします。インストール手順はこちらの記事を参照してください。
Stable Diffusion WebUI Forge を起動します。画面上部のタブの[Spaces]のタブをクリックして選択します。
下図の画面に切り替わります。
[Image Processing: Matting, Saliency, and Background Removal]の枠の[BiRefNet for Background Removal]の項目の[Install]ボタンをクリックします。
(下図では上から2番目の項目です。)
クリックすると、BiRefNet のインストールが始まります。
インストールが完了すると、下図の画面になり、[Lauch]ボタンが有効になります。
[BiRefNet for Background Removal]の項目の[Launch]ボタンをクリックします。
Webブラウザの新しいタブが開かれ、下図のページが表示されます。BiRefNetのWeb UIが起動できました。
背景を削除します。左側の[ここに画像をドロップ -または- クリックしてアップロード] の枠に画像をドロップするか、
枠をクリックし、表示されるファイル選択ダイアログで画像を選択します。画像が選択できた状態が下図です。
[Submit]ボタンをクリックします。画像が処理され、背景が削除された画像が右側に表示されます。
右側のエリアで背景のある部分との境界をドラッグして背景がある画像との比較ができます。
一部の領域は背景が白いままとなっており、削除できなかった部分もあることがわかります。
背景を削除した画像を保存する場合は、右側のエリアで右クリックし、ポプアップメニューの[名前を付けて画像を保存]の項目をクリックします。
ファイル保存ダイアログが表示されますので、保存します。
(右側エリア右上のダウンロードボタンをクリックして保存した場合、背景が透過されない画像がダウンロードされます。)
保存したPNGファイルを画像編集アプリケーションで表示します。背景が透過状態であることが確認できます。
背景色を黒色にした状態です。きれいに背景が削除できていますが、若干もやのように、白背景が残ってしまっている部分もあります。
ほかの背景除去と比較します。
RemBG isnet-anime は境界部分がシャープに除去できていますが、細かい部分は消し過ぎて削れている印象があります。
Photsohopの選択ツールもアンチエイリアスがかかりますが、やや粗い部分が出てしまいます。
BiRefNetは境界のシャープさは若干落ちますが、消し過ぎて削れてしまっている部分が少ない印象です。
今回、白背景で背景を削除して黒背景に合成したことで、色の差が大きくなり境界部分の荒さが目立つ結果となりました。
実際の利用シーンで、より品質を高めるためには、最終イメージで使用する背景色に近い色で元の画像を生成すると良さそうです。
ComfyUIの場合、BiRefNetのノードでBiRefNetのモデルを選択できます。種類がいくつかあるので違いを紹介します。
モデル | 説明 |
---|---|
BiRefNet-general | 一般的な画像セグメンテーション向けの標準モデル。標準解像度(1024x1024)での利用を想定 |
BiRefNet_512x512 | 512x512の解像度でトレーニングされたモデル |
BiRefNet-HR | 高解像度(2048x2048)画像向けに最適化されたモデル |
BiRefNet-portrait | 人物ポートレート画像に特化したモデル。顔や髪の輪郭を精密に抽出できる |
BiRefNet-matting | マッティングモデル。マスクに透明度を含みます。 |
BiRefNet-HR-matting | マッティングモデルの高解像度版。マスクに透明度を含みます。 |
BiRefNet_lite | 軽量モデル |
BiRefNet-lite-2K | 高解像度(2560x1440)向け軽量モデル |
マッティングモデルを利用するとマスクに透明度が入るため、境界が滑らかになります。一方で、境界のシャープ感は落ちます。
別の背景と合成した結果です。毛先などマッティングモデルのほうが自然に合成できていることが確認できます。