【Stable Diffusion】Inpaintingアプリのインストール

【Stable Diffusion】Inpaintingアプリのインストール ツール

「Stable DiffusionのInpaintingをGUIで簡単に試したい」
「人気のAUTOMATIC1111は使いたくない」

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

本記事の内容

  • Stable Diffusion Multi Inpaintingとは?
  • Stable Diffusion Multi Inpaintingのシステム要件
  • Stable Diffusion Multi Inpaintingのダウンロード
  • Stable Diffusion Multi Inpaintingのインストール
  • Stable Diffusion Multi Inpaintingの動作確認

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

Stable Diffusion Multi Inpaintingとは?

Stable Diffusion Multi Inpaintingとは、Inpaintingアプリのことです。
アプリと言っても、Hugging Face上で公開されているWebアプリになります。

上記ツイートを見れば、アプリの内容はわかるでしょう。
あと、上記ツイートにはアプリへのURLが記載されています。

アプリの動作を試したい場合は、そちらから試してみてください。
じゃあ、AUTOMATIC1111を使えばいいじゃないかとなります。

確かに、AUTOMATIC1111は非常に高機能で人気があります。
しかし、個人的にはほとんど利用していません。

そもそも、AUTOMATIC1111は一般ユーザー向けの色合いが強いです。
開発者としては、利用するだけではなく活かせることも考えています。

活かすとは、自分が開発するシステムに導入できないかということですね。
もしくは、改良して何か新しいサービス・機能を作れないかという視点もあります。

その視点からすると、Stable Diffusion Multi Inpaintingを選ぶことになります。
実際、このアプリはシンプルで改良もやりやすいです。

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

Stable Diffusion Multi Inpaintingのシステム要件

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

Stable Diffusion Multi Inpaintingのデモ画面のソースが、公開されているだけです。
https://huggingface.co/spaces/multimodalart/stable-diffusion-inpainting/tree/main

これを読み解いて、システム要件を導きだしています。
OSは、Pythonが動けばどこでもよいでしょう。

ただ、PythonのバージョンはPyton 3.7以降としておきます。
以下の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月

あとは、以下がポイントになります。

  • PyTorch
  • 各種ライブラリ(パッケージ)
  • Gradio

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

PyTorch

Stable Diffusionが動くためには、PyTorchが必須です。
そのため、PyTorchのインストールは大前提となります。

PyTorchは、最新(安定版)のGPU版を推奨します。
GPU版でないと、速度面でかなりストレスを感じることになるでしょう。

各種ライブラリ(パッケージ)

以下が公開されています。

requirements.txt

--extra-index-url https://download.pytorch.org/whl/cu113  
torch 
torchvision 
diffusers 
transformers 
ftfy 
numpy 
matplotlib 
uuid 
opencv-python 
git+https://github.com/openai/CLIP.git

PyTorchに関する部分は、邪魔なので消します。
そうすると、次のパッケージを別途インストールする必要があるとわかります。

diffusers 
transformers 
ftfy 
numpy 
matplotlib 
uuid 
opencv-python 
git+https://github.com/openai/CLIP.git

簡単に言うと、Stable Diffusionを動かすために必要なモノということです。
それ以外は、このアプリ独自で必要なパッケージとなります。

それぞれ(ftfyとuuidを除く)の詳細については、以下の記事で説明しています。

Gradio

Gradioは、Webアプリを作成するためのライブラリです。
詳細は、次の記事で説明しています。

Gradioについては、requirements.txtに記載されていませんでした。
そのため、別途インストールが必要になります。

まとめ

Python 3.7以降の環境を用意します。
そして、Python仮想環境の利用が無難でしょう。

また、PyTorchだけは事前にインストールしておきましょう。
requirements.txtにも記載されていますが、それは使わないようにします。

以上、Stable Diffusion Multi Inpaintingのシステム要件を説明しました。
次は、Stable Diffusion Multi Inpaintingのダウンロードを説明します。

Stable Diffusion Multi Inpaintingのダウンロード

ソースの取得には、huggingface_hubを利用します。
huggingface_hubについては、次の記事で解説しています。

huggingface_hub専用のPython仮想環境を設けた方が安全です。
huggingface_hubを利用できるようになれば、次のコードを実行してください。

from huggingface_hub import snapshot_download

YOUR_TOKEN = "コピーしたアクセストークン"

snapshot_download(
    repo_id="multimodalart/stable-diffusion-inpainting",
    repo_type="space",
    revision="main",
    use_auth_token=YOUR_TOKEN,
    cache_dir="./")

アクセストークンについては、次の記事内で触れています。

未ログインでは、Stable Diffusion Multi Inpaintingをダウンロードできません。
ダウンロードができたら、以下のファイルを確認できるはずです。

「80d3ffae221918bc794b9e971ee6e2232220e4d1」以下をコピーしておきます。
それらが、Stable Diffusion Multi Inpaintingのソース一式となります。

以上、Stable Diffusion Multi Inpaintingのダウンロードを説明しました。
次は、Stable Diffusion Multi Inpaintingのインストールを説明します。

Stable Diffusion Multi Inpaintingのインストール

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

> python -V   
Python 3.10.4

まずは、現状のインストール済みパッケージを確認しておきます。
GPU版PyTorchをインストール済みの状況です。

> pip list 
Package            Version 
------------------ ------------ 
certifi            2022.9.24    
charset-normalizer 2.1.1        
idna               3.4          
numpy              1.23.3       
Pillow             9.2.0        
pip                22.2.2       
requests           2.28.1       
setuptools         65.4.1       
torch              1.12.1+cu113 
torchaudio         0.12.1+cu113 
torchvision        0.13.1+cu113 
typing_extensions  4.3.0 
urllib3            1.26.12 
wheel              0.37.1

この状態をインストールを進めていきます。
では、Stable Diffusion Multi Inpaintingのソース一式を設置します。

ここでは、Python仮想環境のコンテンツルートに配置しています。

一応、requirements.txtを修正します。
PyTorchに関する部分を削除しておきます。

修正後のrequirements.txt

diffusers 
transformers 
ftfy 
numpy 
matplotlib 
uuid 
opencv-python 
git+https://github.com/openai/CLIP.git

requirements.txtを変更したら、次のコマンドを実行します。

 pip install -r requirements.txt

インストールには、少し時間がかかります。
あと、Gradioもインストールする必要があります。

pip install gradio

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

> pip list                        
Package            Version 
------------------ ------------ 
aiohttp            3.8.3 
aiosignal          1.2.0 
anyio              3.6.1 
async-timeout      4.0.2 
attrs              22.1.0 
bcrypt             4.0.0 
certifi            2022.9.24 
cffi               1.15.1 
charset-normalizer 2.1.1 
click              8.1.3 
clip               1.0 
colorama           0.4.5 
contourpy          1.0.5 
cryptography       38.0.1 
cycler             0.11.0 
diffusers          0.3.0 
fastapi            0.85.0 
ffmpy              0.3.0 
filelock           3.8.0 
fonttools          4.37.4 
frozenlist         1.3.1 
fsspec             2022.8.2 
ftfy               6.1.1 
gradio             3.4.0 
h11                0.12.0 
httpcore           0.15.0 
httpx              0.23.0 
huggingface-hub    0.10.0 
idna               3.4 
importlib-metadata 5.0.0 
Jinja2             3.1.2 
kiwisolver         1.4.4 
linkify-it-py      1.0.3 
markdown-it-py     2.1.0 
MarkupSafe         2.1.1 
matplotlib         3.6.0 
mdit-py-plugins    0.3.1 
mdurl              0.1.2 
multidict          6.0.2 
numpy              1.23.3 
opencv-python      4.6.0.66 
orjson             3.8.0 
packaging          21.3 
pandas             1.5.0 
paramiko           2.11.0 
Pillow             9.2.0 
pip                22.2.2 
pycparser          2.21 
requests           2.28.1 
rfc3986            1.5.0 
setuptools         65.4.1 
six                1.16.0 
sniffio            1.3.0 
starlette          0.20.4 
tokenizers         0.12.1 
torch              1.12.1+cu113 
torchaudio         0.12.1+cu113 
torchvision        0.13.1+cu113 
tqdm               4.64.1 
transformers       4.22.2 
typing_extensions  4.3.0 
uc-micro-py        1.0.1 
urllib3            1.26.12 
uuid               1.30 
uvicorn            0.18.3 
wcwidth            0.2.5 
websockets         10.3 
wheel              0.37.1 
yarl               1.8.1 
zipp               3.8.1

結果的には、かなり多くのパッケージがインストールされました。
やはり、Python仮想環境を利用しましょう。

以上、Stable Diffusion Multi Inpaintingのインストールを説明しました。
次は、Stable Diffusion Multi Inpaintingの動作確認を説明します。

Stable Diffusion Multi Inpaintingの動作確認

Stable Diffusion Multi Inpaintingの動作確認を行います。
app.pyを実行します。

おそらく、次のエラーが出るはずです。

OSError: Token is required (`use_auth_token=True`), but no token found. You need to provide a token or be logged in to Hugging Face with `huggingface-cli login` or `notebook_login`. See https://huggingface.co/settings/tokens.

「CompVis/stable-diffusion-v1-4」の利用には、Hugging Faceのログインが必須でした。
つまり、アクセストークンが必要ということです。

app.pyには、次のようなコードが存在しています。

環境変数「API_TOKEN」を設定するという手段が、王道なのでしょう。
でも、それはそれでいろいろと面倒です。

環境により説明する内容も異なります。
そこで、今回は最も簡単で確実な方法を示しておきます。

アクセストークンを直接埋め込みます。
対応できたら、再度app.pyを実行します。

処理が流れて、最後に次のように表示されたら起動成功です。

Running on local URL:  http://127.0.0.1:7860 
To create a public link, set `share=True` in `launch()`.

Chromeなどのブラウザで「http://127.0.0.1:7860」にアクセスします。

以上で、Stable Diffusion Multi Inpaintingの動作確認は完了です。
ただ、利用していくうちにNSFWフィルターに引っかかることがあります。

NSFWフィルターの回避方法は、次の記事で解説しています。

この回避方法をapp.pyに適用するには、以下のコード部分を変更します。

pipeとmodelに間(32行目付近)に例のコードを追加します。

pipe = StableDiffusionInpaintingPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    revision="fp16",
    torch_dtype=torch.float16,
    use_auth_token=auth_token,
).to(device)
# ====ここから====
def null_safety(images, **kwargs):
    return images, False

pipe.safety_checker = null_safety
# ====ここまで====
model = CLIPDensePredT(version='ViT-B/16', reduce_dim=64)

この変更により、NSFWフィルターを回避することができます。

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