Closed8

Stable Diffusionで遊ぶ

YuheiNakasakaYuheiNakasaka

動かすまでの流れとしては下記。

  1. Google Colaboratoryのセットアップ
  2. HuggingFaceの登録
  3. 環境構築 & 実行
YuheiNakasakaYuheiNakasaka

1. Google Colaboratoryのセットアップ

GoogleのアカウントがあればOK。あとは下記にアクセスできれば問題ない。
https://colab.research.google.com/

GPUを使いたいので[編集] -> [ノートブックの設定] -> [ハードウェア アクセラレータ]からGPUを選択して保存する。

これでColab側の設定は終わり。

YuheiNakasakaYuheiNakasaka

2. HuggingFaceの登録

AI用のモデルを使用するのだけど、これにはHuggingFaceというコミュニティサイトへの登録が必要になる。あとで認証を行うときに使うのでアカウントを作成しておく。
https://huggingface.co/

YuheiNakasakaYuheiNakasaka

3. 環境構築

Colabの方で適当に新規ノートブックを作成する。ここでツールの実行や画像の保存など全ての作業を行うことになる。

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

まずはpipを使ってライブラリをインストールする。diffusersは公式のものを使うべきだが、自分は色々とゴニョゴニョしてみたかったのでforkした改変版を使っている。

!pip install git+https://github.com/YuheiNakasaka/diffusers
!pip install transformers scipy ftfy
!pip install "ipywidgets>=7,<8"

HuggingFaceの認証

外部サイトでの認証を行う。

from google.colab import output
output.enable_custom_widget_manager()

下記を実行するとHuggingFaceへ飛ぶリンクが表示される。そこでトークンを作成してColab側のフォームに入力する。

from huggingface_hub import notebook_login

notebook_login()

画像用のディレクトリを作成

!mkdir outputs

パイプラインのセットアップ

from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=True)
pipe.to("cuda")

実行

prompt="~~~"に生成したい画像のテキストを入力する。すると3,40秒でoutputs/配下に画像が生成されるはず。あとは好きにやっていけばOK。

import hashlib
prompt = "A photography of the cat flying in the sky"
results = pipe(prompt)["sample"]
filename = hashlib.md5(prompt.encode()).hexdigest()
print(filename)
for i, elm in enumerate(results):
  image = results[i]
  filename = "outputs/{}.png".format(filename)
  image.save(filename)
YuheiNakasakaYuheiNakasaka

注意

何かあるかもしれないのでヤバめの画像が生成されたらすぐディレクトリから削除した方が良い。もしかすると生成された画像によってはGoogle Driveの検閲をくらってアカウントがBanされるかもしれないし。

あとR18の画像を生成して喧伝してると規約違反になるからそれはそれでまずそう。

YuheiNakasakaYuheiNakasaka

GPUが使えない

無料ユーザーはすぐGPUが使えなくなる。1日で使える割当量を使い切るとその日はもうCPUしか使えない。課金するかGPUを購入するか次の日まで我慢するしかない。そんなに甘くない。

このスクラップは2022/08/24にクローズされました