蜘蛛侠妖娆起舞,下一代 ControlNet 来了!贾佳亚团队推出,即插即用,还能控制视频生成
- 量子位
2024-08-17 12:42
只用不到 10% 的训练参数,就能实现 ControlNet 一样的可控生成!而且 SDXL、SD1.5 等 Stable Diffusion 家族的常见模型都能适配,还是即插即用。
同时还能搭配 SVD 控制视频生成,动作细节控制得精准到手指。
在这些图像和视频的背后,就是港中文贾佳亚团队推出的开源图像 / 视频生成引导工具 ——ControlNeXt。
从这个名字当中就能看出,研发团队给它的定位,就是下一代的 ControlNet。
像大神何恺明与谢赛宁的经典大作 ResNeXt(ResNet 的一种扩展),起名字也是用的这个路数。
有网友认为这个名字是实至名归,确实是下一代的产品,将 ControlNet 提高了一个档次。
还有人直言 ControlNeXt 是规则改变者,让可控生成的效率提升了一大截,期待看到人们用它创作的作品。
蜘蛛侠跳起美女舞蹈
ControlNeXt 支持多款 SD 系模型,而且即插即用。
其中包括了图像生成模型 SD1.5、SDXL、SD3(支持 Super Resolution),还有视频生成模型 SVD。
话不多说,直接看效果。
可以看到,在 SDXL 中加入边缘(Canny)引导,绘制出的二次元少女和控制线条几乎完美贴合。
即使控制轮廓又多又细碎,模型依然可以绘制出符合要求的图片。
而且无需额外训练就可与其他 LoRA 权重无缝集成。
比如在 SD1.5 中,可以把姿势(Pose)控制条件与各种 LoRA 搭配使用,形成风格迥异乃至跨越次元,但动作相同的角色。
另外,ControlNeXt 也支持遮罩(mask)和景深(depth)的控制模式。
在 SD3 当中还支持 Super Resolution(超级分辨率),可生成超高清晰度的图像。
视频生成当中,ControlNeXt 可以实现对人物动作的控制。
比如让蜘蛛侠也跳起 TikTok 中的美女舞蹈,就连手指的动作也模仿得相当精准。
甚至让一把椅子也长出手跳同样的舞蹈,虽然是抽象了一些,但单看动作复刻得还算不错。
而且相比于原始的 ControlNet,ControlNeXt 需要的训练参数更少,收敛速度也更快。
比如在 SD1.5 和 SDXL 中,ControlNet 需要的可学习参数分别是 3.61 亿和 12.51 亿,但 ControlNeXt 分别只需要 3 千万和 1.08 亿,不到 ControlNet 的 10%。
而在训练过程中,ControlNeXt 在 400 步左右就已接近收敛,但 ControlNet 却需要十倍甚至数十倍的步数。
生成的速度也比 ControlNet 更快,平均下来 ControlNet 相当于基础模型会带来 41.9% 的延时,但 ControlNeXt 只有 10.4%。
那么,ControlNeXt 是如何实现的,对 ControlNet 进行了哪些改进呢?
更轻量化的条件控制模块
首先用一张图来了解一下 ControlNeXt 的整个工作流程。
其中轻量化的关键,是 ControlNeXt 移除了 ControlNet 中的庞大控制分支,改为引入一个由少量 ResNet 块组成的轻量级卷积模块。
这个模块负责提取控制条件(如语义分割掩码、关键点先验等)的特征表示。
其中的训练参数量通常不到 ControlNet 中预训练模型的 10%,但仍能很好地学习将输入的条件控制信息,这种设计大大降低了计算开销和内存占用。
具体来说,它从预训练模型的不同网络层的中等距采样,形成用于训练的参数子集,其余参数则被冻结。
另外在设计 ControlNeXt 的架构时,研究团队还保持了模型结构与原始架构的一致性,从而实现了即插即用。
无论是 ControlNet 还是 ControlNeXt,条件控制信息的注入都是一个重要环节。
在这个过程中,ControlNeXt 研究团队主要针对两个关键问题进行了深入研究 —— 注入位置的选择和注入方式的设计。
研究团队观察发现,在大多数可控生成任务中,指导生成的条件信息形式相对简单,且与去噪过程中的特征高度相关。
所以团队认为,没有必要在去噪网络的每一层都注入控制信息,于是选择了只在网络的中间层将条件特征与去噪特征聚合。
聚合的方式也尽可能简单 —— 在用交叉归一化对齐两组特征的分布后,直接将其相加。
这样既能确保控制信号影响去噪过程,又避免了注意力机制等复杂操作引入额外的学习参数和不稳定性。
这之中的交叉归一化,也是 ControlNeXt 的另一项核心技术,替代了此前常用的 zero-convolution 等渐进式初始化策略。
传统方法通过从零开始逐步释放新模块的影响力来缓解崩塌问题,但往往导致的结果就是收敛速度慢。
交叉归一化则直接利用主干网络去噪特征的均值 μ 和方差 σ 对控制模块输出的特征做归一化,使二者的数据分布尽量对齐。
(注:ϵ 是为数值稳定性而添加的小常数,γ 为缩放参数。)
归一化后的控制特征再通过尺度和偏移参数调整幅度和基线,再与去噪特征相加,既避免了参数初始化的敏感性,又能在训练初期就让控制条件发挥作用,加快收敛进程。
此外,ControlNeXt 还借助控制模块学习条件信息到隐空间特征的映射,使其更加抽象和语义化,更有利于泛化到未见过的控制条件。
项目主页:
https://pbihao.github.io/projects/controlnext/index.html
论文地址:
https://arxiv.org/abs/2408.06070
GitHub:
https://github.com/dvlab-research/ControlNeXt
本文来自微信公众号:量子位(ID:QbitAI),作者:克雷西
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。