【DISによる画像の二値化】高精度切り抜きGUIツールのインストール

機械学習

「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ツールの動作確認を説明しました。

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