無料の画像生成AI「Stable Diffusion」をGoogle Colaboratory で動かす方法〈後編〉

おどる猫 プログラミング

前編では、Stable DiffusionをGoogle Colaboratoryで動かすためのコードを紹介しました。
後編では、複数枚の画像を同時につくる方法、画像をGoogleドライブに保存する方法、画像のサイズを変更する方法などについて紹介します。

プログラムコード

最初に、紹介するプログラムをすべてまとめておきます。

前編のプログラムに追加して書いてください。

Googleドライブへの保存

画像の出力先をGoogleドライブの「生成画像」フォルダにします。
実行すると、Googleドライブと接続するか聞かれるので、許可してください。

# ドライブのマウント
from google.colab import drive
drive.mount('/content/drive')

# 出力先の指定
import os
os.chdir('/content/drive/MyDrive/生成画像')

複数画像の生成

1×3の形で3枚の画像を生成します。
数字を変えれば、2×2や3×3などにもできます。

from PIL import Image

def image_grid(imgs, rows, cols):
    assert len(imgs) == rows*cols

    w, h = imgs[0].size
    grid = Image.new('RGB', size=(cols*w, rows*h))
    grid_w, grid_h = grid.size
    
    for i, img in enumerate(imgs):
        grid.paste(img, box=(i%cols*w, i//cols*h))
    return grid
from torch import autocast
import datetime

#3枚の画像を1×3の形に並べて生成します。
num_rows = 1
num_cols = 3

prompt_single = "dancing cat"
prompt = [prompt_single] * num_cols

all_images = []
for i in range(num_rows):
  with autocast("cuda"):
    images = pipe(prompt)["sample"]
  all_images.extend(images)

# 画像を保存(ファイル名は「踊る猫_dancing cat_2022-2-22_22-22-22」などのようになる)
now = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9)))
filename = "踊る猫"
i = 1
for image in all_images:
  image.save(f"{filename}_{prompt_single}_{now.strftime('%Y-%m-%d_%H-%M-%S')}_({i}).png")
  i += 1

grid = image_grid(all_images, rows=num_rows, cols=num_cols)
grid

※前編で「GPUが10GB以上の場合」のプログラムも紹介しましたが、それを使うとメモリの制限に引っかかります。ご注意を。

AIのパラメータ変更

学習のステップ数、画像のサイズなどを変更します。
image(複数画像の場合はimages)に代入するpipeの引数を、以下のように変えるとできます。

動画では分けて解説していますが、下のように一度にパラメータを設定することも可能です。

image = pipe(prompt,                     # キーワード
             height=512,                 # 画像の高さ
             width=512,                  # 画像の幅
             guidance_scale=7.5,         # 
             num_inference_steps=50,     # 画像生成に費やすステップ数
             generator=torch.Generator("cuda").manual_seed(0), # 乱数シードジェネレータ
             )["sample"][0]

実行前に

フォルダの作成

この記事では、Googleドライブ内に「生成画像」というフォルダを作り、そこに出力された画像を入れるようにしています。なので、そのフォルダを作成しておきましょう。

Googleドライブで
右クリック>新しいフォルダ
を押し、「生成画像」という名前を入力します。

新しいフォルダ
右クリック>新しいフォルダ
生成画像
生成画像と入力

あとは、いつも通り画像を生成するセルを実行すると、Googleドライブの「生成画像」フォルダ内に画像が入っていきます。

前編のプログラムの実行

プロジェクトを一度閉じると、実行内容は消えてしまいます。
再度プロジェクトを開いたときは、前回実行したセルをもう一度実行しなおしてください。(一番最後の画像を生成するセルは実行しなくてもOK)

Google Colabを使わなくても。

前編・後編にわたって、Stable DiffusionをGoogle Colaboratory上で動かす方法を解説しました。

自分のパソコン上で簡単に動かせるソフトや、LINEで対話するようにStable Diffusionを動かすこともできるようですので、自分の好きな方法でAIの画像生成を楽しんでもらったらと思います。

LINEで画像生成できる「お絵描きばりぐっどくん」

参考サイト

公式サイト:https://huggingface.co/blog/stable_diffusion

公式のGoogle Colaboratoryプロジェクト:https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/stable_diffusion.ipynb#scrollTo=paJt_cx5QgVz

Google Colab で はじめる Stable Diffusion v1.4:https://note.com/npaka/n/ndd549d2ce556

Stable Diffusion を Google Colabで実行する際に便利なコード:https://zenn.dev/6uclz1/articles/d7736b06d24f1a

画像生成AI「Stable Diffusion」を Google Colaboratoryで動かして画像の保存先を Google ドライブにする方法:https://gigazine.net/news/20220827-stable-diffusion-google-drive-mount/

コメント

タイトルとURLをコピーしました