Stable Diffusion插件实战篇:从静态到动态,AnimateDiff动画生成全攻略

AI教程 2024-04-11

在这个充满创意与无限可能的数字时代,我们借助先进的AI技术,能够轻松将静态图像转化为生动有趣的动画。

AnimateDiff动画插件作为Stable Diffusion实战进阶篇,今天就分享给大家。

找一张比较喜欢的图片丢进图生图区域:

image.png

然后和之前的两篇文章一样在下方进行AnimateDiff的参数设置,为了确保动画风格和原图一致,这里必须选一个风格相近的大模型。

与此同时重绘幅度最好在0.75以上,其他参数可以参考下图:

总帧数16、帧率8、插值次数3、帧插值FILM。

image.png

与此同时在提示词中也可以加入一些来描述画面的提示词,尤其是有关画面运动和变化的例如翻动的裙摆fluttering skirts,移动的云层moving clouds,飞舞的花瓣flying petals。

image.png

这样一来就完成了一个简单的图生视频操作,其实最简单的可以是先在文生图中生成一个想要绘制的图片,然后再放到图生图中进行上面的操作。

这个要做成动画的图片也不一定是得AI画出来的,也可以用现实拍摄的照片。而且AnimateDiff也不仅可以生成插画风格的图片,真实照片风格的也可以。

不过目前这种图生动画有一个问题,就是生成出来的东西有的时候和原图不太像。

image.png

这也是因为导入后的图片会经过一次SD的图生图,然后再到AnimateDiff制作动画。

再者可能有同学发现了动画到最后部分会变得和原图越来越不像,这也是因为AnimateDiff会随着时间推移向图片添加噪声来促使图片“动起来”。

当然这个也有解决方案:

image.png

这个Latent power和Latent scale就是用来协助控制动画基于原图变化的幅度:Power越小Scale越大:动画基于原片演化的幅度就越小,反之幅度越大。

因为这个参数对图像的影响和时间(帧数)相关,且这个是指数性的。

如果想让动画和原图更像,那么把重绘幅度调到0.6-0.7,power降低到0.8-0.9,Scale提高到48-64,并且总帧数不要超过16。

但是这么做会让动画受到一定的限制,就是看起来好像没怎么动一样。

当然如果只是想要让图片大概动起来对于像不像没太大执念的话,可以去看一下文末的链接,那里面有其他的详细参数。

这个时候可能有小伙伴注意到了AnimateDiff不仅能上传图片还能上传视频:

image.png

这个就是可以让一个视频生成为动画,一般推荐去文生图中进行操作。

在视频上传后系统会自动同步视频的总帧数和帧率

image.png

如果是跟我一样视频比较长的,最好去用个剪辑软件把帧率降低一下,降到15帧左右比较好。

接下来就是照常写提示词的部分,不过有趣的地方在于可以选择是否要开启Lora。与此同时可以打开ControlNet来进一步控制视频中角色的动作、姿势、形象等,只需要打开ControlNet不需要上传图片:

image.png

这样一来点击生成就可以制作出动画了

image.png

虽然说和之前学习的视频重绘很像,但是AnimateDiff的特性可以让动画更加连贯,基本上不会有闪烁出现。

如果想要更好的还原视频的话就需要把视频导出为帧序列,然后在图生图中进行批量处理,这里的思路和Mov2Mov一致,感兴趣的小伙伴可以翻翻我之前的笔记:

(Stable Diffusion进阶篇:AI动画-Mov2Move)

这种操作在ComfyUI中进行会更加合适一些。

当然AnimateDiff还有一个很厉害的地方,就是视频可以无缝演化变化。

这个要归功于一个很厉害的功能:Prompt Travel

在之前我们提到过动图的绘制主要基于输入的提示词决定,如果视频足够长的话可以通过特定的语法结果控制AI在特定的帧数内绘制一组提示词,然后在帧数到达一定数值之后自动切换到另一组提示词上。

例如我先生成一个动图:

image.png

然后在正面提示词那里换行输入第二段提示词:

image.png

这个0:close eyes代表着第0帧是闭上眼睛的,8:open eyes代表着第八帧睁开眼睛。

image.png

这样是不是很好理解,当然还可以进行一些进阶操作:

0: close eyes, worried, no_expressions,

8:open eyes, smile,

16: laughing, looking at viewer,

当然AI是具有随机性的,如果结果不满意还可以把种子随机后多试几次。只要总帧数够长,那这个Travel也能更多样化。

可以复制粘贴一段原教程UP给的提示词:

best quality,masterpiece,1girl, upper body,detailed face, looking at viewer, outdoors, upper body, standing, outdoors,

0:(spring:1.2), cherry blossoms, falling petals, pink theme,

16:(summer:1.2), sun flowers, hot summer, green theme,

32:(autumn:1.2), falling leaves, maple leaf, yellow trees, orange theme

48:(winter:1.2), snowing, snowflakes, white theme,

负面:nsfw,(worst quality:2),(low quality:2),(normal quality:2), lowres, watermark,

image.png

总帧数改为60且重叠为2

这样就能生成一段一年四季的动画了。

目前还有一些其他的东西可以结合AnimateDiff使用,主要是一些辅助组件例如Motion LoRA。

这个Motion LoRA是AnimateDiff的开发者们额外训练的一系列可以辅助控制镜头运动轨迹的LoRA模型。

image.png

https://huggingface.co/conrevo/AnimateDiff-A1111/tree/main/lora

一共有八个motion LoRA,对应不同方向的移动和旋转缩放,用的时候就像用普通的LoRA一样加入提示词即可,下载放置的地方也和普通LoRA一致。

但是有几点也需要注意,如果想要塑造镜头的位移变化,那么闭环里面最好选N

其次这些LoRA是基于V2模型训练的,所以也只能搭配V2的运动模型使用(此前的演示什么的都是V3模型)。

还有一点是Motion LoRA有时可能会出现明显的素材水印,目前作者推荐适当减低LoRA权重可以降低水印出现的概率。

V3版本的运动模型出现的时候作者也更新了一个Domain Adapter的域适配器LoRA,这是一个在视频的“静态帧”上训练的模块,作用于在让生成专注运动部分的建模。

这个模型可以让动画里的动作更加自然,也能消除诸如水印这样的负面特性,不过这个只能搭配V3运动模型使用。高权重下画面会比较稳定,但是也会降低运动的多样性。

当然,AnimateDiff还有许多其他高级功能和用法等待我们去探索。无论是想要制作更加复杂的动画效果,还是想要进一步提升动画的质量和逼真度,都可以通过调整参数和尝试不同的提示词来实现。

@版权声明:部分内容从网络收集整理,如有侵权,请联系删除!

相关文章