Google ColabでSakana AIのEvo-Ukiyoeを試してみた
概要
Google Colab (Pro)でSakana AIの浮世絵生成AI Evo-Ukiyoeを試してみました。
入力プロンプトには有名な俳句の紹介記事を参考に10句使用しました。
必要なGPUメモリは約33.4GBでした。
実施内容
必要となるもの
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になりました。
お試し
デモページで生成した際、句切れにスペースを入れた方が良い結果になる印象だったので、スペース無し、全角スペース、半角スペースの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句目: 古池や蛙飛びこむ水の音
2句目: 菜の花や月は東に日は西に
3句目: 雪とけて村いっぱいの子どもかな
4句目: 柿くへば鐘が鳴るなり法隆寺
5句目: 遠山に日の当たりたる枯野かな
6句目: 流氷や宗谷の門波荒れやまず
7句目: どうしようもないわたしが歩いている
(この句は句切れがわからなかった…)
8句目: 万緑の中や吾子の歯生え初むる
9句目: 鮟鱇の骨まで凍ててぶちきらる
10句目: 新宿ははるかなる墓碑鳥渡る
所感
雰囲気はそれっぽいものの、細部を見るとおかしな点も多いというのが正直な感想です。
人・動物よりは風景の方が良い絵になりそうです。
わかりやすい句ならそれっぽい絵になりそうです。
デモページのErrorの頻度とColabでのA100ガチャにはなかなか苦しみました。
関連記事
この記事が気に入ったらサポートをしてみませんか?