【Image2Video】【Diffusers】PIA(Personalized Image Animator)+ FreeInit で動画を作成

はじめに

DiffusersからPIA(Personalized Image Animator)とFreeInitを使ってImage2Videoを行いました。

一枚の画像から動画を作成しています。

用意した画像


結果


Pythonスクリプト

さまざまな組み合わせで実行しました。

このスクリプトで一気に18通りの動画が作成されます。

組み合わせによってはほとんど動きのない動画になってしまいます。

上に載せた動画は「num_iters=5」「strength=0.7」「gaussian」の組み合わせです。

import torch
from diffusers import DDIMScheduler, MotionAdapter, PIAPipeline, AutoencoderKL
from diffusers.utils import export_to_gif, load_image
import itertools

adapter = MotionAdapter.from_pretrained(
    # from https://huggingface.co/openmmlab/PIA-condition-adapter
    "PIA-condition-adapter",
    torch_dtype=torch.float16,
    variant="fp16"
)
pipe = PIAPipeline.from_pretrained(
    # from https://huggingface.co/SG161222/Realistic_Vision_V6.0_B1_noVAE
    "model/Realistic_Vision_V6.0_B1_noVAE",
    motion_adapter=adapter,
    torch_dtype=torch.float16
)
pipe.scheduler = DDIMScheduler.from_config(
    pipe.scheduler.config,
    clip_sample=False,
    beta_schedule="linear"
)
pipe.to("cuda")

image = load_image("0.png")
image = image.resize((512, 512))
prompt = "raccoon on a boat on the sea, playing the guitar"
negative_prompt = "sketches, worst quality, low quality, bad_pictures"

strength_list = [0.7, 1.0]
num_iters_list = [1, 3, 5]
method_list = ["butterworth", "ideal", "gaussian"]

for (strength, num_iters, method) in itertools.product(strength_list, num_iters_list, method_list):
    generator = torch.manual_seed(2024)
    pipe.enable_free_init(
        method=method, 
        num_iters=num_iters,
        use_fast_sampling=False
    )
    output = pipe(
        image=image,
        prompt=prompt,
        generator=generator,
        strength=strength
    )
    frames = output.frames[0]
    export_to_gif(frames, f"{method}_numiters{num_iters}_strength{strength}result.gif")
    pipe.disable_free_init()





このエントリーをはてなブックマークに追加