活用シーンとソリューション

AI で商品画像の背景を一括削除(rembg):透過 PNG と白背景のメイン画像を作成

5 ステップ 10 分で読めます 88 回閲覧 0
目次

Amazon などのマーケットプレイスではメインの商品画像を純白の背景にする必要があり、Shopee、Lazada、TikTok Shop でも正方形の画像で統一すると、商品ページがより洗練されて見えます。しかし、数百枚の写真を手作業で切り抜くと何日もかかります。rembg は、AI による背景削除モデルを一般的な CPU サーバーで実行できるオープンソースツールです。この記事では rembg をインストールし、モデルを比較したうえで、短いスクリプトを使ってフォルダー内の商品写真を透過 PNG ファイルと正方形の白背景 JPG メイン画像に一括変換します。

使用する写真は、自社で所有しているか、使用する権利を持つものに限ってください。アップロード前には結果を確認しましょう。細いケーブル、透明なガラス、毛皮や髪の毛は、どの背景削除モデルにとっても最も難しいケースです。

ステップ1:rembg をインストールする

apt install -y python3-venv
python3 -m venv /opt/rembg
/opt/rembg/bin/pip install "rembg[cpu,cli]"
/opt/rembg/bin/rembg --help

各モデルは初回使用時に自動でダウンロードされ、~/.u2net に保存されます。そのため、初回の実行時にはサーバーがインターネットに接続できる必要があります。

ステップ2:1 枚の写真で試してモデルを選ぶ

/opt/rembg/bin/rembg i photo.jpg cut-u2net.png                          # default model
/opt/rembg/bin/rembg i -m isnet-general-use photo.jpg cut-isnet.png     # often cleaner edges
/opt/rembg/bin/rembg i -m birefnet-general photo.jpg cut-birefnet.png   # most accurate, slower, more RAM
/opt/rembg/bin/rembg i -a photo.jpg cut-matting.png                     # alpha matting for hair and soft edges
  • u2net:汎用のデフォルトモデルです。
  • isnet-general-use:同程度の速度で、通常は商品の輪郭がよりシャープになります。EC 用途のデフォルトとしておすすめです。
  • birefnet-general:難しい写真で最も高い精度を発揮しますが、処理は数倍遅く、より多くのメモリを必要とします。
  • u2netp:簡易プレビュー用の小型で高速なモデルです。

カタログから典型的な写真を 5 枚選んで候補のモデルで処理し、等倍で輪郭を比較してから決めてください。

ステップ3:一括処理スクリプトを作成する

cat > /opt/rembg/whitebg.py <<'EOF2'
import os, sys
from PIL import Image, ImageOps
from rembg import new_session, remove

src, dst = sys.argv[1], sys.argv[2]
size = int(os.environ.get("SIZE", "1600"))      # square canvas in pixels
fill = float(os.environ.get("FILL", "0.85"))    # share of the canvas the product fills
session = new_session(os.environ.get("MODEL", "isnet-general-use"))
for sub in ("png", "white"):
    os.makedirs(os.path.join(dst, sub), exist_ok=True)

for name in sorted(os.listdir(src)):
    if not name.lower().endswith((".jpg", ".jpeg", ".png", ".webp")):
        continue
    base = os.path.splitext(name)[0]
    img = ImageOps.exif_transpose(Image.open(os.path.join(src, name))).convert("RGB")
    cut = remove(img, session=session)
    box = cut.getchannel("A").getbbox()
    if not box:
        print(name, "no object found, skipped", flush=True)
        continue
    cut = cut.crop(box)                                   # trim the empty space around the product
    cut.save(os.path.join(dst, "png", base + ".png"))     # transparent version
    scale = size * fill / max(cut.size)
    cut = cut.resize((max(1, round(cut.width * scale)), max(1, round(cut.height * scale))),
                     Image.Resampling.LANCZOS)
    canvas = Image.new("RGB", (size, size), (255, 255, 255))
    canvas.paste(cut, ((size - cut.width) // 2, (size - cut.height) // 2), cut)
    canvas.save(os.path.join(dst, "white", base + ".jpg"), quality=92)
    print(name, "done", flush=True)
EOF2

このスクリプトは、スマートフォンで撮影した写真の向きを補正し、背景を削除して周囲の余白をトリミングしたうえで、透過 PNG を保存します。その後、純白(255, 255, 255)の正方形キャンバスの中央に、フレームの約 85% を占めるように商品を配置します。

ステップ4:フォルダーをまとめて処理する

mkdir -p /data/photos/in /data/photos/out     # upload the original photos to /data/photos/in
cd /data/photos
nohup /opt/rembg/bin/python /opt/rembg/whitebg.py in out > whitebg.log 2>&1 &
tail -f whitebg.log

# Other sizes or models, for example:
SIZE=2000 FILL=0.8 MODEL=birefnet-general /opt/rembg/bin/python /opt/rembg/whitebg.py in out

結果は 2 つのフォルダーに出力されます。out/png にはバナー、広告、デザイン作業に使える透過切り抜き画像が、out/white にはそのままアップロードできる正方形のメイン画像が保存されます。処理速度はモデルと CPU によって異なるため、まず 20 枚で処理時間を計測し、カタログ全体にかかる時間を見積もってください。

ステップ5:難しい画像を確認して修正する

  • PNG ファイルは暗い背景で確認します。輪郭に残ったハロー(縁取り)や欠けた部分は、白背景よりもはるかに見つけやすくなります。
  • 髪の毛、毛皮、柔らかい輪郭は、アルファマッティングで再処理します。remove() の呼び出しに alpha_matting=True を追加するか、単一のファイルであれば rembg i -a を使います。処理が遅くなるため、必要な画像だけに使ってください。
  • モデルは影も削除します。商品の下に自然な影を付けたい場合は、透過 PNG をもとにデザインツールで追加してください。
  • 白い商品を白いキャンバスに配置する場合、サブ画像には薄いグレーの背景も検討してください。メイン画像については、各マーケットプレイスのルールを確認してください。

よくある質問

GPU は必要ですか?

いいえ。1 日に数十枚から数百枚程度であれば、CPU サーバーで十分です。GPU が大きな差を生むのは、毎日数千枚以上の画像を処理する場合や、最大級のモデルを常に使う場合に限られます。

SSH を使わずに同僚が利用できますか?

rembg には、シンプルなページと HTTP API を備えた小さな Web サーバー(rembg s)が含まれています。127.0.0.1 で起動し、Nginx 経由で HTTPS とパスワードを設定して公開してください。公開ポートで直接起動してはいけません。

商品ページの作成で、AI に任せられる作業はほかにもありますか?

複数言語のタイトル、箇条書き、商品説明の作成については「AI で商品説明文を多言語で一括生成する」、商品動画の字幕については「faster-whisper で字幕を自動生成する」を参照してください。

上記の手順で解決しない場合は、サポートチケットを送信して IMIDC の 24 時間 365 日対応テクニカルサポートへご連絡ください。サーバー IP、CPU とメモリの構成、使用したモデル、whitebg.log の末尾数行を添えていただくと、より迅速に調査できます。

この回答はお役に立ちましたか?

関連チュートリアル