「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.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月 |
3.11 | 2022年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ツールの動作確認を説明しました。