「AIを用いた画像切り抜きツールを導入したい」
「高精度の二値化処理が実現できるDISを利用したい」
このような場合には、この記事の内容が参考になります。
この記事では、高精度の切り抜きGUIツールのインストール方法を解説しています。
本記事の内容
- DISツールとは?
- DISツールのシステム要件
- DISツールのインストール
- DISツールの設定
- DISツールの動作確認
それでは、上記に沿って解説していきます。
DISツールとは?
DISツールとは、以下のWebアプリのことです。
https://huggingface.co/spaces/ECCV2022/dis-background-removal
DISは、2値画像処理を高度に行えるAI技術になります。
https://github.com/xuebinqin/DIS
DIS自体については、GitHubのページを見ればイメージできるでしょう。
IS-Netを採用していて、高精度に2値画像処理が可能ということです。
このようなことができるから、高度な切り抜きが可能となります。
そして、このDISをWebアプリに組み込んだモノがDISツールと言うことです。
以上、DISツールについて説明しました。
次は、DISツールのシステム要件を説明します。
DISツールのシステム要件
DISのシステム要件は、主にPyTorchが動くことです。
事前にPyTorchは、インストールしておきましょう。
公開されているrequirements.txtにも、PyTorchは記載されています。
requirements.txt
torch torchvision requests gdown matplotlib opencv-python Pillow==8.0.0 scikit-image==0.15.0
ただ、これを迂闊にインストールするとCPU版のPyTorchがインストールされてします。
そのため、PyTorch関係のモノは事前にインストールしておきます。
requestsは、PyTorchのインストール時にインストールされます。
そのため、requirements.txtから除去できます。
また、バージョン指定は外しましょう。
指定されているバージョンは、かなり古過ぎます。
あと、Gradio(gradio)を追加しておきます。
Gradioについては、次の記事で解説しています。
結果的には、requirements.txtは次のように変更できます。
gdown matplotlib opencv-python Pillow scikit-image gradio
これらは、システム要件として事前にインストールしておきます。
インストールには、次のコマンドを用います。
pip install -r requirements.txt
以上、DISツールのシステム要件を説明しました。
次は、DISツールのインストールを説明します。
DISツールのインストール
システム要件として、必要なパッケージ類はインストール済です。
ここでは、次の過程に分けてインストールを行います。
- DISリポジトリのクローン(GitHubから)
- DISツールの取得(Hugging Faceから)
それぞれを以下で説明します。
DISリポジトリのクローン(GitHubから)
gitコマンドでリポジトリをクローンします。
git clone https://github.com/xuebinqin/DIS
Windowsでgitコマンドが利用できない場合は、以下をインストールしましょう。
リポジトリルートに移動します。
cd DIS
DISツールの取得(Hugging Faceから)
DIS Background Removal – a Hugging Face Space by ECCV2022
https://huggingface.co/spaces/ECCV2022/dis-background-removal/tree/main
プログラム一式は、上記ページで確認できます。
これらを1ファイルづつダウンロードしても構いません。
しかし、一括でダウンロード可能することができます。
一括ダウンロードには、huggingface_hubを利用します。
huggingface_hubを利用すれば、一括でプログラム一式を取得できます。
huggingface_hubをダウンロードできたら、次のコードを実行します。
from huggingface_hub import snapshot_download snapshot_download( repo_id="ECCV2022/dis-background-removal", repo_type="space", revision="main", cache_dir="./")
実行すると、次のような表示がコンソールに現れます。
Fetching 6 files: 17%|█▋ | 1/6 [00:01<00:07, 1.52s/it] Downloading: 100%|██████████| 272/272 [00:00<00:00, 180kB/s] ~~省略~~ Downloading: 100%|██████████| 834k/834k [00:02<00:00, 322kB/s] Fetching 6 files: 100%|██████████| 6/6 [00:12<00:00, 2.13s/it]
処理が完了すると、ディレクトリ上には「spaces–ECCV2022–dis-background-removal」を確認できます。
「snapshots」以下にあるファイル・ディレクトリをコピーします。
「0d271c2a76fcbcd7269e6304b9949a7ea7444667」は、リポジトリのバージョンです。
正確には、この長たらしいディレクトリ以下をコピーします。
コピーするのは、以下のファイルだけでOKです。
- app.py
- robot.png
- ship.png
コピーしたファイルは、リポジトリルートに保存します。
以上、DISツールのインストールを説明しました。
次は、DISツールの設定を説明します。
DISツールの設定
DISツールを起動させるための設定を行います。
- 学習済みモデルのダウンロード
- 必要ファイルの移動
- app.pyの修正
学習済みモデルのダウンロード
isnet.pth
https://drive.google.com/file/d/1KyMpRjewZdyYfxHPYcd-ZbanIXtin0Sn/view
上記からモデルをダウンロードします。
ダウンロードしたモデルは、「saved_models」に設置します。
必要ファイルの移動
「IS-Net」の中身をリポジトリルートに移動させます。
ただし、以下のファイルは移動する必要はありません。
- pytorch18.yml
- requirements.txt
次のような構成になれば、OKです。
app.pyの修正
修正前と修正後は、以下。
修正前
修正後
モジュールの読み込みに、以下を追加しています。
import torch.nn as nn # 追加 from DIS.models.isnet import ISNetDIS # 追加
あと、リポジトリのクローンやファイル移動に関する記述をコメントにしています。
以上、DISツールの設定を説明しました。
次は、DISツールの動作確認を説明します。
DISツールの動作確認
DISツールの起動は、app.pyを実行します。
正常に起動できると、コンソールには以下のように表示されます。
Running on local URL: http://127.0.0.1:7860 To create a public link, set `share=True` in `launch()`.
そして、ブラウザで「http://127.0.0.1:7860」にアクセスします。
Hugging Face上のデモと同じ画面を確認できます。
もちろん、同じように画像の切り抜きもできます。
上の例では、次の画像をアップロードしています。
そして、切り抜かれたのが以下。
凄い精度で切り抜いていますね。
以上、DISツールの動作確認を説明しました。