Stable Diffusionをインストールしてお絵かきする

中2 S.K.

はじめに

物理部中2のPC班員です。中3から部誌を書こうと思っていましたが、ちょうどいいネタが転がり込んできたので書くことにしました。

使うライブラリのインストール

今回使うStable Diffusionは最近オープンソース化され、商用利用も可能という素晴らしいライブラリです。 PCの推奨スペックはVRAM10G以上のnvidiaのGPUで、今回はRTX3060というGPUを使っていきます。

リポジトリにアクセスするためのトークンを作る

まずここにアクセスして右上のSign Upからアカウントを作成し、次にここにアクセスしてAccess repositoryをクリックした後、サイト右上のアカウントアイコンをクリックしてSettingsから左のAccess Tokensからトークンを作成する。このトークンが後で必要になるのでメモしておく。

CreateTokens

必要なソフトとライブラリ

Python

まずは今回のコードを書くためにプログラミング言語のPythonをインストールする。 Python公式サイトからpythonのインストーラーをダウンロードしてインストールする。インストール時にPythonをパスに追加するオプションを選択するのを忘れずに。

Python{width=400}

ドライバ

Driver{width=400}

今回はAIの演算にCUDAというnvidia製のグラフィックボードについているものを使うので、ここからドライバを手に入れてインストールする。

CUDA Toolkit

ここからダウンロードしてインストールする。 そしてコマンドプロンプトでnvcc -Vを実行して正常にインストールされているかを確認する。 このときreleaseの後にある数字をメモしておく。

cuDNN

ここからダウンロードして解凍したbinフォルダにパスを通す。 この時、ダウンロードにnvidiaデベロッパーアカウントが必要なので作成する。

PyTorch

ここからPyTorchをインストールするためのコマンドを生成する。

  • PyTorch Build: Stable
  • Your OS:使用しているコンピュータのOSを選択
  • Package:Pip
  • Language:Python
  • Compute Platform:先ほどメモしたReleaseの数字に合うものを選択 その後、生成されたコマンド(Run this Commandにある文字列)を実行してPyTorchをインストールする。 インストール後、以下のコマンドでPyTorchからGPUが使用可能かを試す。Trueになれば使用可能。
1
2
3
4
5
6
7
PS C:\Users\hoge> python
Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug  1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch #時間がかかるので注意
>>> torch.cuda.is_available()
True
>>>

その他

ライブラリを使用するためのライブラリをインストールする。コマンドプロンプトで pip install diffusers==0.2.4 transformers scipy ftfy を実行する。

生成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import torch
from torch import autocast
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained(
        "CompVis/stable-diffusion-v1-4",
        revision="fp16",
        torch_dtype=torch.float16,
        use_auth_token="ここにさっき作成したトークンを入力"
    )
pipe = pipe.to("cuda")
prompt = input("prompt:")
pipe.safety_checker = lambda images, **kwargs: (images, False)

with autocast("cuda"):
    image = pipe(prompt)["sample"][0]
image.save(f"{prompt}.png")

以上のコマンドをpythonで実行することで実行したディレクトリに画像が生成される。

生成したお気に入りの画像たち

参考文献

https://huggingface.co

https://zenn.dev/ryu2021/articles/3d5737408b06fe

https://twitter.com/kawai_nae/status/1561843126842851328

次へプラレールの改造について>
前へ部長挨拶>