前回の記事では 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")
まとめ
スケジューラのパラメータをちょこっと変更するだけで、出力がかなり変わることがわかりました。