「Stable DiffusionのInpaintingをローカル環境で自由に試したい」
「Inpainting用にファインチューニングされたチェックポイントを利用したい」
このような場合には、RunwayML Stable Diffusion Inpaintingがオススメです。
この記事では、RunwayML Stable Diffusion Inpaintingをインストールする方法を解説しています。
本記事の内容
- RunwayML Stable Diffusion Inpaintingとは?
- RunwayML Stable Diffusion Inpaintingのシステム要件
- RunwayML Stable Diffusion Inpaintingのインストール
- RunwayML Stable Diffusion Inpaintingの設定
- RunwayML Stable Diffusion Inpaintingの動作確認
それでは、上記に沿って解説していきます。
RunwayML Stable Diffusion Inpaintingとは?
RunwayML Stable Diffusion Inpaintingとは、Webアプリのことです。
Hugging Face上で公開されています。
RunwayML Stable Diffusion Inpainting
https://huggingface.co/spaces/runwayml/stable-diffusion-inpainting
Diffusers v0.6.0の新機能として、Inpainting用のチェックポイントが提供されています。
Release v0.6.0: Finetuned Stable Diffusion inpainting · huggingface/diffusers · GitHub
https://github.com/huggingface/diffusers/releases/tag/v0.6.0
これにより、Inpaintingの精度は向上しています。
新しくなったInpaintingの効果は、次の画像をご覧ください。
トトロの代わりにカボチャが違和感なく馴染んでいます。
確実に以前よりは、Inpaintingの精度がUPしています。
一応、Diffusers v0.6.0の機能説明ページでは次のサンプルコードが載せてあります。
from io import BytesIO import torch import PIL import requests from diffusers import StableDiffusionInpaintPipeline def download_image(url): response = requests.get(url) return PIL.Image.open(BytesIO(response.content)).convert("RGB") img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png" mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png" image = download_image(img_url).resize((512, 512)) mask_image = download_image(mask_url).resize((512, 512)) pipe = StableDiffusionInpaintPipeline.from_pretrained( "runwayml/stable-diffusion-inpainting", revision="fp16", torch_dtype=torch.float16, ) pipe.to("cuda") prompt = "Face of a yellow cat, high resolution, sitting on a park bench" output = pipe(prompt=prompt, image=image, mask_image=mask_image) image = output.images[0]
でも、InpaintingはGUIとセットで機能して意味があると言えます。
ある程度の試行錯誤の処理が必要となりますからね。
実際、このコードだけ動いても「それで?」ということです。
そもそも、マスク画像を用意するのが手間過ぎます。
だからこそ、そのデモとしてRunwayML Stable Diffusion Inpaintingが用意されています。
以上、RunwayML Stable Diffusion Inpaintingについて説明しました。
次は、RunwayML Stable Diffusion Inpaintingのシステム要件を説明します。
RunwayML Stable Diffusion Inpaintingのシステム要件
基本的には、GPU版のPyTorchが動けばOSは何でもよいでしょう。
Pythonのバージョンは、以下のPython公式開発サイクルに従います。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
このPython公式開発サイクルに従うと、Python 3.7以降となります。
GPU版PyTorchを事前にインストールしておきましょう。
あとは、Diffusers 0.6.0も必須です。
Inpainting用のチェックポイントを利用できるのは、このバージョンからとなっています。
Diffusersについては、他のパッケージとまとめてインストールします。
以上、RunwayML Stable Diffusion Inpaintingのシステム要件を説明しました。
次は、RunwayML Stable Diffusion Inpaintingのインストールを説明します。
RunwayML Stable Diffusion Inpaintingのインストール
RunwayML Stable Diffusion Inpaintingのインストールは、Python仮想環境の利用をオススメします。
Python仮想環境は、次の記事で解説しています。
検証は、次のバージョンのPythonで行います。
> python -V Python 3.10.4
そして、システム要件としてはGPU版PyTorchをインストール済という状況です。
このような状況において、次の手順でRunwayML Stable Diffusion Inpaintingのインストールを進めます。
- RunwayML Stable Diffusion Inpaintingの取得(Hugging Faceから)
- requirements.txtを使った一括インストール
それぞれを下記で説明します。
RunwayML Stable Diffusion Inpaintingの取得(Hugging Faceから)
runwayml/stable-diffusion-inpainting at main
https://huggingface.co/spaces/runwayml/stable-diffusion-inpainting/tree/main
プログラム一式は、上記ページで確認できます。
これらを1ファイルづつダウンロードすることは、それほど面倒ではありません。
しかし、そんな面倒なことをする必要はありません。
このような場合には、huggingface_hubを利用しましょう。
huggingface_hubを利用すれば、一括でプログラム一式を取得可能です。
huggingface_hubをインストールできたら、次のコードを実行します。
from huggingface_hub import snapshot_download snapshot_download( repo_id="runwayml/stable-diffusion-inpainting", repo_type="space", revision="main", cache_dir="./")
上記コードを実行すると、ダウンロード処理が始まります。
ダウンロード終了まで、少しだけ待ちます。
処理が完了すると、ディレクトリ上に「spaces–runwayml–stable-diffusion-inpainting」を確認できます。
そして、「snapshots」以下にあるファイル・ディレクトリをコピーします。
「820cf05ab9dc88df8d08111608f0310bac31e45b」は、リポジトリのバージョンです。
正確には、この長たらしいディレクトリより下のモノをコピーします。
コピーしたファイルは、コンテンツルートに保存します。
requirements.txtを使った一括インストール
コンテンツルートには、コピーしたrequirements.txtが存在しています。
requirements.txt
--extra-index-url https://download.pytorch.org/whl/cu113 torch torchvision git+https://github.com/huggingface/diffusers.git transformers ftfy numpy matplotlib uuid opencv-python git+https://github.com/openai/CLIP.git
このファイルから、PyTorch関連を取り除きます。
また、Gradioのパッケージを追加します。
Gradioについては、次の記事で説明しています。
Webアプリを動かすために必要なライブラリになります。
requirements.txtは、次のように変更できました。
git+https://github.com/huggingface/diffusers.git transformers ftfy numpy matplotlib uuid opencv-python git+https://github.com/openai/CLIP.git gradio
このrequirements.txtを利用して、必要なモノを一気にインストールします。
実行するのは、次のコマンドです。
pip install -r requirements.txt
処理完了までは、しばらく時間がかかります。
以上、RunwayML Stable Diffusion Inpaintingのインストールを説明しました。
次は、RunwayML Stable Diffusion Inpaintingの設定を説明します。
RunwayML Stable Diffusion Inpaintingの設定
RunwayML Stable Diffusion InpaintingのWebアプリを起動させるための設定を行います。
必要な設定は、以下の作業となります。
- 利用規約への同意
- Access Token(アクセストークン)の設定
利用規約への同意
RunwayML Stable Diffusion Inpaintingをインストールして利用するには、規約への同意が必要です。
runwayml/stable-diffusion-inpainting · Hugging Face
https://huggingface.co/runwayml/stable-diffusion-inpainting
Hugging Faceにログインした状態で、上記ページへアクセスします。
そして、規約に同意しましょう。
Access Token(アクセストークン)の設定
app.pyファイルを修正します。
「auth_token」にAccess Token(アクセストークン)を設定します。
Access Tokenについては、次の記事内で説明しています。
「Access Token(アクセストークン)の取得」という箇所をご覧ください。
以上、RunwayML Stable Diffusion Inpaintingの設定を説明しました。
次は、RunwayML Stable Diffusion Inpaintingの動作確認を説明します。
RunwayML Stable Diffusion Inpaintingの動作確認
RunwayML Stable Diffusion Inpaintingの起動は、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上のデモと同じ画面を確認できます。
あとは、自由にInpaintingを試してください。
Hugging Faceのデモと異なり、マシンパワーを独占できます。
そのため、私の環境ではHugging Faceのデモよりはかなり速いです。
以上、RunwayML Stable Diffusion Inpaintingの動作確認を説明しました。