用AnimateDiff Prompt Travel video-to-video搭配ComfyUI制作AI视频,效果丝滑
制作Stable Diffusion动画

1. AnimateDiff的技术原理
AnimateDiff可以搭配扩散模型算法(Stable Diffusion)来生成高质量的动态视频,其中动态模型(Motion Models)用来实时跟踪人物的动作以及画面的改变。
2. 环境搭建
这里我们使用ComfyUI来搭配AnimateDiff做视频转视频的工作流。我们预设ComfyUI的环境以及搭建好了,这里就只介绍如何安装AnimateDiff插件。
3. ComfyUI AnimateDiff视频转视频工作流
- 找到一个真人跳舞视频
- 提取视频帧,并用ControlNet Openpose提取人物动作信息
- 根据视频帧里面的动作信息,使用SD重新绘制每一帧视频
- 组合出完整视频
3.1 读取ComfyUI工作流
直接把下面这张图拖入ComfyUI界面,它会自动载入工作流,在ComfyUI里面载入文件信息。

3.2 安装缺失的node组件
第一次载入这个工作流之后,ComfyUI可能会提示有node组件未被发现,我们需要通过ComfyUI manager安装,它会自动找到缺失的组件并下载安装(!!需要网络通畅)。

点击ComfyUI Manager按钮打开组件管理

再点击Install Missing Custom Nodes安装组件

安装完成后要重启ComfyUI才能完成载入刚才缺失的组件。
如果网络状态不好,可能会导致下载组件失败,需要多试几次
3.3 下载一个AI绘画模型
这里比较推荐C站上的Dreamshaper 8这个模型,实测动画人物效果比较好,当然大家也可以自己去测试其他的模型,有好的效果,欢迎评论留言。
下载好的模型放到ComfyUI > models > checkpoints目录。
然后刷新页面
在Load Checkpoint这个组件里可以选择不同的模型

3.4 再下载一个VAE模型
下载VAE,放到ComfyUI > models > vae这个目录里。
然后刷新页面
在Load VAE里可以选择不同的编码器模型

3.5 下载AnimateDiff动态特征模型
下载mm_sd_v15_v2.ckpt ,放到ComfyUI > custom_nodes > ComfyUI-AnimateDiff-Evolved > models文件夹。
刷新页面
在AnimateDiff Loader里,可以选择我们需要的动态特征模型

3.6 下载Openpose ControlNet模型
下载control_v11p_sd15_openpose.pth ,放到ComfyUI > models > controlnet文件夹。
刷新页面
在 Load ControlNet Model (Advanced) 里,选择对应模型

3.7 上传原视频
以这个视频作为示例
在Load Video(Upload) 选择视频素材

3.8 生成视频
然后就可以点击Queue Prompt开始生成视频了
视频生成的大部分时间都集中在KSampler这个组件里,在生成过程中上面有一个进度条

另外在打开ComfyUI的windows终端里也可以看到进度以及错误信息

生成结束后,视频会在AnimateDiff Combine这个组件里合成

下面是一个结果的对比示例
4.Debug
其中有三个组件会储存中间信息帮助分析错误
视频帧

ControlNet OpenPose处理结果

结果视频帧

其他设置
5.1 通过改变图片种子值(seed)来修改图片内容

5.2 修改人物提示词
prompt prefix: 图片主体

prompt travel: 变化的背景内容,会根据不同的frames添加进图片

在这个例子中:
第0-23帧,画面提示词是:
High detail, girl, short pant, t-shirt, sneaker, a modern living room
第24-59帧:
High detail, girl, short pant, t-shirt, sneaker, beach and sun
第60帧之后:
High detail, girl, short pant, t-shirt, on the moon
5.3 输入视频参数

frame_load_cap : 载入视频的最大帧数
select_every_nth : 每隔~帧载入1帧画面,这样会导致跳过一些帧,导致视频不连贯,但是由于减少了需要处理的帧数,这样可以提高处理速度