RunwayML Stable Diffusion Inpaintingのインストール

RunwayML Stable Diffusion Inpaintingのインストール 機械学習

「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.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月

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

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