【Stable Diffusion】depth2imgのGUIツール

【Stable Diffusion】depth2imgのGUIツール ツール

「depth2imgをGUIでサクサクと行いたい」
「ポーズを固定して画像生成を行いたい」

このような場合には、この記事の内容が参考になります。
この記事では、depth2imgのGUIツールを導入する方法を解説しています。

本記事の内容

  • depth2imgのGUIツール
  • depth2img GUIのシステム要件
  • depth2img GUIツールのインストール
  • depth2img GUIツールの設定
  • depth2img GUIツールの動作確認

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

depth2imgのGUIツール

depth2imgとは、Depth to Image Diffusion Modelのことです。
このモデルは、StableDiffusion 2.0と同時に公開されました。

ここで言うDepthとは、画像の深度情報のことです。
深度情報は、立体的(3D)に対象物を扱うための情報と言えます。

この深度情報により、対象物の形状を維持することが可能になります。
その結果、ポーズ固定で画像生成が実現できるのです。

そんなdepth2imgの動作を確認できるツールが、Hugging Faceで公開されています。

Stable Diffusion 2 Depth2Img
https://huggingface.co/spaces/radames/stable-diffusion-depth2img

以上、depth2imgのGUIツールについて説明しました。
次は、depth2imgのGUIツールのシステム要件を説明します。

depth2img GUIのシステム要件

OSは、以下を含むクロスプラットフォーム対応のはずです。
基本的には、Pythonが動けば大丈夫でしょう。

  • 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月

オススメするのは、Python 3.10です。
Python 3.10であれば、WindowsでもxFormersが簡単にインストールできます。

xFormersは必須ではありません。
ただ、xFormersをインストールすれば次に紹介するPyTorchをより速く動かせます。

PyTorchは、GPU版がほぼ必須と言えます。
CPU版では、まともに動かないでしょう。

以上、depth2img GUIツールのシステム要件を説明しました。
次は、depth2img GUIツールのインストールを説明します。

depth2img GUIツールのインストール

depth2img GUIツールのインストールは、Python仮想環境の利用をオススメします。
Python仮想環境は、次の記事で解説しています。

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

> python -V  
Python 3.10.4

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

  • depth2img GUIツールの取得(Hugging Faceから)
  • requirements.txtを使った一括インストール

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

depth2img GUIツールの取得(Hugging Faceから)

Stable Diffusion 2 Depth2Imgのファイル
https://huggingface.co/spaces/radames/stable-diffusion-depth2img/tree/main

上記ページでファイルを確認できます。

すべてを手動でダウンロードするのは、現実的ではありません。
そこで、これらをまとめてダウンロードするためのツールが用意されています。

huggingface_hubを利用すると、自動的にファイルをダウンロードしてくれます。
huggingface_hubをインストールできたら、次のコードを実行します。

from huggingface_hub import snapshot_download
 
snapshot_download(
    repo_id="radames/stable-diffusion-depth2img",
    repo_type="space",
    revision="main",
    cache_dir="./")

上記コードを実行すると、ダウンロード処理が開始されます。
ダウンロードは、そこそこ時間がかかります。

処理が完了すると、ディレクトリ上に「spaces–radames–stable-diffusion-depth2img」を確認できます。

そして、「snapshots」以下にあるファイル・ディレクトリをコピーします。

「a5105035f51a481e65f1fa05117b72f3a1cb8c60」は、リポジトリのバージョンです。
バージョンが更新されれば、この値も変わってきます。

この長たらしいディレクトリより下のモノをコピーしましょう。
コピーしたファイルは、コンテンツルートに保存します。

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

コンテンツルートには、コピーしたrequirements.txtが存在しています。

requirements.txt

gradio
--extra-index-url https://download.pytorch.org/whl/cu113  
torch 
torchvision 
numpy
python-dotenv
invisible-watermark
timm
opencv-python
pudb==2019.2
imageio==2.9.0
imageio-ffmpeg==0.4.2
pytorch-lightning==1.4.2
torchmetrics==0.6
omegaconf==2.1.1
test-tube>=0.7.5
einops==0.3.0
transformers==4.19.2
webdataset==0.2.5
albumentations==1.3.0
streamlit==1.12.1
kornia==0.6
open_clip_torch==2.0.2
streamlit-drawable-canvas==0.8.0
# -e ./stablediffusion

このファイルから、PyTorch関連を取り除きます。
コメントにしてもOKです。

#--extra-index-url https://download.pytorch.org/whl/cu113  
#torch 
#torchvision 

変更後のrequirements.txtを利用して、必要なモノを一気にインストールします。
実行するのは、次のコマンドです。

pip install -r requirements.txt

処理完了までは、しばらく時間がかかります。
処理が完了したら、depth2img GUIツールのインストールは終了です。

以上、depth2img GUIのインストールを説明しました。
次は、depth2img GUIの設定を説明します。

depth2img GUIツールの設定

depth2img GUIツールの設定を行います。
設定を行うには、app.pyを確認します。

app.py

from os import system
system('git clone https://huggingface.co/stabilityai/stable-diffusion-2-depth && cd stable-diffusion-2-depth && git lfs fetch && git lfs pull')
system('pip install -e stablediffusion')
system('curl -LJ https://github.com/isl-org/DPT/releases/download/1_0/dpt_hybrid-midas-501f0c75.pt --create-dirs -o stablediffusion/midas_models/dpt_hybrid-midas-501f0c75.pt')
system('curl -LJ https://github.com/isl-org/DPT/releases/download/1_0/dpt_large-midas-2f21e586.pt --create-dirs -o stablediffusion/midas_models/dpt_large-midas-2f21e586.pt')
system('cd stablediffusion && python scripts/gradio/depth2img.py  configs/stable-diffusion/v2-midas-inference.yaml ../stable-diffusion-2-depth/512-depth-ema.ckpt')

ゴチャゴチャと書いていますが、やっていることは以下。

  • ファイルのダウンロード・保存
  • インストールの実行
  • プログラムの実行

プログラムの実行以外は、事前に処理可能です。
むしろ、それらをapp.pyに記述するのは好ましくないと言えます。

よって、app.pyは次のように変更しておきます。

from os import system
system('cd stablediffusion && python scripts/gradio/depth2img.py  configs/stable-diffusion/v2-midas-inference.yaml ../stable-diffusion-2-depth/512-depth-ema.ckpt')

では、事前にできることはやっておきましょう。

ファイルのダウンロード・保存

まず、ファイルを保存先ディレクトリの作成です。
コマンド実行の場所は、コンテンツルートになります。

mkdir stable-diffusion-2-depth
mkdir stablediffusion/midas_models

ダウンロードするファイルは、全部で3つです。
1つは、次のURLからダウンロードできます。
https://huggingface.co/stabilityai/stable-diffusion-2-depth/tree/main

残りは、次のURLよりダウンロードします。
https://github.com/isl-org/DPT/releases/

すべてダウンロードできたら、それぞれを次の場所に保存します。

インストールの実行

pip install -e stablediffusion

エラーが出ずに終了すれば、OKです。

以上、depth2img GUIツールの設定を説明しました。
最後に、depth2img GUIツールの動作確認を説明します。

depth2img GUIツールの動作確認

depth2img GUIツールの動作確認を行います。
修正したapp.pyを実行します。

初回時は、いろいろとダウンロードが始まります。
最後に、次のように表示されれば起動成功と言えます。

Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.

なお、xFormersが未インストールだと起動の途中で次のように表示されます。

No module 'xformers'. Proceeding without it.

では、Chromeなどのブラウザで「http://127.0.0.1:7860」にアクセスします。
Hugging Face上のデモと同じ画面が確認できますね。

実際に動かしてみましょう。
ここでは、次の画像を利用します。

次のプロンプトで犬を猫に変えてみましょう。

a photograph of  a cat

結果は、次のようになりました。

猫に変わりました。
でも、川じゃなくなりました。

そこで、プロンプトを次のように変更。

a photograph of  a cat in the river

変更した結果、川の中にいる猫になりました。

プロンプトにより、ある程度の調整も可能だということですね。

以上、depth2img GUIツールの動作確認を説明しました。

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