生成AI「Stable Diffusion」を動かしてみよう!

生成AIである「Statble Diffusion」をローカルマシン(Ubuntu)で動かす方法を解説します

images/cards/robot-gc5c0b80fa_1280.webp

目次

1. Stable Diffusion とは?

Stable Diffusion は、2022 年に公開されたディープラーニングの text-to-image モデルです。主に、テキスト入力に基づく画像生成に使用されますが、他にもインペインティング、アウトペインティング等にも使用されます。

2. 開発環境の確認

  • OS:Ubuntu 20.04
  • Python: 3.8.10
  • CUDA Version: 11.5

3. リポジトリと学習済パラメータのダウンロード

まずは、stable-diffusion のリポジトリ(https://github.com/CompVis/stable-diffusion)をクローンします。 次に、Hugging Face のページCompVis/stable-diffusion-v-1-4-originalから、 「sd-v1-4.ckpt」をダウンロードしておきます。これを「stable-diffusion」フォルダ直下に移動させておきます。

git clone https://github.com/CompVis/stable-diffusion
cd stable-diffusion
wget https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt

4. ソースコードの修正

最新のパッケージに合わせて、一部ソースコードを修正します。

ldm/models/diffusion/ddpm.py

- from pytorch_lightning.utilities.distributed import rank_zero_only
+ from pytorch_lightning.utilities.rank_zero import rank_zero_only

5. 各種パッケージのインストール

pip install torch==1.12.1 torchvision==0.13.1
pip install omegaconf tqdm einops transformers diffusers invisible-watermark pytorch_lightning taming-transformers taming-transformers-rom1504 clip kornia
pip install -e .

pip list の結果は、以下のようになります。

Package                     Version  Editable project location
--------------------------- -------- ------------------------------------
aiohttp                     3.8.4
aiosignal                   1.3.1
antlr4-python3-runtime      4.9.3
async-timeout               4.0.2
attrs                       23.1.0
certifi                     2023.5.7
charset-normalizer          3.1.0
clip                        0.2.0
coloredlogs                 15.0.1
diffusers                   0.17.1
einops                      0.6.1
filelock                    3.12.2
flatbuffers                 23.5.26
frozenlist                  1.3.3
fsspec                      2023.6.0
huggingface-hub             0.16.2
humanfriendly               10.0
idna                        3.4
imhist                      0.0.4
importlib-metadata          6.7.0
imWatermark                 0.0.2
invisible-watermark         0.1.5
kornia                      0.6.12
latent-diffusion            0.0.1    /home/xxx/Projects/stable-diffusion
lightning-utilities         0.9.0
mpmath                      1.3.0
multidict                   6.0.4
numpy                       1.24.4
omegaconf                   2.3.0
onnx                        1.14.0
onnxruntime                 1.15.1
opencv-python               4.8.0.74
packaging                   23.1
Pillow                      10.0.0
pip                         23.1.2
protobuf                    4.23.3
pytorch-lightning           2.0.4
PyWavelets                  1.4.1
PyYAML                      6.0
regex                       2023.6.3
requests                    2.31.0
safetensors                 0.3.1
setuptools                  67.8.0
six                         1.16.0
sympy                       1.12
taming-transformers         0.0.1
taming-transformers-rom1504 0.0.6
tokenizers                  0.12.1
torch                       1.12.1
torchmetrics                1.0.0
torchvision                 0.13.1
tqdm                        4.65.0
transformers                4.30.2
typing_extensions           4.7.1
urllib3                     2.0.3
wheel                       0.40.0
yarl                        1.9.2
zipp                        3.15.0

6. 動かしてみましょう!

「outputs/txt2img-samples」以下に、プロンプトから生成された画像が格納されます。

python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms --ckpt sd-v1-4.ckpt --n_samples 1

参考

関連記事