今回は簡単に画像の背景除去ができるライブラリRembgの導入方法、サンプルコード、簡単な性能評価を簡単にしたのでまとめます。画像分析にて、入力画像への前処理として需要がある背景除去ですが非常に簡単にこなしてくれるライブラリです。
背景除去ライブラリRembgの構築方法(インストール)
ここでは仮想環境を作成し、その仮想環境へRembgをインストールする方法を紹介します。
(よくある環境構築作業なので分かる方はスルーしてください。Windows向け)
手順は以下の通り。
- 仮想環境の構築
- 仮想環境を有効にする(以降の作業を仮想環境内で行うようになります)
- Rembgのインストール
上記手順をターミナル上で実行します(以下はすべてターミナル上のコマンド)。
パスは各自で変更してください。
①仮想環境を作る(myvenvは仮想環境名で変更可) >> py -m venv myvenv ②仮想環境を有効にする >> .\myvenv\Scripts\activate ③rembgのインストール >>(myvenv) pip install rembg
③インストールを実行すると色々とインストールされます。これはRembg自体が必要とする他ライブラリもインストールされるからです。
仮想環境を無効にする場合はターミナル上で「deactivate」コマンドを実行すると仮想環境が無効になります(=仮想環境から抜けられます)。
Rembgで画像の背景除去をするサンプルコード
入力画像(背景除去したい画像)のパスを関数に渡すことで実行できます。
入力画像はpythonファイルと同じ場所に配置してください。
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)
実行すると同パスに背景除去後の画像が保存されます。
入力画像の拡張子はjpgでもよいですが、出力画像はjpgだとエラーになります(データ形式の関係)。
次はRembgの背景除去の性能評価についてです。
Rembgの性能検証
上記のサンプルコードを使用して、Rembgの性能評価を簡単にしてみました。
使ううえでの参考にしてみてください。
以降の画像でよく出てくる青色の被写体は手元にあったBluetoothスピーカーです。選定理由は手元にあったからで特に意図はないです。
色々な背景色で検証
全て上手く背景除去されています。背景の色は被写体と同化でもしない限り影響はないでしょう。
被写体の模様違いで検証
次に少し背景と同化するような模様の被写体で検証。
上手く除去できています。被写体の色が単色ではなく模様っぽいと背景として判断されるかもと思い検証しましたが、そのようなことはないようです。
(下の画像で一部影が誤認されていますが、これは被写体の模様とは関係ないでしょう)
被写体の中に被写体がある場合の検証
次は被写体の中にさらに被写体を配置した場合の検証。
また入力画像内にて被写体の占めるサイズの影響も併せて検証。
上側の画像では、布まで被写体として判断されてきれいに背景除去されています。
下側の画像では、布まで背景として判断され除去されています。
他の検証の結果も踏まえると、Rembgは画像内のある程度のサイズの色の塊を被写体として判断(≒面積がある程度大きいものを背景として判断)している可能性があります。
他rembgの検証
以下画像でも試しに検証。
上側画像では、背景なのか迷ったのか、出力画像に薄くなった領域があります。一番外と中側(本)の模様が中央の青スピーカと比較すれば似ているからでしょうか?加えて面積の影響もあるかもしれません。
下側画像では、背景の左端に違う色を入れた場合どうなるか気になり検証しました。
結果は問題なく背景除去されていますね。この場合では本ははっきり表示されていますね。
まとめ
Rembgは簡単に導入できるうえにかなり優秀な背景除去ライブラリです。
画像内の背景や被写体の色の相性やサイズ感によって結果は変わるのでそこら辺の性能は把握したうえで使用するとより有効に活用できると思います。
特に背景の色が変更できる場合は一度検討することをおススメします。
以下関連記事。
コメント