一张图片=一段动画(Stable Diffusion进阶篇:AnimateDiff动画插件3)
在前两篇关于AnimateDiff的笔记中学习了一些简单的操作和参数的相关知识点,而今天的文章作为AnimateDiff部分的最后一篇,则是要学习一些进阶的操作。
不废话直接进入正题。
图片生成视频:
找一张比较喜欢的图片丢进图生图区域: 然后和之前的两篇文章一样在下方进行AnimateDiff的参数设置,为了确保动画风格和原图一致,这里必须选一个风格相近的大模型。与此同时重绘幅度最好在0.75以上,其他参数可以参考下图:
总帧数16、帧率8、插值次数3、帧插值FILM。
与此同时在提示词中也可以加入一些来描述画面的提示词,尤其是有关画面运动和变化的例如翻动的裙摆fluttering skirts,移动的云层moving clouds,飞舞的花瓣flying petals。这样一来就完成了一个简单的图生视频操作,其实最简单的可以是先在文生图中生成一个想要绘制的图片,然后再放到图生图中进行上面的操作。
这个要做成动画的图片也不一定是得AI画出来的,也可以用现实拍摄的照片。而且AnimateDiff也不仅可以生成插画风格的图片,真实照片风格的也可以。
不过目前这种图生动画有一个问题,就是生成出来的东西有的时候和原图不太像。
这也是因为导入后的图片会经过一次SD的图生图,然后再到AnimateDiff制作动画。
再者可能有同学发现了动画到最后部分会变得和原图越来越不像,这也是因为AnimateDiff会随着时间推移向图片添加噪声来促使图片“动起来”。
当然这个也有解决方案:
这个Latent power和Latent scale就是用来协助控制动画基于原图变化的幅度:Power越小Scale越大:动画基于原片演化的幅度就越小,反之幅度越大。
因为这个参数对图像的影响和时间(帧数)相关,且这个是指数性的。
如果想让动画和原图更像,那么把重绘幅度调到0.6-0.7,power降低到0.8-0.9,Scale提高到48-64,并且总帧数不要超过16。
但是这么做会让动画受到一定的限制,就是看起来好像没怎么动一样。
当然如果只是想要让图片大概动起来对于像不像没太大执念的话,可以去看一下文末的链接,那里面有其他的详细参数。这个就是可以让一个视频生成为动画,一般推荐去文生图中进行操作。 这个时候可能有小伙伴注意到了AnimateDiff不仅能上传图片还能上传视频:
在视频上传后系统会自动同步视频的总帧数和帧率
如果是跟我一样视频比较长的,最好去用个剪辑软件把帧率降低一下,降到15帧左右比较好。接下来就是照常写提示词的部分,不过有趣的地方在于可以选择是否要开启Lora。与此同时可以打开ControlNet来进一步控制视频中角色的动作、姿势、形象等,只需要打开ControlNet不需要上传图片:
这样一来点击生成就可以制作出动画了 虽然说和之前学习的视频重绘很像,但是AnimateDiff的特性可以让动画更加连贯,基本上不会有闪烁出现。如果想要更好的还原视频的话就需要把视频导出为帧序列,然后在图生图中进行批量处理,这里的思路和Mov2Mov一致,感兴趣的小伙伴可以翻翻我之前的笔记:
(Stable Diffusion进阶篇:AI动画-Mov2Move)
这种操作在ComfyUI中进行会更加合适一些。
当然AnimateDiff还有一个很厉害的地方,就是视频可以无缝演化变化。
这个要归功于一个很厉害的功能:Prompt Travel
在之前我们提到过动图的绘制主要基于输入的提示词决定,如果视频足够长的话可以通过特定的语法结果控制AI在特定的帧数内绘制一组提示词,然后在帧数到达一定数值之后自动切换到另一组提示词上。
例如我先生成一个动图:
然后在正面提示词那里换行输入第二段提示词: 这个0:close eyes代表着第0帧是闭上眼睛的,8:open eyes代表着第八帧睁开眼睛。 这样是不是很好理解,当然还可以进行一些进阶操作: 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,
总帧数改为60且重叠为2
这样就能生成一段一年四季的动画了。目前还有一些其他的东西可以结合AnimateDiff使用,主要是一些辅助组件例如Motion LoRA。
这个Motion LoRA是AnimateDiff的开发者们额外训练的一系列可以辅助控制镜头运动轨迹的LoRA模型。
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插件的操作并不难,主要是后续自己的不断探索才是最有趣的。
想必现在很多小伙伴学会了如何使用AnimateDiff之后会诞生一些比较不是那么适合说出来的想法。
我首先要说的是互联网不是法外之地。
其次做完请私信我帮你看看,我可以免费帮忙看看有什么需要改进的。
那么大伙就下篇笔记见啦,我自己也要去实践一番了。
best quality,masterpiece,1girl, upper body,detailed face, looking at viewer, outdoors, upper body, standing, outdoors,Negative prompt: nsfw,(worst quality:2),(low quality:2),(normal quality:2), lowres, watermark,
- Steps: 30
- Sampler: Euler a
- CFG scale: 7
- Seed: 2524737395
- Size: 512x512
- Model hash: e4a30e4607
- Model: majicmixRealistic_v6
- Denoising strength: 0.7
- ENSD: 31337
- Hires upscale: 2
- Hires upscaler: R-ESRGAN 4x+
- Version: v1.7.0
本篇部分参考素材来源
原教程链接(进阶玩法参数):Motion LoRA下载链接:
https://huggingface.co/conrevo/AnimateDiff-A1111/tree/main/lora