【Stable Diffusion】CLIPSegによるInpainting

【Stable Diffusion】CLIPSegによるInpainting ツール

「テキストだけでInpaintingを行いたい」
「Inpaintingを手間をかけずに効率良く実行したい」

このような場合には、この記事の内容が参考になります。
この記事では、テキストを入力するだけでInpaintingを行う方法を解説しています。

本記事の内容

  • CLIPSegによるInpaintingとは?
  • CLIPSegによるInpaintingのシステム要件
  • CLIPSegによるInpaintingのインストール
  • CLIPSegによるInpaintingの動作確認

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

CLIPSegによるInpaintingとは?

Text Based Inpainting – a Hugging Face Space by nielsr
https://huggingface.co/spaces/nielsr/text-based-inpainting

上記ページにおいて、CLIPSegによるInpaintingの動作が確認可能です。
CLIPSegによるInpaintingとは、CLIPSegとStable Diffusionを組み合わせたWebアプリと言えます。

CLIPSegは、画像セグメンテーションの技術のことです。
入力したプロンプト(テキスト)によって、対象の物体を検出します。

指定された画像内に車がある場合、「a car」というテキストで車を検出可能です。
CLIPSegによるInpaintingでは、このCLIPSegの技術を用いています。
簡単に言うと、次のWebアプリにCLIPSegを組み合わせているのです。

Inpaintingでは、置き換えの対象を指定する必要があります。
指定するためには、ペンツールで塗りつぶすことが一般的になっています。

CLIPSegによるInpaintingでは、そんな塗りつぶすという作業が不要になります。
触ってみればわかりますが、かなり手間を省けます。

例えば、次のような画像をアップロードします。

そして、次のように入力して処理を実行します。

その結果、次のような画像が生成されます。

また、次のように対象を変更することも可能です。

その結果、次のような結果になります。

このアプリで検証していると、楽しくて時間が簡単に溶けてしまいます・・・

以上、CLIPSegによるInpaintingを説明しました。
次は、CLIPSegによるInpaintingのシステム要件を説明します。

CLIPSegによるInpaintingのシステム要件

CLIPSegによるInpaintingのシステム要件は、明記されていません。
そもそも、導入手順が公開されているわけでもありません。

CLIPSegによるInpaintingのデモ画面のソースが、公開されているだけです。
ただ、Hugging Faceでデモが動く以上はそれほど特殊な要件を必要とはしないでしょう。

OSはPythonが動くならば、どのOSでもよいでしょう。
ソースを見ても、OS依存の箇所はありません。

  • Windows
  • macOS
  • Linux

Pythonのバージョンは、次のPython公式開発サイクルだけは意識しておきましょう。

バージョンリリース日サポート期限
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月
3.112022年10月25日2027年10月

あとは、PyTorchが重要です。

GPUが利用可能なら、GPU版PyTorchをインストールしましょう。

現時点(2022年11月末)で最新となる次のバージョンでも問題なく動きます。

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

CLIPSegによるInpaintingのインストール

CLIPSegによるInpaintingのインストールは、Python仮想環境の利用をオススメします。
Python仮想環境は、次の記事で解説しています。

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

> python -V   
Python 3.10.4

そして、システム要件としてはPyTorchをインストール済という状況です。
このような状況において、次の手順でCLIPSegによるInpaintingのインストールを進めます。

  • CLIPSegによるInpaintingの取得(Hugging Faceから)
  • requirements.txtを使った一括インストール

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

CLIPSegによるInpaintingの取得(Hugging Faceから)

nielsr/text-based-inpainting at main
https://huggingface.co/spaces/nielsr/text-based-inpainting/tree/main

上記ページでソースを確認できます。

実質、「app.py」だけと言えます。
そのため、その1ファイルをダウンロードすれば済みます。

ファイル数が多い場合だと、次のようなツールで一括ダウンロードを実行することになります。

requirements.txtを使った一括インストール

requirements.txtは、次の内容のモノが公開されています。

requirements.txt

git+https://github.com/huggingface/transformers.git 
accelerate 
git+https://github.com/huggingface/diffusers.git 
torch

もちろん、このファイルをダウンロードしても構いません。
ただ、PyTprchに関する記述(torch)は除外します。

あと、Gradioの記述がありません。

そのため、「gradio」を追加します。
結果的には、次のようなrequirements.txtを用意することになります。

git+https://github.com/huggingface/transformers.git 
accelerate 
git+https://github.com/huggingface/diffusers.git
gradio

そして、次のコマンドで一気にインストールします。

pip install -r requirements.txt

処理完了までは、しばらく時間がかかります。
処理が完了したら、CLIPSegによるInpaintingのインストールは終了です。

以上、CLIPSegによるInpaintingのインストールを説明しました。
次は、CLIPSegによるInpaintingの動作確認を説明します。

CLIPSegによるInpaintingの動作確認

CLIPSegによるInpaintingの起動は、app.pyを実行します。
基本的には、そのまま実行したら次のようなエラーが出ることになります。

OSError: Can't load config for 'runwayml/stable-diffusion-inpainting'. If you were trying to load it from 'https://huggingface.co/models', make sure you don't have a local directory with the same name. Otherwise, make sure 'runwayml/stable-diffusion-inpainting' is the correct path to a directory containing a model_index.json file

これは、規約同意が必要ということです。
利用規約への同意については、次の記事内で説明しています。

上記記事に従えば、Access Token(アクセストークン)が手元にあるはずです。
それを次の変数に設定しましょう。

次のように変更すれば、OKです。

これで、準備は整いました。
では、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上のデモと同じ画面を確認できます。

ここまで動けば、あとは問題ないでしょう。
あとは、イーロン・マスクでもエマ・ワトソンでも何でも召喚してみましょう。

以上、CLIPSegによるInpaintingの動作確認を説明しました。

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