【remove.bgレベル】画像の背景透過ツールRembgのインストール

【remove.bgレベル】画像の背景透過ツールRembgのインストール 機械学習

「remove.bgレベルの背景透過ツールを無料で制限なく使いたい」
「プログラムで画像のトリミングを大量に実施したい」

このような場合には、Rembgがオススメです。
この記事では、Rembgについて解説しています。

本記事の内容

  • Rembgとは?
  • Rembgのシステム要件
  • Rembgのインストール
  • Rembgの動作確認

それでは、上記に沿って解説していきます。

Rembgとは?

Rembgは、画像の背景を削除するツールです。
画像の背景削除は、次のように表現されることがあります。

  • 切り抜き
  • 切り取り
  • トリミング
  • 透明化
  • 背景透過

Rembgの公式では、次の画像が公開されています。
これらは、Rembgで行った画像の切り抜き成果ということでしょう。

「これが本当にできたら、スゴイ!!」
「でも、これはいい結果だけを出しているのでしょう?」

こんなふうに思った人もいるかもしれません。
私は、そのように思いました。

過去にこのようなトリミングツールは、何個も試してきました。
しかし、結果は微妙なモノばかりでした。

だから、システムによる自動切り取りなんて無理だと諦めているところがありました。
(※諦めて、ここ数年間はツールを探すことすらしてませんでした)
そんなところに知ったのが、Rembgです。

同時に、remove.bgというWebサービスも知りました。
remove.bgを本格的に利用するなら、有償となるようです。

Rembgは、このremove.bgと同じレベルの背景透過が実現できます。
いや、むしろ次の画像に関してはRembgの方が勝っているとも言えます。

左がRembgによる切り抜きです。
そして、右がremove.bgによる切り抜きになります。

影の部分に処理に関しては、Rembgの方が優れています。
無料でこれだけの品質であれば、Rembgで十分だと言えます。

こんなレベルの結果を見たら、AIは本当に人々の仕事を奪っていくのだと感じます。
それぐらいのインパクトをRembgから受けました。

以上、Rembgについての説明でした。
次は、Rembgのシステム要件を説明します。

Rembgのシステム要件

現時点(2022年8月末)でのRembgの最新バージョンは、2.0.24となります。
この最新バージョンは、2022年8月25日にリリースされています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

サポート対象となるPythonのバージョンは、以下となっています。

  • Python 3.7
  • Python 3.8
  • Python 3.9
  • Python 3.10

このサポート状況は、以下のPython公式開発サイクルに準じています。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

Python 3.6は、2021年末でサポート期限が切れていることに注意してください。
よって、Rembgの対応状況は適切と言えます。

あと、Rembgのシステム要件ではONNX Runtimeが最も重要になります。
ONNX Runtime次第でRembgの処理速度が変わってきます。

ONNX Runtimeには、CPU版とGPU版が存在します。
もちろん、GPU版の方が処理速度は圧倒的に高速です。

GPUを使える環境であれば、GPU版ONNX Runtimeの利用をオススメします。
ただ、GPU版ONNX Runtimeでは要件を整備するのが若干複雑です。

次の記事では、その複雑な手順をわかりやすいように解説しています。

ONNX Runtime(GPU版)が起動するところまで準備しましょう。
準備できたら、次はRembgのインストールを行います。

以上、Rembgのシステム要件を説明しました。
次は、Rembgのインストールを説明します。

Rembgのインストール

検証は、次のバージョンのPythonで行います。

> python -V  
Python 3.10.4

まずは、現状のインストール済みパッケージを確認しておきます。
事前にONNX Runtime(GPU版)をインストール済みです。

> pip list 
Package         Version 
--------------- ------- 
coloredlogs     15.0.1 
flatbuffers     2.0.7 
humanfriendly   10.0 
mpmath          1.2.1 
numpy           1.23.2 
onnxruntime-gpu 1.12.1 
packaging       21.3 
pip             22.2.2 
protobuf        4.21.5 
pyparsing       3.0.9 
pyreadline3     3.4.1 
setuptools      65.3.0 
sympy           1.11 
wheel           0.36.2

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、Rembgのインストールです。
Rembgのインストールは、以下のコマンドとなります。

pip install rembg

上記コマンドは、RembgのCPU版です。
GPU版Rembgをインストールするには、次のコマンドを用います。
(※ONNX Runtime(GPU版)をインストール済みなら、どっちでもいいですけどね)

pip install rembg[gpu]

Rembgのインストールは、少し時間がかかります。
終了したら、どんなパッケージがインストールされたのかを確認します。

> pip list 
Package                Version 
---------------------- ----------- 
aiohttp                3.8.1 
aiosignal              1.2.0 
anyio                  3.6.1 
async-timeout          4.0.2 
asyncer                0.0.1 
attrs                  22.1.0 
beautifulsoup4         4.11.1 
certifi                2022.6.15 
charset-normalizer     2.1.1 
click                  8.1.3 
colorama               0.4.5 
coloredlogs            15.0.1 
fastapi                0.80.0 
filelock               3.8.0 
filetype               1.1.0 
flatbuffers            2.0.7 
frozenlist             1.3.1 
gdown                  4.5.1 
h11                    0.13.0 
humanfriendly          10.0 
idna                   3.3 
ImageHash              4.2.1 
imageio                2.21.2 
llvmlite               0.39.0 
mpmath                 1.2.1 
multidict              6.0.2 
networkx               2.8.6 
numba                  0.56.0 
numpy                  1.21.6 
onnxruntime            1.12.1 
onnxruntime-gpu        1.12.1 
opencv-python-headless 4.6.0.66 
packaging              21.3 
Pillow                 9.2.0 
pip                    22.2.2 
protobuf               4.21.5 
pydantic               1.10.0 
PyMatting              1.1.8 
pyparsing              3.0.9 
pyreadline3            3.4.1 
PySocks                1.7.1 
python-multipart       0.0.5 
PyWavelets             1.3.0 
rembg                  2.0.24 
requests               2.28.1 
scikit-image           0.19.3 
scipy                  1.7.3 
setuptools             65.3.0 
six                    1.16.0 
sniffio                1.2.0 
soupsieve              2.3.2.post1 
starlette              0.19.1 
sympy                  1.11 
tifffile               2022.8.12 
tqdm                   4.64.0 
typing_extensions      4.3.0 
urllib3                1.26.12 
uvicorn                0.18.3 
watchdog               2.1.9 
wheel                  0.36.2 
yarl                   1.8.1

Rembgは、結構な数のパッケージに依存しています。
そのため、RembgはPython仮想環境へインストールすることを推奨しておきます。

以上、Rembgのインストールを説明しました。
次は、Rembgの設定を説明します。

Rembgの動作確認

Rembgの動作確認を行います。
Rembgは、次の方法で動作可能です。

  • コマンドラインツール
  • サーバー
  • Python API(モジュール)

それぞれを以下で説明します。

コマンドラインツール

まずは、次のコマンドが動くことから確認しましょう。

> rembg --version 
rembg, version 2.0.24

Rembgのバージョンが表示されたら、OKです。
ヘルプを確認します。

> rembg --help 
Usage: rembg [OPTIONS] COMMAND [ARGS]... 
Options: 
  --version  Show the version and exit. 
  --help     Show this message and exit. 
Commands: 
  i  for a file as input 
  p  for a folder as input 
  s  for a http server

ヘルプを見ると、ファイル・フォルダ単位で処理が可能です。

ファイル単位

ファイルを指定して画像の背景削除を行う場合は、以下の形式となります。

rembg i path/to/input.png path/to/output.png

実際には、次のようなコマンドを実行します。

rembg i input/animal-1.jpg output/animal-1_out.png

animal-1.jpg

この画像から背景を削除した結果が、次の画像です。

animal-1_out.png

この結果は、驚きです。
ただ、元画像はサンプルとして用意されている画像になります。

Rembg公式(GitHub)
https://raw.githubusercontent.com/danielgatis/rembg/main/examples/animal-1.jpg

切り抜き易い画像が、用意されているだけの可能性があります。
そこで、次のフォルダ単位では適当に手に入れた画像で検証してみましょう。

フォルダ単位

フォルダを指定して画像の背景削除を行う場合は、以下の形式となります。

rembg p path/to/input path/to/output

実際には、次のようなコマンドを実行します。

rembg p inputs outputs

このとき、inputsには3つの画像が保存されています。

コマンドを実行した結果、outputs以下に画像が作成されます。

それぞれを比較した結果は、以下。

無料でこの品質の切り取りができるのは、スゴイの一言です。

サーバー

サーバーの起動は、コマンドラインから起動します。
rembgコマンドのヘルプで言えば、次のオプションです。

  s  for a http server

コマンドを実行すると、次のように表示されます。

> rembg s 
INFO:     Started server process [15608] 
INFO:     Waiting for application startup. 
INFO:     Application startup complete. 
INFO:     Uvicorn running on http://0.0.0.0:5000 (Press CTRL+C to quit)

ブラウザで次のURLにアクセスします。
http://localhost:5000/docs

表示されるページでは、ドキュメントを確認できます。

使い方としては、POST先を起動したサーバーのURLに設定するだけです。

<form 
    action="http://localhost:5000" 
    method="post" 
    enctype="multipart/form-data" 
> 
    <input type="file" name="file" /> 
    <input type="submit" value="upload" /> 
</form>

Python API(モジュール)

公式では、次のパターンでのサンプルコードが公開されています。

  • bytes
  • PIL image
  • NumPy配列

それぞれのコードが機能するか、確認します。

bytesとして処理する場合

from rembg import remove 

input_path = 'inputs/1.jpg' 
output_path = 'output/1_out.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 imageとして処理する場合

from rembg import remove 
from PIL import Image 

input_path = 'inputs/2.jpg' 
output_path = 'output/2_out.png' 

input = Image.open(input_path) 
output = remove(input) 
output.save(output_path)

NumPy配列として処理する場合

from rembg import remove 
import cv2 

input_path = 'inputs/3.jpg' 
output_path = 'output/3_out.png' 

input = cv2.imread(input_path) 
output = remove(input) 
cv2.imwrite(output_path, output)

すべて動きました。
コマンドラインツールでの結果と同じモノが出力されています。

以上、Rembgの動作確認を説明しました。

タイトルとURLをコピーしました