見出し画像

Google ColabでSakana AIのEvo-Ukiyoeを試してみた


概要

実施内容

必要となるもの

  • Google Colabへの課金 (GPUメモリの問題で、A100が必要でした)

  • Hugging Faceのアカウントとトークン

  • Japanese Stable Diffusion XLへのアクセス許可

準備

公式のUsageに従って環境構築を行います。

!git clone https://huggingface.co/SakanaAI/Evo-Ukiyoe-v1
!sudo apt install git-lfs
!git lfs install
cd Evo-Ukiyoe-v1
!pip install -r requirements.txt

サンプルコード実行

from google.colab import userdata  # Colabのシークレット取得用
from huggingface_hub import login  # Hugging Faceログイン用
from evo_ukiyoe_v1 import load_evo_ukiyoe

login(token=userdata.get("<Colabで設定したシークレットの名前>"))  # Hugging Faceログイン

prompt = "着物を着ている猫が庭でお茶を飲んでいる。"
pipe = load_evo_ukiyoe(device="cuda")
images = pipe(prompt + "輻の浮世絵。超詳細。", negative_prompt='', guidance_scale=8.0, num_inference_steps=40).images
images[0].save("image.png")

公式のサンプルコードのままではHTTPの401エラーが発生したため、Colabからシークレットを取得およびHugging Faceにログインするための修正を加えています。
Hugging Faceトークン取得の参考記事 シークレット設定の参考記事

また、Japanese Stable Diffusion XLの利用登録を行っていなかったためHTTPの403エラーも発生しました。
実行するにはJapanese Stable Diffusion XLへアクセス許可を貰う必要があるようでした。
エラーメッセージ内にHugging FaceのModel Cardへのリンクが表示されたので、リンク先でメールアドレスなどの情報を登録します。
(登録後すぐにアクセスできるようになりました)

下の画像が保存された image.png です。

「着物を着ている猫が庭でお茶を飲んでいる。」の浮世絵

必要なGPUメモリは約33.4GBでした。
T4、L4ではモデルロード中にOut Of Memoryになりました。

VRAM使用量

お試し

デモページで生成した際、句切れにスペースを入れた方が良い結果になる印象だったので、スペース無し、全角スペース、半角スペースの3パターンを試してみます。
俳句選定の参考にした記事は11選ですが、キリ良く10句使用します。

prompts_1 = [
    "古池や蛙飛びこむ水の音",
    "菜の花や月は東に日は西に",
    "雪とけて村いっぱいの子どもかな",
    "柿くへば鐘が鳴るなり法隆寺",
    "遠山に日の当たりたる枯野かな",
    "流氷や宗谷の門波荒れやまず",
    "どうしようもないわたしが歩いている",
    "万緑の中や吾子の歯生え初むる",
    "鮟鱇の骨まで凍ててぶちきらる",
    "新宿ははるかなる墓碑鳥渡る",
]
prompts_2 = [
    "古池や 蛙飛びこむ 水の音",
    "菜の花や 月は東に 日は西に",
    "雪とけて 村いっぱいの 子どもかな",
    "柿くへば 鐘が鳴るなり 法隆寺",
    "遠山に 日の当たりたる 枯野かな",
    "流氷や 宗谷の門波 荒れやまず",
    "どうしよう もないわたしが 歩いている",
    "万緑の 中や吾子の歯 生え初むる",
    "鮟鱇の 骨まで凍てて ぶちきらる",
    "新宿は はるかなる墓碑 鳥渡る",
]
prompts_3 = [
    "古池や 蛙飛びこむ 水の音",
    "菜の花や 月は東に 日は西に",
    "雪とけて 村いっぱいの 子どもかな",
    "柿くへば 鐘が鳴るなり 法隆寺",
    "遠山に 日の当たりたる 枯野かな",
    "流氷や 宗谷の門波 荒れやまず",
    "どうしよう もないわたしが 歩いている",
    "万緑の 中や吾子の歯 生え初むる",
    "鮟鱇の 骨まで凍てて ぶちきらる",
    "新宿は はるかなる墓碑 鳥渡る",
]

以下はprompts_1の画像生成用コードです。prompts_2、prompts_3も同じように生成します。

for i, prompt in enumerate(prompts_1):
    images = pipe(prompt + "輻の浮世絵。超詳細。", negative_prompt='', guidance_scale=8.0, num_inference_steps=40).images
    images[0].save(f"image_{i}.png")

生成結果

1句目: 古池や蛙飛びこむ水の音

スペース無し1
全角スペース1
半角スペース1

2句目: 菜の花や月は東に日は西に

スペース無し2
全角スペース2
半角スペース2

3句目: 雪とけて村いっぱいの子どもかな

スペース無し3
全角スペース3
半角スペース3

4句目: 柿くへば鐘が鳴るなり法隆寺

スペース無し4
全角スペース4
半角スペース4

5句目: 遠山に日の当たりたる枯野かな

スペース無し5
全角スペース5
半角スペース5

6句目: 流氷や宗谷の門波荒れやまず

スペース無し6
全角スペース6
半角スペース6

7句目: どうしようもないわたしが歩いている
(この句は句切れがわからなかった…)

スペース無し7
全角スペース7
半角スペース7

8句目: 万緑の中や吾子の歯生え初むる

スペース無し8
全角スペース8
半角スペース8

9句目: 鮟鱇の骨まで凍ててぶちきらる

スペース無し9
全角スペース9
半角スペース9

10句目: 新宿ははるかなる墓碑鳥渡る

スペース無し10
全角スペース10
半角スペース10

所感

  • 雰囲気はそれっぽいものの、細部を見るとおかしな点も多いというのが正直な感想です。

  • 人・動物よりは風景の方が良い絵になりそうです。

  • わかりやすい句ならそれっぽい絵になりそうです。

  • デモページのErrorの頻度とColabでのA100ガチャにはなかなか苦しみました。

関連記事


この記事が気に入ったらサポートをしてみませんか?