ジャコ Lab

プログラミング関連のメモ帳的ブログです

Van Gogh Diffusion を diffusers(Google Colab) で使ってみる

Van Gogh Diffusion

今回は Van Gogh Diffusion というモデルを使ってみます。

なぜ?

AIアートの話をしていたら、
「もしゴッホが生きていたら~とか出来そうですね」 という話になったので、
じゃあやってみよ。ということでググりました。

Van Gogh Diffusion とは

huggingface.co

その名の通り、ゴッホ風のイラストを生成するモデルです。

少し前に stabilityai/stable-diffusion-2-1 で頑張ってオバケを出そうとしていた頃とは違い、モデルというものを理解してきました。

そう、、、Van Gogh Diffusion とは、
ゴッホ風のイラストを生成するのが 得意なモデル である!

Google Colab で実行

ランタイムタイプを GPU に変更

ランタイムタイプを変更

パッケージをインストール

# パッケージのインストール
!pip install --upgrade diffusers[torch]

パイプラインを準備 (EasyNegative 付き)

from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
import torch

pipe = StableDiffusionPipeline.from_pretrained(
    "dallinmackay/Van-Gogh-diffusion",
    torch_dtype=torch.float16,
).to("cuda")

pipe.load_textual_inversion(
    "embed/negative",
    weight_name="EasyNegativeV2.safetensors", 
    token="EasyNegative"
)

パイプラインを実行 (12個一気に生成)

import os
from datetime import datetime
from zoneinfo import ZoneInfo

# ディレクトリを作成する (存在していてもエラーにはしない)
os.makedirs('outputs', exist_ok=True)

# Asia/Tokyo タイムゾーンの現在時刻を YYYYMMDDhhmmss 形式で得る
now = datetime.now(tz=ZoneInfo("Asia/Tokyo"));
formattedNow = now.strftime("%Y%m%d%H%M%S")

# プロンプトの準備
prompt = "lvngvncnt, sunflower and gentleman"
negative_prompt = "EasyNegative"

# パイプラインを実行
generator = torch.Generator()
for idx in range(12):
    generator.seed()
    print(f"Seed: {generator.initial_seed()}")

    image = pipe(
        prompt,
        negative_prompt=negative_prompt,
        width=768, height=512,
    ).images[0]
    image.save(f"outputs/{formattedNow}_{idx}_{generator.initial_seed()}.png")
プロンプトに `lvngvncnt` というキーワードは必須みたいです

生成物

Van Gogh Diffusion

おお~すごい!

その他

Van Gogh Diffusion

猫もいい感じに描画されました。
A very cute cat , night sky , sunflower , cherry blossoms などのキーワードを使いました

まとめ

MeinaMix を Google Colab で使ってみる - ジャコ Lab
でも言いましたが、 モデルってすごい!!