【生成系AI 研究活動#03】Stable DiffusionをGoogle Colab(有料)で動かしてみた
はじめに
①パソコンに負荷をかけたくない
②どこでも作業できるように
(グラボ積んだデスクトップPCは持ち運べないよね)
上記、理由から、Stable Diffusion をGoogle Colabで使用したかった。
グラボ積んだPCを借りることで、他の環境でもできるし、Udemyの動画でもすすめれらていたが、英語がやっぱりネック!!重課金と解約に不安があり、Google Colabにこだわった。
結果として、まともに使うなら、課金せよ!
そして、プロンプトを磨け!!
補足:Midjourneyも選択肢にはあるが、Stable Diffusion は生成された画像は商用利用可能で利用料金は無料。また、画像生成の精度が高いことから、どうしても、Stable Diffusion を扱えるようになりたい!
以下、検証過程を記載。
Google Colabの設定(準備)
colabにアクセス
GPUの設定
GPUの確認
!nvidia-smi
AI画像生成トライ①コマンド
モデルの取得(確認)
Hugging Faceにアクセス
モデルを選ぶ
動画で指定しているのが無いので、それらしいのを選択。
下記ブログも参考に進める。
https://gammasoft.jp/blog/stable-diffusion-with-diffusers-library/
インストール
!pip install diffusers transformers ftfy accelerate
とりあえず、上手くいった。
画像生成
コマンドで、画像生成を実施。
import torch
from diffusers import StableDiffusionPipeline
model_id = "CompVis/stable-diffusion-v1-4"
device = "cuda"
# プロンプト
prompt = "Mt. Fuji in the style of Gauguin"
# パイプラインの作成
pipe = StableDiffusionPipeline.from_pretrained(model_id, revision="fp16", torch_dtype=torch.float16)
pipe = pipe.to(device)
# パイプラインの実行
generator = torch.Generator(device).manual_seed(42) # seedを前回と同じ42にする
with torch.autocast("cuda"):
image = pipe(prompt, guidance_scale=7.5, generator=generator).images[0]
# 生成した画像の保存
image.save("mt_fuji_gauguin.png")
出力結果。
ねえねえ、まって!?なんか違う!!
求めてたものじゃない!!
さて、ここからどうしようか?
AI画像生成トライ②Web UI
Web UI
こっちやってみるか。
コマンド実行てみる
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd /content/stable-diffusion-webui
!wget https://huggingface.co/nuigurumi/basil_mix/resolve/main/Basil_mix_fixed.safetensors -O /content/stable-diffusion-webui/models/Stable-diffusion/Basil_mix_fixed.safetensors
!wget https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -O /content/stable-diffusion-webui/models/VAE/vae-ft-mse-840000-ema-pruned.safetensors
!python launch.py --share --xformers --enable-insecure-extension-access
きた!!!これが、噂の警告!!!有料!!
「さらに購入」をクリックで下記のページに。
https://colab.research.google.com/signup?utm_source=dialog&utm_medium=link&utm_campaign=disallowed_warning
もう、ここまでくると、課金するしかないよね??
だって、素敵なAI画像生成したいじゃん!!!
どこも、有料ばっかだし!!商用利用も考えたら、もうやるっきゃない!!
(生きて!来月の私!!)
に、人間、諦めが肝心!!!
メモ:Colab の定期購入を最大限に活用する
課金して、再度実行すると、警告出ずに動き出した!!
ずっと…30分位待ってたけど、もう起動していた><
10分ぐらい?の待ち。選択したPCスペックによるだろうから、まちまちみたい。
赤線の箇所をクリックでWEB UI画面が開く。
環境OK
モデルを指定し、各所設定を入れる。
さあ、とりあえず、やってみるぞ!!
英語入力なので、翻訳ツールフル活用。
結果は以下の通り。
なんとも残念な結果に。
はい、プロンプトの勉強頑張ります!!
プロンプト作成
下記のサイト参考にしてみる!
イメージこんなの!!
結果、夜空の精度が爆上がり!!
下記を参考に呪文を作る!!
初音ミク以外は著作気にして選択して作成。
hatune miku, beautiful detailed girl, contour deepening beautiful detailed glow, hands_up, petite, girl,woman,female, absurdly long hair, big hair,
お?ちょっといい感じになったので、あとは、ネガティブプロンプトを!!
ネガティブプロンプト
低品質な画像の出力を防止するための言葉(クオリティコントロール)
low quality, worst quality, out of focus, ugly, error, jpeg artifacts, lowers, blurry, bokeh
nsfwを防止する言葉
nsfw, nipples, pubic hair
作画崩壊や奇形防止のための言葉
bad anatomy, long_neck, long_body, longbody, deformed mutated disfigured, missing arms, extra_arms, mutated hands, extra_legs, bad hands, poorly_drawn_hands, malformed_hands, missing_limb, floating_limbs, disconnected_limbs, extra_fingers, bad fingers, liquid fingers, poorly drawn fingers, missing fingers, extra digit, fewer digits, ugly face, deformed eyes, partial face, partial head, bad face, inaccurate limb, cropped
テキストや署名などの不要要素を排除するための言葉
text, signature, watermark, username, artist name, stamp, title, subtitle, date, footer, header
おお!!これがネガティブプロンプト効果!!!
大量に突っ込んだ甲斐あった!!
さて、noteの画像つくりますか!!
サイズを変更して…1280 × 670px
あれれ??二人人物が…
再度実行。もうちょっと!!!何度もやるしかない!!
この後も、双子大発生。学習モデルが正方形の画像で作成されている影響らしい。
数を出す、ネガティブプロンプトで制限する等の対応しかないようです。
ちなみに、ネガティブプロンプトに「二人」「複数人」を最後に追加した位では改善しなかった。
30枚ぐらい作って、そこそこ気に入った一枚がTOP画像コレ!!
作成のColabの画面と、プロンプトは以下です。
プロンプト
looking up at the night sky,beautiful starry sky, sky full of stars,,contour deepening beautiful detailed glow, hands_up, petite, girl,woman,female, absurdly long hair, big hair,(closeup to viewer:1.3),(happy laughing:1.3),(best quality)++,(masterpiece)++,(ultra detailed)++
ネガティブプロンプト
several people,low quality, worst quality, out of focus, ugly, error, jpeg artifacts, lowers, blurry, bokeh,nsfw, nipples, pubic hair,bad anatomy, long_neck, long_body, longbody, deformed mutated disfigured, missing arms, extra_arms, mutated hands, extra_legs, bad hands, poorly_drawn_hands, malformed_hands, missing_limb, floating_limbs, disconnected_limbs, extra_fingers, bad fingers, liquid fingers, poorly drawn fingers, missing fingers, extra digit, fewer digits, ugly face, deformed eyes, partial face, partial head, bad face, inaccurate limb, cropped,text, signature, watermark, username, artist name, stamp, title, subtitle, date, footer, header,
実行後、使用可能なユニット数が95。
まあまあ、使えそうでは??
終了処理。そのままだと、GUPが起動じょうたいで、使えるユニット数がどんどん減っていきます。
これできてなくて、気が付いたら(6時間放置)、ユニット数88になってました><
ちゃんと、切断しましょうね(自戒)!!!