Google Colab で CogVideoX の Image-to-Video と Video-to-Video を試す
「Google Colab」で「CogVideoX」の Image-to-Video と Video-to-Video を試したのでまとめました。
1. CogVideoX
「CogVideoX」は、「Zhipu AI」が開発した動画生成AIです。「CogVideoX-2B」と「CogVideoX-5B」の2つのモデルが提供されています。
1. Image-to-Video
Google ColabでのImage-to-Videoの手順は、次のとおりです。
(1) パッケージのインストール。
# パッケージのインストール
!pip install git+https://github.com/huggingface/diffusers
(2) パイプラインの準備。
import torch
from diffusers import CogVideoXImageToVideoPipeline
# パイプラインの準備
pipe = CogVideoXImageToVideoPipeline.from_pretrained(
"THUDM/CogVideoX-5b-I2V",
torch_dtype=torch.bfloat16
)
pipe.to("cuda")
pipe.enable_model_cpu_offload()
pipe.vae.enable_tiling()
(3) プロンプトと画像の準備と推論の実行。
from diffusers.utils import export_to_video, load_image
# プロンプトと画像の準備
prompt = "An astronaut hatching from an egg, on the surface of the moon, the darkness and depth of space realised in the background. High quality, ultrarealistic detail and breath-taking movie-like camera shot."
image = load_image(
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/astronaut.jpg"
)
# 推論の実行
video = pipe(image, prompt, use_dynamic_cfg=True)
export_to_video(video.frames[0], "output.mp4", fps=8)
2. Video-to-Video
Google ColabでのVideo-to-Videoの手順は、次のとおりです。
(1) パッケージのインストール。
# パッケージのインストール
!pip install git+https://github.com/huggingface/diffusers
(2) パイプラインの準備。
import torch
from diffusers import CogVideoXDPMScheduler, CogVideoXVideoToVideoPipeline
# パイプラインの準備
pipe = CogVideoXVideoToVideoPipeline.from_pretrained(
"THUDM/CogVideoX-5b",
torch_dtype=torch.bfloat16
)
pipe.scheduler = CogVideoXDPMScheduler.from_config(pipe.scheduler.config)
pipe.to("cuda")
(3) プロンプトと画像の準備と推論の実行。
from diffusers.utils import export_to_video, load_video
# プロンプトと画像の準備
prompt = (
"An astronaut stands triumphantly at the peak of a towering mountain. Panorama of rugged peaks and "
"valleys. Very futuristic vibe and animated aesthetic. Highlights of purple and golden colors in "
"the scene. The sky is looks like an animated/cartoonish dream of galaxies, nebulae, stars, planets, "
"moons, but the remainder of the scene is mostly realistic."
)
input_video = load_video(
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/hiker.mp4"
)
# 推論の実行
video = pipe(
video=input_video,
prompt=prompt,
strength=0.8,
guidance_scale=6,
num_inference_steps=50
).frames[0]
export_to_video(video, "output.mp4", fps=8)