はじめに
この記事では今話題のStable DiffusionをGoogle Colabを利用して無料で使います。
所要時間は10分程度です。
一度初期設定が済めば、二回目からはほぼ作業なしで無限に生成が使えます。
ちなみに
最も簡単にStable Diffusionを試す方法としてDreamStudioというサイトがあります。
Googleアカウントがあれば誰でもすぐに生成を試すことができるので、AI画像生成とは何か体験してみたい方にはとてもオススメです。
ただし無料アカウントでは200枚までしか生成できないため、それ以上に生成を行いたければこの記事などのような方法を使うことになります。
概要
この記事を読んででできること
・colab上で画像がいっぱい作れる です。
Stable DiffusionをGoogle Colabで動かす記事は既に沢山あります。
本記事ではそれを拡張して、Colab上で見やすく、任意枚数生成できるプログラムを紹介しています。
閑話:神絵の作り方
(さっさと生成だけしたい人は読み飛ばして大丈夫です)
突然ですが、AI画像生成は ガチャ です。
特にアニメ調kawaiiイラストを作る場合、最高レア率1%とか2%とかの 愉快なガチャ です。
どんなに良くできたプロンプト(絵の指示コマンド)を与えても、生成された画像の9割以上はどこかしら破綻した画像です。
生成画像のうちの ほんの一握り が、Twitterとかで称賛を集めているきれいな画像になります。
「こんなのAIで描けるの!?」「すごい、感動した!」
よくそんな感想を筆者も抱きますが、多分誰よりも感動しているのは投稿した本人じゃないかと思います。
一枚の神画像を描いてもらうまでにはその何十倍、何百倍もの失敗作が生まれているはずだからです。
まとめとして、最高のkawaii絵を手に入れるにはまず 生成ガチャをたくさん回すことが大事 になります。(ガチャの確率を上げる工夫も色々あるようですが)
本題
Gigazine様のサイトに沿って手順2まで進めてください。
非常にわかりやすく書かれており、筆者もこのサイトを参考にして実行しました。
「3:Stable Diffusionで画像を生成する方法」 まで来たら、以下のコードをセルに打ち込んで実行します。
import IPython
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import torch
import random
def create(prompt,iter):
for i in range(iter):
seed = random.randrange(0, 2147483647, 1)
image = pipe(prompt, # プロンプト
height=512, # 生成する画像の幅
width=512, # 生成する画像の高さ
guidance_scale=7.5, # 画像とプロンプトの類似度 (0〜20)
num_inference_steps=50, # 画像生成に費やすステップ数
generator=torch.Generator("cuda").manual_seed(seed), # 乱数シードジェネレータ
)["sample"][0]
img_name = str(i)+"_"+str(seed)+".png"
image.save(img_name)
img = mpimg.imread(img_name)
plt.figure(figsize=(6, 6))
plt.axis("off")
plt.title(img_name)
plt.imshow(img)
plt.show()
実行しても特に何も表示されませんがそれでOKです。
以下が生成のコードです。これもセルに打ち込んで実行すると、今度は画像が生成され始めます。
!rm *.png
#絵の生成プロンプト
prompt="STAR WARS made by studio GHIBLI, totoro style"
#生成枚数
iter = 10
create(prompt,iter)
prompt,iterを自分好みに変えて色々試しましょう。
このセルを実行するたびに新しく画像が生成され、前回の生成画像は消去されます。気に入った画像が出来たときは保存しましょう。
画像の保存などもGigazine様のサイトを参考にしてください。
このプログラムではseed値も保存しているのでこれをなんやかんやすればいろいろ便利に画像生成できるかもしれません。
まとめ
結構時間がかかりますが、生成にあなたのコンピュータリソースは使われないので、ゲームをしている裏などで10連ガチャをいっぱい回しましょう!
ちなみにGoogle Colabは無料プランだとGPUの使用上限があるので、ガチャは引き放題ではないです。上限に引っかかったら大人しく数時間待ちましょう。
追記:プロンプトに関して
上記以外にも筆者はいろいろなサイトや動画を参考にしています。
英語難しいよ~って方も、DeepLで翻訳したものぶち込むだけでまぁまぁいい感じになるはずです。
プロンプトに関してはドンドン情報が更新されていくと思うので、興味のある限り追ってみると楽しいと思います。
謝辞
この記事は技術サイトやTwitterなどで公開されている情報を参考にして作成しました。ありがとうございます。