本文展示如何结合AnimateDiff和ST-MFNet帧插值器,从文本提示生成平滑逼真的视频。还可以使用新控制项指定摄像机运动。
将从文本提示开始,生成视频,再得到高帧率视频。
AnimateDiff是一个通过添加运动建模模块来增强现有文本生成图像模型的模型。该运动模块在视频片段上训练,以捕捉真实的运动动态。它使Stable Diffusion文本生成图像模型能够生成动画输出,涵盖从动漫到真实照片的范围。
LoRA提供了一种高效的方式,可以在不使用大量内存的情况下加速大模型的微调过程。它们最广为人知的应用是Stable Diffusion模型,作为模型针对某种风格或主体的轻量级扩展。同样的概念可以应用于AnimateDiff运动模块。
原始AnimateDiff作者针对特定摄像机运动训练了8个新的LoRA:
使用托管模型可以使用所有这些运动,并选择它们的影响强度(介于0和1之间)。还可以组合多种摄像机运动和强度来创造特定效果。
插帧为视频添加额外帧。这提高了帧率并使视频更平滑。
ST-MFNet是一个“时空多流网络用于帧插值”,通俗地说它是一个为视频生成额外帧的机器学习模型。它通过研究空间(物体位置)和时间(从一帧到下一帧)的变化来实现这一点。“多流”部分意味着它考虑事物从一帧到下一帧可能移动或变化的多种方式。ST-MFNet与AnimateDiff视频配合效果很好。
可以将2秒、每秒16帧的AnimateDiff视频通过ST-MFNet提升到32或64帧每秒。还可以将其转换为慢动作的4秒视频。
可以使用API将多个模型组合成一个工作流,将一个模型的输出作为另一个模型的输入。
Python示例:
import replicate
# 使用令牌初始化Replicate API
replicate.init(api_token='YOUR_REPLICATE_API_TOKEN')
print("使用AnimateDiff生成视频")
output = replicate.run(
"某机构/animate-diff:269a616c8b0c2bbc12fc15fd51bb202b11e94ff0f7786c026aa905305c4ed9fb",
input={"prompt": "充满各种海洋生物的 vibrant 珊瑚礁的中景镜头"}
)
video = output[0]
print(video)
print("使用ST-MFNet对视频进行插帧")
videos = replicate.run(
"某机构/st-mfnet:2ccdad61a6039a3733d1644d1b71ebf7d03531906007590b8cdd4b051e3fbcd7",
input={"mp4": video, "keep_original_duration": True, "framerate_multiplier": 4},
)
video = list(videos)[-1]
print(video)JavaScript示例:
import Replicate from "replicate";
const replicate = new Replicate({
auth: process.env.REPLICATE_API_TOKEN,
});
console.log("使用AnimateDiff生成视频");
const output = await replicate.run(
"某机构/animate-diff:269a616c8b0c2bbc12fc15fd51bb202b11e94ff0f7786c026aa905305c4ed9fb",
{ input: { prompt: "充满各种海洋生物的 vibrant 珊瑚礁的中景镜头" } }
);
const video = output[0];
console.log(video);
console.log("使用ST-MFNet对视频进行插帧");
const videos = await replicate.run(
"某机构/st-mfnet:2ccdad61a6039a3733d1644d1b71ebf7d03531906007590b8cdd4b051e3fbcd7",
{
input: {
mp4: video,
keep_original_duration: true,
framerate_multiplier: 4
}
}
);
console.log(videos[1]);CLI示例:
export REPLICATE_API_TOKEN="..."
replicate run 某机构/st-mfnet --web \
keep_original_duration=true \
framerate_multiplier=4 \
mp4="$(replicate run 某机构/animate-diff \
prompt="充满各种海洋生物的 vibrant 珊瑚礁的中景镜头" | \
jq -r '.output | join("")')"是否已经使用AnimateDiff和ST-MFNet制作了视频?欢迎分享。FINISHED
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。