ControlNet Adding Conditional Control to Text-to-Image Diffusion Models

ControlNet: Adding Conditional Control to Text-to-Image Diffusion Models

TL; DR:ControlNet 使得我们能通过输入额外的条件图(如 Canny 边缘、人体姿态、深度图等),对 SD 生成结果的空间位置有更准确的控制。它拷贝 SD 部分原权重作为一个新的分支进行微调训练,同时维持 SD 原权重分支不变,并在开始训练使用零卷积将二者相连。从而能利用已经在大规模图片数据上预训练的 SD 权重,尽量保持原模型能力,且训练高效。

方法

模型结构

ControlNet 对 SD 原模型的 adapt 如图所示。图中 x 是输入噪声图,y 是输出,c 是条件图输入。拷贝一份原参数权重作为另一分支,进行训练,原参数权重分支不动,两分支之间用零卷积链接。所谓零卷积,就是权重和偏置都初始化为 0 的 1x1 卷积。这样,在训练刚开始时,由于零卷积的输出都是 0,因此改动后的模型和原 SD 模型的输出是完全一致的。随着训练的进行,才会产生变化。这样的结构能保证不会对预训练的 SD 模型带来有害的噪声。

文章以 SD txt2img 为例,详细介绍了插入 ControlNet 的方法。原 SD 的 UNet 网络共有 12 层降采样,12 层上采样和 1 层中间层。其特征图共有 4 中空间分辨率大小(64、32、16、8)。ControlNet 对 UNet 的 encoder 部分(12 层降采样 + 1 层中间层)构建了可训练拷贝。其输出分别经过零卷积,输入给原 SD 模型的解码器部分。

此外,SD 是隐层扩散模型(LDM),其扩散过程时发生在 latent 空间的。输入的条件图自然也需要转换到 latent 空间,ControlNet 是使用了四层卷积层完成了这个转换,将 512x512 的真实图片转换到 64x64 的 latent 空间。

训练

ControlNet 是在预训练好的模型权重上,加入一些参数,然后进行微调。其训练的目标函数与 SD 是完全一致的,但是加入了各种条件图(如 Canny、人体姿势等)作为输入。在训练时 ControlNet 时,还会有 50% 的概率将文本 prompt 替换为空字符串,从而训练 ControlNet 直接识别条件图语义的能力。

作者在训练 ControlNet 时还观察到一个奇特的现象,即模型并不是逐渐学习到条件控制能力的,而是在某一步,突然就会了。如下图,模型在 6133 步,突然就能精准地按照输入的 Canny 边缘进行生成了。作者称这为 "突然收敛现象" (sudden convergence phenomenon)。

推理

训练结束之后,推理时就可以按照输入的条件图来控制空间位置,进行生成了。这里作者还交代了几点细节,用于更好地控制生成结果。

CFG-RW :SD 在训练时使用了 Classifier-Free Guidance 的方法,即同时训练模型条件生成和无条件生成的能力,然后在生成时,也同时生成条件结果和无条件结果,并根据指定的 CFG Scale 得到最终的生成结果: ϵ prd = ϵ uc + β cfg ( ϵ c − ϵ uc ) \epsilon_{\text{prd}}=\epsilon_{\text{uc}}+\beta_{\text{cfg}}(\epsilon_{\text{c}}-\epsilon_{\text{uc}}) ϵprd=ϵuc+βcfg(ϵc−ϵuc) 。ControlNet 中,条件生成的结果既可以加到 ϵ uc \epsilon_{\text{uc}} ϵuc 和 ϵ c \epsilon_{\text{c}} ϵc 中,也可以只添加到 ϵ c \epsilon_{\text{c}} ϵc 中。如果 prompt 为空(有 50% 概率),此时如果同时加到 ϵ uc \epsilon_{\text{uc}} ϵuc 和 ϵ c \epsilon_{\text{c}} ϵc 中,则相当于没有 CFG 了,而如果只加到 ϵ c \epsilon_{\text{c}} ϵc 中,那么 CFG 引导又太强。这里作者的策略是使用分辨率加权(CFG-RW),即 w i = 64 / h i w_i=64/h_i wi=64/hi 其中 h i h_i hi 是第 i 层的空间分辨率,如 h 1 = 8 , h 2 = 16 , ... h_1=8,h_2=16,\dots h1=8,h2=16,... 。

从下图的结果来看,嘉乐 CFG-RW 的策略后,生成的结果会好很多。

组合多种 ControlNet:我们可以对同一次生成组合使用多种 ControlNet,并不需要任何加权或插值。如下面的例子就组合了人体姿势和手部的深度图作为条件。

实验结果

总结

ControlNet 的影响力不言而喻,我们终于能对生成结果的空间位置有精确的控制,而不需要再一次次的碰运气。ICCV 2023 Best Paper 实至名归。

相关推荐
懒羊羊吃辣条几秒前
电力负荷预测怎么做才不翻车
人工智能·深度学习·机器学习·时间序列
人工智能培训2 小时前
基于Transformer的人工智能模型搭建与fine-tuning
人工智能·深度学习·机器学习·transformer·知识图谱·数字孪生·大模型幻觉
永恒的溪流3 小时前
环境出问题,再修改
pytorch·python·深度学习
大模型玩家七七3 小时前
向量数据库实战:从“看起来能用”到“真的能用”,中间隔着一堆坑
数据库·人工智能·python·深度学习·ai·oracle
子午4 小时前
【2026计算机毕设~AI项目】鸟类识别系统~Python+深度学习+人工智能+图像识别+算法模型
图像处理·人工智能·python·深度学习
传说故事4 小时前
【论文自动阅读】Goal Force: 教视频模型实现Physics-Conditioned Goals
人工智能·深度学习·视频生成
FPGA小c鸡4 小时前
【FPGA深度学习加速】RNN与LSTM硬件加速完全指南:从算法原理到硬件实现
rnn·深度学习·fpga开发
Aaron15885 小时前
通信灵敏度计算与雷达灵敏度计算对比分析
网络·人工智能·深度学习·算法·fpga开发·信息与通信·信号处理
龙腾AI白云5 小时前
AI算法实战:逻辑回归在风控场景中的应用
深度学习·机器学习·知识图谱
2501_948120156 小时前
基于神经网络的音乐情感分析器
人工智能·深度学习·神经网络