最近在抖音上看到很多视频可以让图片动起来,搜了一下,stabilityai/stable-video-diffusion-img2vid-xt 这个模型可以实现图片到视频,可以生成 25 帧的视频。Kling 和 Runway 都支持从图片生成视频,本文将通过 ModelScope 搭建一个可以运行在本地的图片到视频的模型。
运行 ModelScope
这里使用容器的方式运行 ModelScope,关于容器的信息,详见官网介绍
https://modelscope.cn/docs/%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85
- /opt/modelscope/models:/mnt/workspace/.cache, 将模型下载路径映射到主机上,模型数据可以保留
- /opt/modelscope/notebook:/notebook,notebook 数据进行保留
- -p 8890:8888 -p 8891-8895:8891-8895,根据需要映射端口
docker run --rm --runtime=nvidia --shm-size=32g --gpus all -p 8890:8888 -p 8891-8895:8891-8895 \
-v /opt/modelscope/models:/mnt/workspace/.cache \
-v /opt/modelscope/notebook:/notebook \
-it registry.cn-beijing.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14.0-1.13.1 /bin/bash
运行模型
下载模型
from diffusers import DiffusionPipeline
from modelscope import snapshot_download
model_dir = snapshot_download("AI-ModelScope/stable-video-diffusion-img2vid-xt")
运行模型
import torch
from diffusers import StableVideoDiffusionPipeline
from diffusers.utils import load_image, export_to_video
pipe = StableVideoDiffusionPipeline.from_pretrained(model_dir, torch_dtype=torch.float16, variant="fp16")
pipe.enable_model_cpu_offload()
# Load the conditioning image
image = load_image("route-fifty-lead-image.jpg")
image = image.resize((1024, 576))
generator = torch.manual_seed(44)
frames = pipe(image, decode_chunk_size=8, generator=generator).frames[0]
export_to_video(frames, "generated.mp4", fps=7)
原图
生成的视频
总结
ModelScope 最大的优点就是安装了所有运行模型需要的依赖库,可以说是一键运行。下载模型速度也非常快,能够快速体验所有的模型,如果本地没有资源也可以是使用 ModelScope 提供的工作空间,需要付费。
本文使用的环境
操作系统 Ubuntu、GPU 2080ti 22G。