Stable Diffusionを動かしてみた

はじめに

乗るしかない このビッグウェーブ」ということで、今非常にホットな画像生成AI
Stable Diffusion」を動かしてみました(ビッグウェーブおじさん、何してますかね~)

使用マシンはRTX3070 Laptop搭載ノートPCのASUS Zephyrus M16。
RTX3070の実力やいかに。

動かしてみた

今回試してみた環境は次の3種類

1. WSL2 + Anaconda

 まずはWSL2(Windows Subsystem for Linux)にAnacondaを入れた環境でトライ。
 github.com  上記ページの手順を試すが、実行中に突然『kill』される。


 CUDAを正しく認識できていない模様。
 www.kkaneko.jp

 上記ページを参考にWSL2用のNvidiaドライバを入れる等を試みたがNG。一旦保留。
 Windows11に移行したのでもう少し楽に動くかと思ったが、WSL2+CUDAは鬼門。

2. Anaconda prompt

 WSL2+CUDAが動かなかったので、Anaconda Prompt(DOS窓)から試してみました。
 zenn.dev  上記の記事が参考になりました。ただし、この方と同じく私のRTX3070(8GB)ではGPUメモリ不足によりオリジナルのコードはうまく動きませんでした。本ページに下の方に記載されているフォーク版を使うことで動作させることができました。

 ただし、私の環境では一点だけ追加の作業が必要でした。

stable-diffusion/models/ldm/ 配下にstable-diffusion-v1フォルダを移動させます。

の時に、stable-diffusionの直下にあるsrcフォルダも移動させる必要がありました。
これをしておかないと、実行時にエラーで落ちてしまいました。

3. Google Colab

 最後はGoogle Colabです。これはサーバー側のGPUを使います。
gigazine.net gigazine.net  これは上記ページの手順であっさり動きました。お手軽です。

 初心者に勧めるとしたらこれが一押しですね。手元のPCに強力なGPUを必要とせず非力なPCでも動きます。サーバー側のGPUを使っているので、そこそこの速度で動きます。私が実行したときは512x512の画像1枚を作るのに30秒くらいでした。
 ただし使用時間制限等があるので使用時には注意が必要です。

 基本的には1回の実行で画像が1枚出てきますが、実行コードをちょっと書き換えればまとめて生成することも可能です。こんな感じです

prompt = "Foggy San Francisco skyscrapers. Vincent van Gogh"

fig = plt.figure(figsize=(28,7), dpi=100)

images=[]
for i in range(4):
  images.append( pipe(prompt)["sample"][0] )

for i in range(4):
  ax = fig.add_subplot(1,4,i+1)
  ax.axis("off")
  ax.imshow(np.array(images[i]))

fig.suptitle( prompt, size="xx-large")

この例では霧のサンフランシスコをゴッホの画風で描かせています。

1行目のpromptの中身を書き換えるといろいろな絵が描けます。


点描で有名なジョルジュ・スーラ風に~


叫びで有名なムンク風に~


浮世絵の葛飾北斎風に~

簡単に絵を描けるので楽しいですね~
なかなか思い通りの絵になりませんが。。。

最後に

google colabすごいですね~
3種類の環境を試してみましたが、手軽さの点ではgoogle colabがダントツです。
これだけのものを無料で提供するなんて太っ腹ですね~、googleさん。


では、また。