画像生成AI「Stable Diffusion」を自分のPCで動かして遊んだときのメモ

イラストが無料で生成できる時代になったのか……。

どうも、ふぁいんです。

今回は、今、話題の画像生成AI「Stable Diffusion」を自分のPC上で動かすべく、動作環境をつくってみたよというお話です。

Stable Diffusion とは

Stable Diffusionは、イギリスのスタートアップ企業「Stability AI」が現地時間8月22日に公開した画像生成AIです。

同じような存在としては、Discord上で画像生成ができる「Midjourney」が有名ですね。

Stable Diffusionの特徴は、オープンソース化されているというところ。「オープンソース」とは、簡単に言えば、「みんなで開発できるように設計図を公開したぜ」という状態で、誰でもダウンロードして使用できるため、新しいものが大好きな人たちが、自分も試してみようと盛り上がっています。

しかも、生成した画像は商用含めて利用OKであり、自分のPC上で動作環境をつくれば利用料金もかからないということで、興味本位でふぁいんさんも導入してみました。今回の記事は、そのときのメモです。

本来は個人的に書いていたものですが、意外とちゃんとしたメモになったので、公開することにした次第です。ただ、とはいえメモはメモなので、テキストのみになってしまいますことをご了承ください。

それでも手順通りに実行すれば、ゼロから環境構築ができますので、参考にしてみていただければと思います。

環境情報

今回、ふぁいんさんはWindows PC上で動作環境を構築しました。参考までに、簡単な私のPCスペックです。

OS:Windows 10

グラフィックボード:NVIDIA GeForce RTX 3070 8GB

CPU:AMD Ryzen 7 5800X

メモリ:16GB(DDR4)

今回、必須となるのはNVIDIA製のグラフィックボードになります。こちらを使用して画像を生成するため、この部分のスペックが高ければ高いほど、処理速度は速くなると考えられます。

ちなみにRTX3070 8GBの場合は、512×512の画像を1枚生成するのに、生成開始から8秒かかりました。

また、ソフトウェアとしては、以下を使用しています。

Python 3.9.13

CUDA 11.6.2

PyTorch 1.12.1

Tranceformers 4.21.2

Diffusers 0.2.4

それぞれどういうソフトウェアなのかは割愛しますが、「とりあえず動かすのに必要らしい」と思っておいてください。

(正直ふぁいんさんも、この分野は詳しくないので解説まではできないのです……)

Stable Diffusion環境構築メモ

それではいよいよメモを公開いたします。

前述したとおり、キャプチャを用意していないので文章のみとなりますが、各フェーズで参考にさせていただいたページへのリンクをはっておきますので、画像付で詳しく見たい方はそちらでご参照ください。

手順1:Pthonのインストール

※参考ページはこちら

1.Pythonのページを開く
https://www.python.org/

2.公式ページのメニューから、[Download]-[Windows]を選択する

3.「Python 3.9.13 – May 17, 2022」をクリックする

4.ページ下部の「Files」より、「Windows installer (64-bit)」をクリックしてインストーラをダウンロードする
⇒今回は、Cドライブ直下に以下フォルダを作成してインストーラを配置

【フォルダ】
C:\Python39

【インストーラ】
python-3.9.13-amd64.exe

5.インストーラをダブルクリックで実行する

6.ポップアップ下部にある「Add Python 3.0 to PATH」にチェックを入れる

7.「Install Now」をクリックする

8.デバイス変更の許可は「Yes」をクリックする

9.「Setup was successful」が表示され、インストールが完了したら、「Close」をクリックしてインストーラを終了する

10.画面右下のWindowsアイコンを右クリックして「検索」を選択する

11.「cmd」と入力してコマンドプロンプトを起動する

12.コマンドプロンプト上で以下コマンドを実行する

python --version

13.「Python 3.9.13」と表示されることを確認する

手順2:Python仮想環境の構築

※参考ページはこちら

1.コマンドプロンプトで以下コマンドを実行し、最初につくった「Python39」フォルダに移動する

cd C:\Python39

2.フォルダ配下に仮想環境用フォルダ「ve01」を作成する(フォルダ名はなんでもよい)

python -m venv ve01

3.作成したフォルダを確認する

dir ve01

【結果】

C:\Python39\ve01 のディレクトリ
2022/08/27 16:18 .
2022/08/27 16:18 ..
2022/08/27 16:18 Include
2022/08/27 16:18 Lib
2022/08/27 16:18 118 pyvenv.cfg
2022/08/27 16:18 Scripts
1 個のファイル 118 バイト
5 個のディレクトリ 404,868,009,984 バイトの空き領域

4.仮想環境を起動する

.\ve01\Scripts\activate.bat

⇒プロンプトが「(ve01) C:\Python39>」という表示に変われば起動している

5.仮想環境の終了ができることも確認する

.\ve01\Scripts\deactivate.bat

⇒プロンプトの(ve01)という表示がなくなればOK

手順3:CUDAのインストール

※参考ページはこちら

1.CUDA公式のアーカイブページにアクセスする
https://developer.nvidia.com/cuda-toolkit-archive

2.「CUDA Toolkit 11.6.2」をクリックする

3.「Select Target Platform」にて、以下のように選択する

 Operationg System:Windows
 Architecture:x86_64
 Version:10
 Installer Type:exe [network]

4.「Base Installer」が表示されるので、「Download」をクリックしてインストーラを保存する

5.保存した「cuda_11.6.2_windows_network.exe」をダブルクリックして実行する

6.「CUDA Setup Package」画面が表示されたら、そのまま「OK」をクリックする

7.NVIDIAインストーラーが起動したら、システムチェックが走るので待機する

8.「使用許諾契約書」の画面になったら、「同意して続行する」をクリックする

9.「インストールオプション」は、「カスタム」にチェックを入れ、「次へ」をクリックする

10.「カスタムインストールオプション」で、CUDA以外のチェックを外し、「次へ」をクリックする

11.「インストール場所の選択」では、そのまま「次へ」をクリックする

12.「CUDA Visual Studio Integration」では、「I understand,~」にチェックを入れ、「次へ」をクリックする

13.インストールが開始されるので待機する

14.「Nsight Visual Studio Edition Summary」が表示されたら、「次へ」をクリックする

15.「NVIDIAインストーラーが終了しました」が表示されたら、「閉じる」をクリックして終了する

16.デスクトップ画面左下のWindowsアイコンを右クリックし、「システム」を選択する

17.左メニューより、「詳細情報」を選択する

18.下部にある「関連設定」より、「システムの詳細設定」をクリックする

19.「環境変数」をクリックする

20.「システム環境変数」に、「CUDA_PATH」、「CUDA_PATH_V11_6」が存在し、値が以下のとおりであることを確認する

 CUDA_PATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6
 CUDA_PATH_V11_6:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6

手順4:PyTorchのインストール

※参考ページはこちら

1.PyTorch公式ページにアクセスする
https://pytorch.org/

2.「Install >」をクリックする

3.「START LOCALLY」にて、使用する環境を選択する

 PyTorch Build:Stable(1.12.1)
 Your OS:Windows
 Package:pip
 Language:Python
 Compute Platform:CUDA 11.6

4.「Run this Command:」欄に表示されたコマンドをコピーする

【コピーしたコマンド】

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

5.コマンドプロンプトを起動する(すでに起動している場合は不要)

6.「Python39」フォルダに移動する(すでに移動している場合は不要)

cd C:\Python39

7.仮想環境を起動する

.\ve01\Scripts\activate.bat

8.以下コマンドを実行してパッケージを確認する

pip list

⇒「pip」および「setuptools」が表示されることを確認する

9.「pip」および「setuptools」の最新化を行う

python -m pip install --upgrade pip setuptools

⇒「Successfully installed ~」が表示されればOK

10.上記「4」でコピーしたコマンドを使用して、PyTorchをインストールする

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

11.再度以下コマンドを実行して、インストールしたパッケージが増えたことを確認する

pip list

【結果】

Package      Version
------------------ ------------
certifi 2022.6.15
charset-normalizer 2.1.1
idna 3.3
numpy 1.23.2
Pillow 9.2.0
pip 22.2.2
requests 2.28.1
setuptools 65.3.0
torch 1.12.1+cu116
torchaudio 0.12.1+cu116
torchvision 0.13.1+cu116
typing_extensions 4.3.0
urllib3 1.26.12

手順5:Transformersのインストール

※参考ページはこちら
1.以下コマンドを実行して、Transformersをインストールする

pip install transformers

2.以下コマンドを実行して、インストールしたパッケージが増えたことを確認する

pip list

【結果】

Package      Version
------------------ ------------
certifi 2022.6.15
charset-normalizer 2.1.1
colorama 0.4.5
filelock 3.8.0
huggingface-hub 0.9.1
idna 3.3
numpy 1.23.2
packaging 21.3
Pillow 9.2.0
pip 22.2.2
pyparsing 3.0.9
PyYAML 6.0
regex 2022.8.17
requests 2.28.1
setuptools 65.3.0
tokenizers 0.12.1
torch 1.12.1+cu116
torchaudio 0.12.1+cu116
torchvision 0.13.1+cu116
tqdm 4.64.0
transformers 4.21.2
typing_extensions 4.3.0
urllib3 1.26.12

手順6:Diffusersのインストール

○参考ページはこちら

1.以下コマンドを実行して、Diffusersをインストールする

pip install diffusers

2.以下コマンドを実行して、インストールしたパッケージが増えたことを確認する

pip list

【結果】

Package      Version
------------------ ------------
certifi 2022.6.15
charset-normalizer 2.1.1
colorama 0.4.5
diffusers 0.2.4
filelock 3.8.0
huggingface-hub 0.9.1
idna 3.3
importlib-metadata 4.12.0
numpy 1.23.2
packaging 21.3
Pillow 9.2.0
pip 22.2.2
pyparsing 3.0.9
PyYAML 6.0
regex 2022.8.17
requests 2.28.1
setuptools 65.3.0
tokenizers 0.12.1
torch 1.12.1+cu116
torchaudio 0.12.1+cu116
torchvision 0.13.1+cu116
tqdm 4.64.0
transformers 4.21.2
typing_extensions 4.3.0
urllib3 1.26.12
zipp 3.8.1

手順7:Stable Diffusion学習モデルの準備

※参考ページはこちら

1.以下ページにアクセスする
https://huggingface.co/join

2.Hugging Faceアカウント用のメールアドレスとパスワードを入力する(すでにアカウントがある場合は不要)
 メール:自分のメールアドレス
 パスワード:12桁以上、記号ありのパスワード

3.UsernameとFull nameを入力し、チェックを入れてアカウントを作成する

4.入力したアドレス宛に、アドレス確認のメールが届くため、メール内リンクをクリックする

5.メール認証が完了し、ログインできたら、以下ページにアクセスする
https://huggingface.co/CompVis/stable-diffusion-v1-4

6.「You need to share your contact information to access this model.」の「I have read the License and agree with its terms」にチェックを入れて、「Access repository」をクリックする

7.以下ページにアクセスする
https://huggingface.co/settings/tokens

8.「New token」をクリックする

9.以下のように入力して、「Generate a token」をクリックする
 Name:StableDiffusion (名前はなんでもよい)
 Role:read

10.トークンが生成されるので、コピーする

手順8:Stable Diffusionの使用

※参考ページは手順7と同じページです

1.メモ帳等のテキストエディタを開き、以下の動作用コードを貼り付ける

import torch
from diffusers import StableDiffusionPipeline
from torch import autocast

MODEL_ID = "CompVis/stable-diffusion-v1-4"
DEVICE = "cuda"
YOUR_TOKEN = "[手順7の「10」で生成したトークンを貼付]"
PROMPT_WORD = input("生成したい画像条件を英語で入力してください:")
IMAGE_NAME = input("画像ファイル名を入力してください:") + ".png"

pipe = StableDiffusionPipeline.from_pretrained(MODEL_ID, revision="fp16",
torch_dtype=torch.float16, use_auth_token=YOUR_TOKEN)
pipe.to(DEVICE)

prompt = PROMPT_WORD

with autocast(DEVICE):
  image = pipe(prompt, guidance_scale=7.5)["sample"][0]
  image.save(IMAGE_NAME)

2.上記テキストファイルを「C:\Python39」配下に、「.py」形式で保存する
【例】
make_image.py (名前はなんでもよい)

3.コマンドプロンプトを管理者権限で起動する
⇒「検索」欄に「cmd」と入力し、一覧にコマンドプロンプトが出てきたら右クリックして「管理者として実行」をクリックする

4.仮想環境を起動する

cd C:\Python39
.\ve01\Scripts\activate.bat

5.以下を入力して、先ほど作成した「.py」ファイル(動作用コード)を実行する

python .\make_image.py

6.「生成したい画像条件を英語で入力してください:」が表示されたら、生成画像の要素となる条件を英語で入力する

【例】
a photograph of an astronaut riding a horse

7.「画像ファイル名を入力してください:」が表示されたら、生成する画像ファイルのファイル名を入力する

【例】
test

8.処理が終わると、「C:\Python39」配下に、先ほど指定したファイル名で画像が生成されている

おまけ:動作用コードのアレンジ「同じ条件で複数枚画像を生成する」

一度環境を構築してしまえば、手順8の「3」~「7」を実行することでいつでもStable Diffusionによる画像生成ができるようになりますし、もっと言えば、一度仮想環境を起動すれば、終了させるまで、「5」~「7」の繰り返しで、様々な条件での生成が可能になります。

ただ、Stable DiffusionはあくまでAI。1回の画像生成で、イメージ通りの画像が生成できるかどうかは分かりません。指定する条件を変えた場合はもちろん、同じ条件を指定した場合でも、実行する度に違う画像が生成されますので、気に入る画像が生成されるまで、何度も何度も生成することになると思います。

その場合、いちいち手順8の「5」のコマンドを入力して、条件を指定して、画像ファイル名を指定して……とやるのは面倒ですよね。

そこで、動作用コードのアレンジです。要するにPythonによるプログラミング部分なのですが、今回はシンプルに、同じ条件で10枚の画像を生成するコードに変えてみた場合どうなるかを記載しておきます。

「.py」ファイルを再度テキストエディタで開き、以下コードにすることで繰り返す仕様になりますので、参考にしてみてください。

【アレンジコード】

import torch
from diffusers import StableDiffusionPipeline
from torch import autocast

MODEL_ID = "CompVis/stable-diffusion-v1-4"
DEVICE = "cuda"
YOUR_TOKEN = "[手順7の「10」で生成したトークンを貼付]"
PROMPT_WORD = input("生成したい画像条件を英語で入力してください:")
IMAGE_NAME = input("画像ファイル名を入力してください(末尾に番号がつきます):")
IMAGE_NUM = 1

for i in range(10):

	pipe = StableDiffusionPipeline.from_pretrained(MODEL_ID, revision="fp16", torch_dtype=torch.float16, use_auth_token=YOUR_TOKEN)
	pipe.to(DEVICE)

	prompt = PROMPT_WORD

	with autocast(DEVICE):
	  image = pipe(prompt, height=512, width=512)["sample"][0]
	  image.save(IMAGE_NAME + "_" + str(IMAGE_NUM) + ".png")
	  
	IMAGE_NUM += 1

for文で単純に処理を繰り返して、繰り返す度にファイル名の末尾の数字を増やしていくだけの簡単な仕様です。

range(10) と記載されているところを、例えば range(20) に変えれば、20回繰り返すようになります。

ふぁいんさんはプログラマーではないのでこの程度しかできませんが、Pythonを勉強すればもっと違うこともできるようになるかもしれませんので、色々やりたい方は、これを機に勉強してみるのも良いかもしれませんね。

※注意
今回の場合、Cドライブ直下に画像が生成されていきますので、一気に大量の画像を生成すると、Cドライブを圧迫し、PCの動作に影響を及ぼす可能性があります。やりすぎには注意してください。

生成画像例

というわけで、Stable Diffusionの動作環境構築でしたが、最後に、例として、いくつか生成した画像を、その生成条件(prompt)とともに記載しておきます。このあたりは検索するとたくさん出てきますので、美麗な画像を生成している方のpromptなどを参考にすると、よりよい画像が生成できるかもしれませんね。

指定条件を工夫して、ベストな1枚探しを楽しんでください!

なお、傾向としては、写真風の画像は得意ですが、イラストはまだまだ発展途上な感じですね。

例1:秋の京都

【指定条件】
Autumn leaves, Autumn in Japan, Kyoto, Dusk, Landscape photo

【指定条件(翻訳前)】
紅葉、秋の日本、京都、夕暮れ、風景写真

例2:月夜と猫(和風)

【指定条件】
Crescent moon, shoji screens, night sky, black cat, Japan

【指定条件(翻訳前)】
三日月、障子、夜空、黒猫、日本

例3:二次元女子イラスト

【指定条件】
Girls, fantasy, Japanese anime, illustrations, games

【指定条件(翻訳前)】
女の子、ファンタジー、日本のアニメ、イラスト、ゲーム

以上です。

それでは、新技術を楽しんでください。

コメント

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