Rembgで背景除去をパイプラインに組み込む話

鈴木 蓮
鈴木 蓮 20代・ ソフトウェアエンジニア
画像生成AIで素材を作っても、そのまま使えないことが多い。Stable DiffusionもFLUXも、透過背景のPNGを直接吐き出せないからだ。個人開発でキャラ素材を使いたいとき、毎回Photoshopや有料SaaSを挟むのは正直しんどい。

最近そのモヤモヤを解消してくれそうなツールを見つけた。オープンソースの背景除去ツール「Rembg」だ。GitHubのdaniελgatis/rembgで公開されていて、他プロジェクトからの依存が7400件以上ある。地味にすごい数字だと思う。

16種類以上のモデルを被写体に合わせて切り替えられる



Rembgの面白いところは、モデルを用途別に選べる点だ。アニメ・イラスト系には「isnet-anime」、ポートレートなら「birefnet-portrait」、汎用的に使いたいなら「birefnet-general」という感じで使い分けられる。自分がよく作るアニメ風素材には、まずisnet-animeを試すのが正解みたいだ。

Dockerで動かす場合のコマンドはこんな感じになる。

MSYS_NO_PATHCONV=1 docker run --rm \
  -v "$(pwd):/data" \
  -v "$HOME/.u2net:/root/.u2net" \
  danielgatis/rembg i -m isnet-anime /data/input.png /data/output.png

`-m`でモデルを指定するだけなので、スクリプトに組み込むのも難しくない。

パイプラインに組み込むとどう変わるか



Rembgにはサーバーモードがある。`rembg s`で起動するとAPIとして外部から叩ける。つまり画像生成の後処理として、自動で背景除去まで流すパイプラインが作れる。個人開発でComfyUIなどを使っているなら、生成→除去→保存をまとめて自動化できる。手作業でツールを行き来する手間が消える。

さらにウォッチモードもある。`rembg p -w ./input_folder ./output_folder`とすれば、フォルダに画像を放り込むだけで自動処理される。ローカルの作業フローがシンプルになるのはかなり助かる。

自分としては、birefnet-generalのモデルサイズが1GB弱というのは少し気になっている。毎回Dockerイメージを起動する運用だとモデルのダウンロード待ちが発生する。`.u2net`ディレクトリをボリュームマウントしてキャッシュする設計になっているので、初回さえ終われば問題ないとは思うが、CI/CD的な使い方をするときは考慮が必要だ。

来週、自分のローカル開発環境にRembgのサーバーモードを立ち上げて、画像生成後の後処理に組み込んでみるつもりだ。モデルはまずbirefnet-generalから試して、速度と品質のバランスを見たい。

無料相談受付中

AI開発・DX推進についてお気軽にご相談ください。オンライン30分から。

無料相談を申し込む