首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >AnimateDiff与插帧技术生成平滑视频

AnimateDiff与插帧技术生成平滑视频

原创
作者头像
用户11764306
发布2026-05-18 10:16:43
发布2026-05-18 10:16:43
30
举报

使用AnimateDiff和插帧器制作平滑的AI生成视频

本文展示如何结合AnimateDiff和ST-MFNet帧插值器,从文本提示生成平滑逼真的视频。还可以使用新控制项指定摄像机运动。

将从文本提示开始,生成视频,再得到高帧率视频。

使用AnimateDiff创建动画

AnimateDiff是一个通过添加运动建模模块来增强现有文本生成图像模型的模型。该运动模块在视频片段上训练,以捕捉真实的运动动态。它使Stable Diffusion文本生成图像模型能够生成动画输出,涵盖从动漫到真实照片的范围。

控制摄像机运动

LoRA提供了一种高效的方式,可以在不使用大量内存的情况下加速大模型的微调过程。它们最广为人知的应用是Stable Diffusion模型,作为模型针对某种风格或主体的轻量级扩展。同样的概念可以应用于AnimateDiff运动模块。

原始AnimateDiff作者针对特定摄像机运动训练了8个新的LoRA:

  • 向上平移
  • 向下平移
  • 向左平移
  • 向右平移
  • 放大
  • 缩小
  • 顺时针旋转
  • 逆时针旋转

使用托管模型可以使用所有这些运动,并选择它们的影响强度(介于0和1之间)。还可以组合多种摄像机运动和强度来创造特定效果。

使用ST-MFNet进行视频插帧

插帧为视频添加额外帧。这提高了帧率并使视频更平滑。

ST-MFNet是一个“时空多流网络用于帧插值”,通俗地说它是一个为视频生成额外帧的机器学习模型。它通过研究空间(物体位置)和时间(从一帧到下一帧)的变化来实现这一点。“多流”部分意味着它考虑事物从一帧到下一帧可能移动或变化的多种方式。ST-MFNet与AnimateDiff视频配合效果很好。

可以将2秒、每秒16帧的AnimateDiff视频通过ST-MFNet提升到32或64帧每秒。还可以将其转换为慢动作的4秒视频。

使用API创建工作流

可以使用API将多个模型组合成一个工作流,将一个模型的输出作为另一个模型的输入。

Python示例:

代码语言: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示例:

代码语言: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示例:

代码语言:bash
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用AnimateDiff和插帧器制作平滑的AI生成视频
    • 使用AnimateDiff创建动画
    • 控制摄像机运动
    • 使用ST-MFNet进行视频插帧
    • 使用API创建工作流
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档