Rembg は画像の背景を削除するツールです。
このプロジェクトがお役に立てましたら、寄付をご検討ください。
PhotoRoom 背景削除 API https://photoroom.com/api 高速かつ正確な背景除去 API |
python: >3.7, <3.13
onnxruntime
がすでにインストールされている場合は、 rembg
インストールするだけです。
pip install rembg # for library
pip install " rembg[cli] " # for library + cli
それ以外の場合は、明示的な CPU/GPU サポートを使用してrembg
インストールします。
CPU サポート:
pip install rembg[cpu] # for library
pip install " rembg[cpu,cli] " # for library + cli
GPUのサポート:
まず、システムがonnxruntime-gpu
サポートしているかどうかを確認する必要があります。
https://onnxruntime.ai に移動し、インストール マトリックスを確認します。
「はい」の場合は、次を実行してください。
pip install " rembg[gpu] " # for library
pip install " rembg[gpu,cli] " # for library + cli
インストール手順が完了したら、ターミナル ウィンドウにrembg
と入力するだけで rembg を使用できるようになります。
rembg
コマンドには、入力タイプごとに 1 つずつ、計 4 つのサブコマンドがあります。
i
ファイル用p
s
b
RGB24 ピクセルのバイナリ ストリームの場合次のコマンドを使用して、メイン コマンドに関するヘルプを表示できます。
rembg --help
また、以下を使用するすべてのサブコマンドについても説明します。
rembg < COMMAND > --help
i
覚えています入力と出力がファイルの場合に使用されます。
リモート画像から背景を削除する
curl -s http://input.png | rembg i > output.png
ローカルファイルから背景を削除する
rembg i path/to/input.png path/to/output.png
モデルを指定して背景を削除する
rembg i -m u2netp path/to/input.png path/to/output.png
背景を削除してマスクのみを返す
rembg i -om path/to/input.png path/to/output.png
アルファマットを適用して背景を削除します
rembg i -a path/to/input.png path/to/output.png
追加パラメーターを渡す
SAM example
rembg i -m sam -x ' { "sam_prompt": [{"type": "point", "data": [724, 740], "label": 1}] } ' examples/plants-1.jpg examples/plants-1.out.png
Custom model example
rembg i -m u2net_custom -x ' {"model_path": "~/.u2net/u2net.onnx"} ' path/to/input.png path/to/output.png
p
入力と出力がフォルダーである場合に使用されます。
フォルダー内のすべての画像から背景を削除します
rembg p path/to/input path/to/output
前と同じですが、処理する新しい/変更されたファイルを監視しています
rembg p -w path/to/input path/to/output
s
httpサーバーを起動するために使用されます。
rembg s --host 0.0.0.0 --port 7000 --log_level info
エンドポイントの完全なドキュメントを参照するには、 http://localhost:7000/api
にアクセスしてください。
画像 URL から背景を削除する
curl -s " http://localhost:7000/api/remove?url=http://input.png " -o output.png
アップロードした画像から背景を削除する
curl -s -F file=@/path/to/input.jpg " http://localhost:7000/api/remove " -o output.png
b
標準入力からの RGB24 画像のシーケンスを処理します。これは、RGB24 ピクセル データを stdout に出力し、このプログラムの stdin にパイプ接続される FFMPEG などの別のプログラムで使用することを目的としていますが、stdin で画像を手動で入力することを妨げるものはありません。
rembg b image_width image_height -o output_specifier
引数:
output-%03u.png
の場合、出力ファイルの名前はoutput-000.png
、 output-001.png
、 output-002.png
などになります。出力ファイルは次のようになります。指定した拡張子に関係なく、PNG 形式で保存されます。結果を標準出力に書き込む場合は省略できます。FFMPEG での使用例:
ffmpeg -i input.mp4 -ss 10 -an -f rawvideo -pix_fmt rgb24 pipe:1 | rembg b 1280 720 -o folder/output-%03u.png
幅と高さの値は、FFMPEG からの出力イメージの寸法と一致する必要があります。 FFMPEG の場合、全体が機能するには「 -an -f rawvideo -pix_fmt rgb24 pipe:1
」部分が必要であることに注意してください。
バイトとしての入力と出力
from rembg import remove
input_path = 'input.png'
output_path = 'output.png'
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input )
o . write ( output )
PILイメージとして入出力
from rembg import remove
from PIL import Image
input_path = 'input.png'
output_path = 'output.png'
input = Image . open ( input_path )
output = remove ( input )
output . save ( output_path )
numpy 配列としての入出力
from rembg import remove
import cv2
input_path = 'input.png'
output_path = 'output.png'
input = cv2 . imread ( input_path )
output = remove ( input )
cv2 . imwrite ( output_path , output )
バイトとして出力を強制する
from rembg import remove
input_path = 'input.png'
output_path = 'output.png'
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input , force_return_bytes = True )
o . write ( output )
パフォーマンス的な方法でファイルを反復処理する方法
from pathlib import Path
from rembg import remove , new_session
session = new_session ()
for file in Path ( 'path/to/folder' ). glob ( '*.png' ):
input_path = str ( file )
output_path = str ( file . parent / ( file . stem + ".out.png" ))
with open ( input_path , 'rb' ) as i :
with open ( output_path , 'wb' ) as o :
input = i . read ()
output = remove ( input , session = session )
o . write ( output )
rembg の使用方法に関するサンプルの完全なリストを確認するには、サンプル ページにアクセスしてください。
rembg
コマンドをdocker run danielgatis/rembg
に置き換えるだけです。
これを試してください:
docker run -v path/to/input:/rembg danielgatis/rembg i input.png path/to/output/output.png
すべてのモデルがダウンロードされ、 .u2net
ディレクトリのユーザー ホーム フォルダーに保存されます。
利用可能なモデルは次のとおりです。
さらに微調整されたモデルが必要な場合は、これを試してください: #193 (コメント)
このライブラリは、onnxruntime ライブラリに直接依存しています。したがって、Python バージョンを更新できるのは、onnxruntime がその特定のバージョンのサポートを提供している場合のみです。
私の作品が気に入りましたか?コーヒー(あるいはビール)を買ってきてください
著作権 (c) 2020 年現在 ダニエル・ゲイティス
MITライセンスに基づいてライセンスされています