「プロンプトのテキスト編集だけで画像を編集したい」
「ローカル環境でPrompt-to-Promptを試してみたい」
このような場合には、Prompt-to-Prompt(Stable Diffusion版)がオススメです。
この記事では、Prompt-to-Prompt(Stable Diffusion版)について解説しています。
本記事の内容
- Prompt-to-Prompt(Stable Diffusion版)とは?
- Prompt-to-Prompt(Stable Diffusion版)のシステム要件
- Prompt-to-Prompt(Stable Diffusion版)のインストール
- Prompt-to-Prompt(Stable Diffusion版)の動作確認
それでは、上記に沿って解説していきます。
Prompt-to-Prompt(Stable Diffusion版)とは?
Prompt-to-Promptは、Googleが開発した技術です。
Prompt-to-Promptを用いれば、プロンプトだけで生成された画像を編集することが可能になります。
Prompt-to-Prompt Image Editing with Cross-Attention Control
https://prompt-to-prompt.github.io/
上記ページでそれを確認できるデモが用意されています。
上記の帽子を被った猫の画像は、次のプロンプトで作成されているとします。
A cat with a hat is lying on a beach chair.
この場合、「cat」を「turtle」にプロンプトを変更すると次のような画像が表示されます。
猫はそのままで、帽子だけを変更することも可能です。
「pirates」という形容詞をプロンプトに追加すると次の画像のようになります。
もちろん、「turtle」が「pirates」な帽子を被ることもできます。
このようなことが、Prompt-to-Promptによって可能になります。
ただ、上記デモはImagen(Googleの開発したテキストから画像を生成するAI)が利用されています。
ImagenとPrompt-to-Promptを組み合わせているということです。
Imagen: Text-to-Image Diffusion Models
https://imagen.research.google/
Imagenは未公開の技術です。
そのため、上記デモのソースがそのまま公開されているわけではありません。
その代わりに、GoogleはStable DiffusionでPrompt-to-Promptが動くようにしています。
そして、そのソースをGitHub上で公開しているのです。
GitHub – google/prompt-to-prompt
https://github.com/google/prompt-to-prompt
機能としては、猫のデモのように楽しいモノではありません。
でも、Prompt-to-Promptが何たるかを知るには十分なだけの機能が用意されています。
この記事では、上記リポジトリのことをPrompt-to-Prompt(Stable Diffusion版)と表現しています。
以上、Prompt-to-Prompt(Stable Diffusion版)について説明しました。
次は、Prompt-to-Prompt(Stable Diffusion版)のシステム要件を説明します。
Prompt-to-Prompt(Stable Diffusion版)のシステム要件
Prompt-to-Prompの開発は、次の要件で行われています。
- Python 3.8
- PyTorch 1.11
PyTorchは、GPU版PyTorchが必須です。
GPU版PyTorchのインストールについては、次の記事で解説しています。
必須となっているGPUですが、そのメモリもそこそこ容量が必要になります。
「12GB VRAM」以上は必要だろうということです。
GPUメモリの確認には、次のコマンドが利用できます。
nvidia-smi --query-gpu=name,memory.total,memory.free --format=csv,noheader
Windowsなら、コマンドプロンプトかPowerShellのどちらでもOKです。
確認用のコマンドを実行すると、次のように表示されます。
> nvidia-smi --query-gpu=name,memory.total,memory.free --format=csv,noheader NVIDIA GeForce RTX 3090, 24576 MiB, 23426 MiB
ここで表示される値が、12GB以上であることが必要ということです。
あと、ipynbファイルを動かせる必要があります。
ipynbファイルは、次の環境で動かすことが可能です。
- Jupyter Notebook
- JupyterLab
個人的には、JupyterLabをオススメします。
JupyterLabについては、次の記事で説明しています。
まとめると、以下は事前にインストールしておきましょう。
- GPU版PyTorch
- JupyterLab
なお、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月 |
以上、Prompt-to-Promptのシステム要件を説明しました。
次は、Prompt-to-Promptのインストールを説明します。
Prompt-to-Promptのインストール
Prompt-to-Promptのインストールは、Python仮想環境の利用をオススメします。
Python仮想環境は、次の記事で解説しています。
検証は、次のバージョンのPythonで行います。
> python -V Python 3.10.4
そして、システム要件としてGPU版PyTorchとJupyterLabをインストール済という状況です。
このような状況において、Prompt-to-Promptのインストールを進めます。
まずは、GitHubからリポジトリをクローンします。
git clone https://github.com/google/prompt-to-prompt.git
クローンできたら、リポジトリルートに移動です。
cd prompt-to-prompt
リポジトリルートでは、次のファイルを確認できます。
requirements.txt
diffusers==0.3.0 transformers ftfy opencv-python ipywidgets
このファイルを用いて、必要なモノを一気にインストールします。
pip install -r requirements.txt
以上、Prompt-to-Promptのインストールを説明しました。
次は、Prompt-to-Promptの動作確認を説明します。
Prompt-to-Promptの動作確認
Prompt-to-Promptの動作確認を行います。
その際、Hugging FaceのAccess Token(アクセストークン)を必要となります。
このAccess Tokenについて、よくわからない場合は次の記事が参考になります。
「Access Token(アクセストークン)の取得」という箇所をご覧ください。
では、手元にAccess Tokenがある前提で進めます。
まずは、次のコマンドをリポジトリルートにおいて実行します。
jupyter lab
そうすると、JupyterLabが起動します。
「prompt-to-prompt_stable.ipynb」を開きます。
ダブルクリックでもOK。
ファイルが開きます。
ファイルの実行には、「実行」ボタンをクリックします。
JupyterLabの使い方は、次の記事で説明しています。
実行していくと、途中でエラーが出ます。
これは、Access Tokenが設定されていないから発生するエラーです。
コピーしたHugging FaceのAccess Tokenを設定します。
設定して、再度実行します。
初回であれば、モデルのダウンロードが延々と行われます。
その後も、実行を繰り返していきます。
おそらく、次の部分でしばらく待たされます。
処理が完了して、次のリスの画像が表示されましたか?
この画像が確認できれば、Prompt-to-Promptが正常に動いていると言えます。
あとは、他の処理を確認したい場合は実行を続けてください。
以上、Prompt-to-Promptの動作確認を説明しました。