rembg は画像の背景を除去するツールです。コマンドラインツール、Python ライブラリ、HTTP サーバー、Docker コンテナとして使えます。役割はとても明確で、画像を入力すると、透明チャンネル付きの前景画像を出力します。商品画像、プロフィール画像、素材の一括処理、自動画像処理フローに向いています。
この種のツールの大きな利点は、ローカルで動かせることです。元画像をオンラインの背景除去サービスへアップロードしたくない場合、大量の画像を処理したい場合、背景除去をスクリプトや業務システムに組み込みたい場合、rembg はWebツールより自動化しやすい選択肢です。
01 インストール方法
現在のバージョンは Python >=3.11,<3.14 を要求します。インストール時はハードウェアに合わせてバックエンドを選びます。
|
|
CLI も必要な場合は cli を追加します。
|
|
NVIDIA CUDA 環境では GPU 版をインストールできます。
|
|
AMD ROCm 環境では、先に ROCm 公式手順に従って onnxruntime-rocm を入れ、その後でインストールします。
|
|
GPU 版のつまずきどころは、多くの場合 rembg 本体ではなく、onnxruntime-gpu、CUDA、cuDNN、ドライバーのバージョンが合っているかです。うまく入らないときは、まず CPU 版で処理フローが動くことを確認してから GPU 環境を調整すると、無駄な遠回りを減らせます。
02 CLI サブコマンド
CLI をインストールすると、ターミナルで rembg を直接使えます。主なサブコマンドは 4 つです。
i:単一ファイルを処理する。p:フォルダー全体を処理する。s:HTTP サーバーを起動する。b:RGB24 ピクセルのバイナリストリームを処理する。FFmpeg と組み合わせる場面でよく使います。
ヘルプを確認します。
|
|
ローカル画像を1枚処理します。
|
|
リモート画像をパイプで入力します。
|
|
モデルを指定します。
|
|
mask だけを出力します。
|
|
alpha matting を有効にします。
|
|
-a は髪の毛、細い輪郭、半透明の境界を自然にできる場合があります。ただし処理は遅くなり、すべての画像で明確に改善するわけではありません。
03 フォルダーの一括処理
一括処理は rembg の実用的な機能です。元画像を1つのディレクトリに入れ、結果を別のディレクトリへ出力できます。
|
|
ディレクトリの変更を監視し、新規または更新された画像を自動処理します。
|
|
このモードは、ダウンロードスクリプト、商品画像整理、素材フォルダーと組み合わせやすいです。たとえば処理待ち画像を input に入れると、rembg が透明 PNG を output に自動生成します。
04 Python ライブラリとして使う
自分のスクリプトに組み込むなら、もっとも簡単なのは remove を使う方法です。
|
|
PIL 画像を直接処理することもできます。
|
|
一括処理では session を再利用し、画像ごとにモデルを初期化し直さないようにするのがおすすめです。
|
|
長時間動く画像処理サービスを作るなら、CLI を毎回呼ぶより session を再利用するほうが向いています。
05 HTTP サーバーを起動する
rembg は HTTP サーバーとして直接起動することもできます。
|
|
起動後は次の URL にアクセスできます。
|
|
URL から背景を除去します。
|
|
ローカル画像をアップロードします。
|
|
API だけが必要で Gradio UI が不要なら、UI を無効にしてアイドル時の CPU 使用率を下げられます。
|
|
サーバーモードは、社内ツール、自動化フロー、ほかのアプリケーションから呼び出す用途に向いています。ただし完全な画像アセット管理システムではありません。認証、レート制限、キュー、ファイル削除などは外側で補う必要があります。
06 Docker 実行
CPU 版は公式イメージをそのまま使えます。
|
|
CUDA 加速にはホスト側の NVIDIA Container Toolkit が必要で、多くの場合、プロジェクト内の Dockerfile_nvidia_cuda_cudnn_gpu から自分でイメージをビルドします。
|
|
実行例です。
|
|
公式 README では、GPU イメージは CPU イメージよりかなり大きく、モデルファイルはイメージに含まれないと説明されています。モデルの再ダウンロードを避けるには、モデルディレクトリをマウントします。
|
|
07 モデル選択
rembg は初回使用時にモデルを ~/.u2net/ へ自動ダウンロードします。よく使われるモデルは次の通りです。
u2net:一般用途向けの汎用モデル。u2netp:軽量版で、速度とサイズの面で扱いやすい。u2net_human_seg:人物分割寄り。u2net_cloth_seg:衣服解析寄り。silueta:u2netに近いが、より小さい。isnet-general-use:汎用用途向けの新しいモデル。isnet-anime:アニメキャラクター分割寄り。birefnet-general:README の例で汎用画像に使われているモデル。sam:プロンプト点などの追加パラメータと組み合わせて使える。
実際の利用では、モデル名だけで決めないほうがよいです。商品画像、人物、二次元画像、複雑な背景、透明物体では求める挙動が違います。代表的な画像を何枚か選び、複数モデルで試し、輪郭、抜け、誤除去、速度を見てからデフォルトモデルを決めるのが安定します。
カスタム .onnx モデルを使う場合は、ファイルをデフォルトのモデルディレクトリ ~/.u2net/ に置き、必要に応じて次を設定します。
|
|
これにより、チェックサム処理で rembg が置いたモデルファイルを上書きするのを避けられます。
08 向いている場面
rembg は次のようなタスクに向いています。
- 透明背景の商品画像を一括生成する。
- プロフィール画像、証明写真、素材画像から前景を抽出する。
- 背景除去を Python スクリプトやバックエンドサービスに組み込む。
- 社内ネットワークに簡単な背景除去 API を置く。
- FFmpeg パイプで動画フレームや連番画像を処理する。
- プライバシーや素材の権利に敏感で、第三者のオンラインサービスへアップロードしたくない。
あまり向いていないのは次のような場合です。
- 人手レベルのエッジ修正や複雑な透明素材が必要。
- すべての画像に安定した商業写真レベルの品質が必要。
- 背景除去だけでなく、完全なオンラインデザインツールが欲しい。
- Python / Docker 環境を保守したくない。
- GPU ドライバー、CUDA、ROCm 環境がすでに混乱していて、すぐ本番投入したい。
09 使い方のおすすめ
たまに画像を処理するだけなら、CPU 版で十分です。
|
|
数千枚を一括処理するなら、次を優先して考えるとよいです。
- Python session を再利用する。
- モデルディレクトリを固定し、再ダウンロードを避ける。
- 入力、出力、モデルファイルは SSD に置く。
- まず小さなバッチでモデル効果を試す。
- その後で GPU 加速を導入するか決める。
GPU の価値は主に一括処理のスループットです。たまに1枚処理する程度なら、環境構築コストのほうが節約できる時間より高くつくことがあります。特に Windows で CUDA、cuDNN、onnxruntime-gpu のバージョンが合わない場合は、CPU 版のほうが現実的です。
10 短い判断
rembg のよいところは、シンプルで、オープンソースで、使い方の形が柔軟なことです。CLI で動き、Python から呼べて、HTTP でも使え、Docker でまとめることもできます。ローカル自動背景除去の基礎コンポーネントとして扱いやすいツールです。
ただし魔法の消しゴムではありません。複雑な背景、細かい被写体の輪郭、透明素材、影の保持、商業レベルのレタッチでは、人手や専用ワークフローが必要になることがあります。一括自動化に入れるなら、人による確認や失敗サンプルの回収手順を残しておくほうが安全です。
目的が「画像群の背景をすばやく除去し、処理をローカルに保つこと」なら、rembg はツール箱に入れておく価値があります。
関連リンク
- GitHubプロジェクト:https://github.com/danielgatis/rembg
- README:https://github.com/danielgatis/rembg/blob/main/README.md
- Releases:https://github.com/danielgatis/rembg/releases
- ONNX Runtime インストールマトリックス:https://onnxruntime.ai/