0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

備忘録カレンダーAdvent Calendar 2024

Day 8

Stable Diffusionをpythonで動かしたい

Last updated at Posted at 2024-12-24

はじめに

本記事では、Stable DiffusionをPythonのスクリプトで実行することを目的とする。

アカウントを作成する

アカウントを登録するときに、「[Hugging Face] Click this link to confirm your email address」という題のメールが届いているのでそちらを確認する必要がある。

トークン発行

[Settings]をクリックする。

画像1.png

[Access Tokens]をクリックする。

画像2.png

[New token]をクリックする。

画像3.png

[Name]に任意の文字列を記入する。

画像4.png

アクセストークンをコピーして控えておく。

画像5.png

仮想環境の構築

Pythonの独立した環境を作成したい場合は仮想環境を構築されたい。

仮想環境 venv を構築する。

python -m venv venv

仮想環境を有効にする

venv\Scripts\activate

マシンの構成確認

実行環境に CUDA ( NVIDIA 社のGPUプログラム開発環境) があるか否かでプログラムの一部が異なる。次のコマンドで確認せよ。

wmic path win32_videocontroller get caption

次に2つの実行例を示す。

実行例A: NVIDIA 製の GPU 搭載の場合

$ wmic path win32_videocontroller get caption
Caption
NVIDIA GeForce GTX 1080

実行例B: CPU 内蔵 GPU の場合

$ wmic path win32_videocontroller get caption
Caption
Intel(R) UHD Graphics 620

パッケージのインストール

まずは、深層学習のライブラリとしてPyTorchもしくはFlaxのうちどちらかをインストールする必要がある。この記事では、PyTorchの場合のみについて示す。

参考程度にFlaxの場合は次のコマンドでインストールされたい。

pip install diffusers["flax"] transformers

公式サイト にあった次のコマンドでインストールしていく。

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

次のコマンドで数値(バージョンを示す)が返されれば成功している。

python -c "import torch; print(torch.version.cuda)"

次に HuggingFace が開発しているライブラリ Diffusers をインストールする。深層学習のライブラリ(PyTorch/Flax)によってコマンドが違うので注意せよ。

  • PyTorchの場合
pip install diffusers["torch"] transformers

プログラム

実行例

test.py
import torch
from torch import autocast
from diffusers import StableDiffusionPipeline

access_token = トークン

# モデルのダウンロード
model = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=access_token)
model.to("cpu")

# import matplotlib.pyplot as plt

num = 3 # 生成したい画像枚数
prompt = "Horse flying in the sky" # 生成させたいもととなる文章
 

# モデルの出力構造を確認
output_structure = model(prompt)

# 出力構造を表示
print(output_structure)

for i in range(num):
    # image = model(prompt)["sample"][0]
    image = output_structure.images[0]

    # 保存
    image.save(f"outputs/{i}.png")

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?