ジャコ Lab

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

diffusers の AnimateDiff で Scheduler を調整してみる (2) - MeinaMix

zako-lab929.hatenablog.com

前回の記事では ToonYou のモデルを使用して、 AnimateDiff を実行する際のスケジューラーのパラメータを調整しました。

この記事では更に別のモデルも試してみます。

いつもの MeinaMix で!

実行結果

モデルが違うだけでやっていることは前回の記事と一緒なので結果から。

スケジューラのパラメータを変更して出力した様子
スケジューラのパラメータを変更して出力した結果

おお~良き

モーション LoRA は使ってないですけど、横に滑りましたね。

スクリプト全体 (折りたたみ)

スクリプト全体 (折りたたみ)

モデルのロード等 (MotionAdapter, AnimateDiffPipeline, DDIMScheduler)

import torch
from diffusers import MotionAdapter, AnimateDiffPipeline, DDIMScheduler

# モーションアダプターのロード
adapter = MotionAdapter.from_pretrained(
    "guoyww/animatediff-motion-adapter-v1-5-2"
)

# SD 1.5系のモデルを AnimateDiffPipeline でロード
pipe = AnimateDiffPipeline.from_pretrained(
    "Meina/MeinaMix_V11",
    motion_adapter=adapter
)

# スケジューラの設定
pipe.scheduler = DDIMScheduler.from_config(
    pipe.scheduler.config,
    beta_start=0.00085,
    beta_end=0.012,
    beta_schedule="linear",
    steps_offset=1,
    clip_sample=False
)

# enable memory savings
pipe.enable_vae_slicing()
pipe.enable_model_cpu_offload()

パイプライン実行

import torch
from diffusers.utils import export_to_gif
from datetime import datetime
from zoneinfo import ZoneInfo

# パイプライン実行
prompt = "masterpiece, best quality, 1girl, solo, cherry blossoms, hanami, pink flower, white flower, spring season, wisteria, petals, flower, plum blossoms, outdoors, falling petals, white hair, black eyes"
negative_prompt="bad quality, worse quality"
frames = pipe(
    prompt,
    negative_prompt=negative_prompt,
    num_frames=16,
    guidance_scale=7.5,
    num_inference_steps=25,
    generator=torch.manual_seed(6520604954829636163),
).frames[0]

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

# 実行結果
export_to_gif(frames, f"animation_{formattedNow}.gif")

まとめ

スケジューラのパラメータをちょこっと変更するだけで、出力がかなり変わることがわかりました。