Tune-A-Video: การปรับแต่ง One-Shot ของโมเดลการแพร่กระจายภาพสำหรับการสร้างข้อความเป็นวิดีโอ
pip install -r requirements.txt
[Stable Diffusion] Stable Diffusion คือโมเดลการแพร่กระจายข้อความเป็นรูปภาพแฝงที่สามารถสร้างภาพที่เหมือนจริงของภาพถ่ายไม่ว่าจะป้อนข้อความใดก็ตาม สามารถดาวน์โหลดโมเดล Stable Diffusion ที่ได้รับการฝึกล่วงหน้าได้จาก Hugging Face (เช่น Stable Diffusion v1-4, v2-1) คุณยังสามารถใช้โมเดล Stable Diffusion ที่ได้รับการปรับแต่งอย่างละเอียดซึ่งได้รับการฝึกฝนในสไตล์ที่แตกต่างกัน (เช่น Modern Disney, Redshift เป็นต้น)
[DreamBooth] DreamBooth เป็นวิธีการปรับแต่งโมเดลข้อความเป็นภาพ เช่น Stable Diffusion โดยให้รูปภาพเพียงไม่กี่ภาพ (3~5 ภาพ) ของวัตถุ การปรับแต่งวิดีโอบนโมเดล DreamBooth ช่วยให้สามารถสร้างข้อความเป็นวิดีโอเฉพาะบุคคลในหัวข้อเฉพาะได้ มี DreamBooth รุ่นสาธารณะบางรุ่นที่มีให้บริการบน Hugging Face (เช่น mr-potato-head) คุณยังสามารถฝึกโมเดล DreamBooth ของคุณเองได้ตามตัวอย่างการฝึกนี้
หากต้องการปรับแต่งโมเดลการแพร่กระจายข้อความเป็นรูปภาพสำหรับการสร้างข้อความเป็นวิดีโอ ให้รันคำสั่งนี้:
accelerate launch train_tuneavideo.py --config= " configs/man-skiing.yaml "
เมื่อการฝึกอบรมเสร็จสิ้น ให้ทำการอนุมาน:
from tuneavideo . pipelines . pipeline_tuneavideo import TuneAVideoPipeline
from tuneavideo . models . unet import UNet3DConditionModel
from tuneavideo . util import save_videos_grid
import torch
pretrained_model_path = "./checkpoints/stable-diffusion-v1-4"
my_model_path = "./outputs/man-skiing"
unet = UNet3DConditionModel . from_pretrained ( my_model_path , subfolder = 'unet' , torch_dtype = torch . float16 ). to ( 'cuda' )
pipe = TuneAVideoPipeline . from_pretrained ( pretrained_model_path , unet = unet , torch_dtype = torch . float16 ). to ( "cuda" )
pipe . enable_xformers_memory_efficient_attention ()
pipe . enable_vae_slicing ()
prompt = "spider man is skiing"
ddim_inv_latent = torch . load ( f" { my_model_path } /inv_latents/ddim_latent-500.pt" ). to ( torch . float16 )
video = pipe ( prompt , latents = ddim_inv_latent , video_length = 24 , height = 512 , width = 512 , num_inference_steps = 50 , guidance_scale = 12.5 ). videos
save_videos_grid ( video , f"./ { prompt } .gif" )
อินพุตวิดีโอ | วิดีโอเอาท์พุต | |
"ผู้ชายคนหนึ่งกำลังเล่นสกี" | "วันเดอร์วูแมนกำลังเล่นสกี" | “สาวน้อยกำลังเล่นสกี” |
“กระต่ายกำลังกินแตงโม” | “แมวกำลังกินแตงโมอยู่บนโต๊ะ” | “ลูกหมากินชีสเบอร์เกอร์อยู่บนโต๊ะ สไตล์การ์ตูน” |
"รถจี๊ปกำลังเคลื่อนตัวอยู่บนถนน" | "รถกำลังวิ่งอยู่บนถนนสไตล์การ์ตูน" | "รถกำลังเคลื่อนที่ไปบนหิมะ" |