
ComfyUI-AnimateDiff-Evolved(3)_上下文设置理解

前边还有两篇内容哦,感兴趣可以从前边这两篇顺过来~
ComfyUI-AnimateDiff-Evolved(1)_节点和模型基础介绍-CSDN博客
ComfyUI-AnimateDiff-Evolved(2)_GEN1和GEN2两种节点有何区别?以及怎么用?-CSDN博客
本篇内容有点长,大概有3500字左右,所以可以先点个收藏哦,感谢♥
对于视频生成来说,上下文是一个非常重要的概念,在生成新的一帧内容的时候,最好能参考前边的内容,这样才能尽量的让动画动作连贯,不该闪烁的地方不要乱闪烁,那么这篇我们就一起来看下animtediff evolved节点是如何设置上下文的。
可以看到context_options链接出来有四种节点。
这些节点本身的目的是延长动画长度,以解决AnimateDiff模型(通常为16帧)和HotshotXL模型(8帧)的动画时长生成限制。
上下文选项
上下文选项(Context_options)通过逐部分生成动画的方式来工作,同时支持SD扩散模型、ControlNets、IPAdapters等,有效地将显存(VRAM)使用限制在等同于上下文长度潜空间变量(latents)的水平。
相比之下,视图选项(view_opts)通过分割运动模型看到的潜空间变量(latents)来工作。这不会减少显存(VRAM)的使用,但通常比上下文选项(context_options)更稳定、更快,因为潜空间变量(latents)不需要经过整个SD unet。
上下文选项和视图选项可以结合使用,以获得两者的最佳效果——更长的上下文长度可以用来获得更稳定的输出,代价是使用更多的VRAM(因为上下文长度决定了GPU上同时进行多少SD采样)。只要你有足够的VRAM,你也可以使用仅视图上下文选项,只使用视图选项(并自动使上下文长度等同于完整的潜在变量),使用更高的VRAM而获取速度提升。
上下文/视图选项有两种类型:标准和循环。标准选项不会输出循环的动画。而循环选项,顾名思义,会输出可以循环的动画(从结束到开始不会感觉有明显的接缝)。在代码重写之前,唯一可用的上下文是循环类型。
如果你不希望输出循环,我建议首先使用标准静态选项。
在下面的动画中,绿色表示上下文(Contexts),红色表示视图(Views)。简而言之,绿色是加载到VRAM(并采样)的潜空间变量(latents)数量,而红色是一次传递给运动模型的潜空间变量(latents)数量。
Context Options◆Standard Static
假设参数设定为:
(latent count: 64, context_length: 16, context_overlap: 4, total steps: 20)
动画可能有点快,所以我们看下静帧:
这样是不是就很好理解了?每一步,context都会从前往后走一遍,每次读入16张,每次和每次之间的重叠部分(overlap)是4,view的行为,在这个案例中,与context行为保持一致。
我们来逐项看下参数:
- context_length: 一次扩散的latents数量。
- context_overlap: 相邻窗口之间重叠的latents数量。
- fuse_method: 对窗口结果进行平均的方法。
- use_on_equal_length: 当为 True 时,允许在 latent count(潜空间变量数量) 与 context_length(上下文长度) 匹配时使用上下文,有点绕口...大概理解这个意思就行。
- start_percent: 当多个 Context Options 链接时,允许调度。
- guarantee_steps: 调度上下文时,确定应使用上下文的最小采样步骤数。.
- prev_context: 允许链接上下文。
- view_options: 当 context_length > view_length (除非另有指定)时,允许在每个上下文窗口中使用 view_options 。
Context Options◆Standard Uniform
假设参数为:(latent count: 64, context_length: 16, context_overlap: 4, context_stride: 1, total steps: 20)
假设参数修改为:(latent count: 64, context_length: 16, context_overlap: 4, context_stride: 2, total steps: 20)
我们仍然拆解为静帧来看下到底发生了什么:)
(latent count: 64, context_length: 16, context_overlap: 4, context_stride: 1, total steps: 20)
(latent count: 64, context_length: 16, context_overlap: 4, context_stride: 2, total steps: 20)
emm,还是有点复杂,我也不确定我的理解是正确的,大家先自行体会吧。
- context_stride:相邻潜在变量之间的最大距离为 2^(stride-1)。
- 其他参数与standard static同理,不再赘述。
Context Options◆Looped Uniform
主要是多了closed_loop这个选项。
(latent count: 64, context_length: 16, context_overlap: 4, context_stride: 1, closed_loop: False, total steps: 20)
(latent count: 64, context_length: 16, context_overlap: 4, context_stride: 1, closed_loop: True, total steps: 20)
重点是如果没勾选closed_loop,那么跟standard基本一样:
但如果勾选了closed_loop,那么在画面的最后会再看一下前边的关键帧:
- Closed_loop:当为 True 时,添加额外的窗口以增强循环。
- 其他参数同前边节点;
Context Options◆Views Only [VRAM⇈]
直接把所有latent读入到显存中,所以显存占用会暴增。
(latent count: 64, view_length: 16, view_overlap: 4, View Options◆Standard Static, total steps: 20)
窗口选项(view_opts)
主要有三种
View Options◆Standard Static
(latent count: 64, view_length: 16, view_overlap: 4, Context Options◆Standard Static, context_length: 32, context_overlap: 8, total steps: 20)
- view_length:一次传递到运动模型的上下文中的latents数量。
- view_overlap:相邻采样窗口之间的最小重叠数量。
- fusion_method:对窗口结果进行平滑的方法。
View Options◆Standard Uniform
(latent count: 64, view_length: 16, view_overlap: 4, view_stride: 1, Context Options◆Standard Static, context_length: 32, context_overlap: 8, total steps: 20)
- view_stride:相邻latent变量之间的最大距离为 2^(stride-1)。
View Options◆Looped Uniform
(latent count: 64, view_length: 16, view_overlap: 4, view_stride: 1, closed_loop: False, Context Options◆Standard Static, context_length: 32, context_overlap: 8, total steps: 20)
注意:除非您出于非常特殊的原因使用它,否则它可能不会看起来很好,因为他会每一段内部做循环。
- Closed_loop:当为 True 时,添加额外的窗口以增强循环。
好,下一篇我们继续了解采样和迭代相关的参数设置;
这里是聚梦小课堂,您的点赞和关注是我们更新的最大动力,感谢您的观看。




更多推荐
所有评论(0)