摘要
为了增强文本到图像扩散模型的可控性,现有方法(如 ControlNet)引入了基于图像的条件控制。 在本文中,我们发现现有方法在生成与图像条件控制一致的图像方面仍然面临着重大挑战。 为此,我们提出了 ControlNet++,一种通过明确优化生成图像和条件控制之间的像素级循环一致性来改进可控生成的新方法。 具体来说,对于输入的条件控制,我们使用预训练的判别性奖励模型来提取生成的图像的对应条件,然后优化输入条件控制和提取的条件之间的一致性损失。 一种直接的实现方法是从随机噪声生成图像,然后计算一致性损失,但这种方法需要存储多个采样时间步的梯度,导致相当大的时间和内存成本。 为了解决这个问题,我们引入了一种高效的奖励策略,该策略通过添加噪声来故意扰乱输入图像,然后使用单步去噪图像进行奖励微调。 这避免了与图像采样相关的巨额成本,从而实现了更有效的奖励微调。 大量的实验表明,ControlNet++ 在各种条件控制下显著提高了可控性。 例如,对于分割掩码、线条艺术边缘和深度条件,它分别比 ControlNet 提高了 11.1% mIoU、13.4% SSIM 和 7.6% RMSE。 所有代码、模型、演示和组织数据已在我们 GitHub 仓库 上开源。
关键词:
可控生成 扩散模型 ControlNet
图 1
:
(a)
在相同输入图像条件和文本提示下,
(b)
我们生成的图像的提取条件与输入更一致,
(c,d)
而其他方法无法实现准确可控的生成。 SSIM 分数衡量所有输入边缘条件与提取的边缘条件之间的相似度。 所有线边缘均由 ControlNet
[63]
使用的相同线检测模型提取。
1
绪论
扩散模型的出现和改进
[50, 12, 43]
,以及大规模图像-文本数据集的引入
[49, 48]
,促进了文本到图像生成领域的重大进步。 然而,正如谚语“一张图片胜过千言万语”所表达的那样,仅通过语言来准确而详细地描述图像具有挑战性,而这种困境也困扰着现有的文本到图像扩散模型
[43, 46]
。 为此,许多研究侧重于将条件控制(如分割掩码)纳入文本到图像扩散模型
[63, 30, 62, 37, 22]
。 尽管这些方法的多样性,但核心目标仍然是利用显式的基于图像的条件控制来促进更准确和可控的图像生成。
实现可控图像生成可能涉及从头开始重新训练扩散模型
[43, 37]
,但这需要很高的计算量,并且大型公共数据集稀缺
[63]
。 鉴于此,一种可行策略是对预训练的文本到图像模型进行微调
[23, 61]
或引入可训练模块
[63, 30, 62]
,如 ControlNet
[63]
。 然而,尽管这些研究已经探索了文本到图像扩散模型中可控性的可行性
[63, 30, 62]
,并扩展了各种应用
[23, 37, 22]
,但在实现精确和细粒度的控制方面仍然存在显著差距。 如图
1
所示,现有的可控生成方法(
e.g.
,ControlNet
[63]
和 T2I-Adapter
[30]
)仍然难以准确地生成与输入图像条件一致的图像。 例如,T2I-Adapter-SDXL 在所有生成的图像中始终在额头上产生错误的皱纹,而 ControlNet v1.1 引入了许多错误的细节。 遗憾的是,当前的努力缺乏专门的方法来提高可控性,这阻碍了该研究领域的进展。
为了解决这个问题,我们将基于图像的可控生成建模为从输入条件控制到输出生成图像的图像翻译任务
[17]
。 受 CycleGAN
[71]
的启发,我们建议采用预训练的判别模型来从生成的图像中提取条件,并直接优化循环一致性损失以获得更好的可控性。 想法是,如果我们将图像从一个领域翻译到另一个领域(条件
c
v
→
生成的图像
x
0
′
),然后再翻译回来(生成的图像
x
0
′
→
条件
c
v
′
),我们应该回到起点 (
c
v
′
=
c
v
),如图
2
所示。 例如,给定一个分割掩码作为条件控制,我们可以使用现有的方法,例如 ControlNet
[63]
,来生成相应的图像。 然后,可以通过预先训练的分割模型获得这些生成图像的预测分割掩码。 理想情况下,预测的分割掩码和输入分割掩码应该一致。 因此,循环一致性损失可以表述为输入和预测分割掩码之间逐像素分类损失。 与现有的相关工作
[63, 30, 27, 37, 65]
不同,这些工作通过将条件控制引入潜在空间去噪过程来隐式地实现可控性,我们的方法
显式地
在像素空间优化可控性,以获得更好的性能,如图
3
所示。
为了在扩散模型的背景下实现像素级损失,一种直观的方法涉及执行扩散模型的推理过程,从随机高斯噪声开始,执行多个采样步骤以获得最终生成的图像,遵循最近专注于通过人类反馈提高图像质量的工作
[60, 36, 11]
。 但是,多次采样会导致效率问题,并且需要在每个时间步存储梯度,从而导致显着的时间和 GPU 内存消耗。 我们证明从随机高斯噪声开始采样是不必要的。 相反,通过直接向训练图像添加噪声来扰乱它们与输入条件控制的一致性,然后使用单步去噪图像来重建一致性,我们可以进行更高效的奖励微调。 我们的贡献总结如下:
图 2
:
循环一致性的说明
。 我们首先提示扩散模型
𝔾
根据给定的图像条件
c
v
和文本提示
c
t
生成图像
x
0
′
,然后使用预训练的判别模型
𝔻
从生成的图像
x
0
′
中提取相应的图像条件
c
^
v
。 循环一致性定义为提取的条件
c
^
v
和输入条件
c
v
之间的相似性。
•
新见解
: 我们发现,现有的可控生成工作在可控性方面仍然表现不佳,生成的图像与输入条件有很大偏差,并且缺乏明确的改进策略。
•
一致性奖励反馈
: 我们展示了预训练的判别式模型可以作为强大的视觉奖励模型,以循环一致的方式提高可控扩散模型的可控性。
•
高效奖励微调
: 我们破坏了输入图像和条件之间的一致性,并实现了单步去噪以进行高效的奖励微调,避免了图像采样造成的时延和内存开销。
•
评估和有希望的结果
: 我们提供了一个统一的公共评估,用于评估各种条件控制下的可控性,并证明 ControlNet++ 综合优于现有方法。
2
相关工作
2.1
基于扩散的生成模型
扩散概率模型在
[50]
中提出,并经历了重大进步
[25, 12, 19]
,这得益于训练和采样策略的迭代改进
[18, 51, 52]
。 为了减轻训练扩散模型的计算需求,潜在扩散
[43]
将像素空间扩散过程映射到潜在特征空间。 在文本到图像合成的领域,扩散模型
[43, 31, 46, 35, 41, 40]
集成了 UNet
[44]
去噪器和来自预训练语言模型(如 CLIP
[38]
和 T5
[39]
)的文本嵌入之间的交叉注意力机制,以促进合理的文本到图像生成。 此外,扩散模型被应用于图像编辑任务
[14, 29, 3, 24]
,通过操纵输入
[40]
、编辑交叉注意力
[16]
和微调模型
[45]
来实现。 尽管扩散模型具有惊人的能力,但语言是一种稀疏且高度语义的表示,不适合描述密集的、低语义的图像。 此外,现有方法
[43, 35]
仍然难以理解详细的文本提示,这对可控生成提出了严峻挑战
[63]
。
图 3
:
(a)
现有方法通过引入基于图像的条件控制
c
v
到扩散模型的去噪过程,并以潜在空间去噪损失的指导来实现隐式可控性。
(b)
我们利用判别式奖励模型
𝔻
来明确优化
𝔾
的可控性,通过像素级循环一致性损失来实现。
2.2
可控文本到图像扩散模型
为了在预训练的文本到图像扩散模型中实现条件控制,ControlNet
[63]
和 T2I-Adapter
[30]
引入了额外的可训练模块用于引导图像生成。 此外,最近的研究采用各种提示工程
[27, 64, 61]
和交叉注意力约束
[58, 6, 23]
以实现更规范的生成。 一些方法还探索了在单个扩散模型中进行多条件或多模态生成
[37, 21, 65]
或专注于基于实例的可控生成
[54, 69]
。 但是,尽管这些方法探索了可行性和应用,但仍然缺乏一种明确的方法来增强各种控制下的可控性。 此外,现有工作通过扩散模型的去噪过程隐式地学习可控性,而我们的 ControlNet++ 以显式的循环一致性方式实现了这一点,如图
3
所示。
2.3
语言和视觉奖励模型
奖励模型经过训练来评估生成模型的结果与人类期望的匹配程度,其量化结果将用于促进生成模型以实现更好、更可控的生成。 它通常在 NLP 任务中通过来自人类反馈的强化学习 (RLHF) 进行训练
[32, 10, 53]
,并且最近扩展到视觉领域以提高文本到图像扩散模型的图像质量
[56, 1, 13, 60, 11, 36]
。 但是,图像质量是一个极其主观的指标,充满了个人喜好,并且需要创建包含人类偏好的新数据集
[60, 56, 55, 26]
以及训练奖励模型
[60, 55, 36]
。 与当前研究中对具有主观人类偏好的全局图像质量的追求背道而驰,我们的目标是更细粒度和客观的可控性目标。 此外,与人类反馈相比,获得 AI 反馈更具成本效益。
3
方法
在本节中,我们首先介绍第
3.1
节中扩散模型的背景。 在第
3.2
节中,我们讨论了如何为可控扩散模型设计循环一致性损失以增强可控性。 最后,在第
3.3
节中,我们检查了直接解决方案的效率问题,并相应地提出了一种有效的奖励策略,该策略利用单步去噪图像来进行一致性损失,而不是从随机噪声中采样图像。
3.1
预备知识
扩散模型
[18]
定义了马尔可夫链的正向扩散过程
q
(
x
t
|
x
0
)
,该过程通过逐渐将噪声添加到输入数据
x
0
中来实现:
其中
ϵ
是从高斯分布中采样的噪声图,并且
α
¯
t
:=
∏
s
=
0
t
α
s
.
α
t
=
1
−
β
t
是时间步
t
的可微函数,由降噪采样器(如 DDPM
[18]
)确定。 为此,扩散训练损失可以表示为:
在可控生成
[63, 30]
的背景下,给定图像条件
c
v
和文本提示
c
t
,时间步
t
的扩散训练损失可以改写为:
在推理过程中,给定一个随机噪声
x
T
∼
𝒩
(
𝟎
,
𝐈
)
,我们可以通过逐步降噪过程
[18]
预测最终降噪后的图像
x
0
:
其中
ϵ
θ
指的是由具有参数
θ
的 U-Net
[44]
在时间步
t
预测的噪声,而
σ
t
=
1
−
α
¯
t
−
1
1
−
α
¯
t
β
t
是后验高斯分布
p
θ
(
x
0
)
的方差。
3.2
一致性反馈奖励可控性
由于我们将可控性建模为输入条件和生成图像之间的一致性,因此我们可以通过判别性奖励模型自然地量化这一结果。 一旦我们量化了生成模型的结果,我们就可以针对各种条件控制以统一的方式,基于这些量化结果对更可控的生成进行进一步优化。
更具体地说,我们最小化输入条件
c
v
与生成图像
x
0
′
的相应输出条件
c
^
v
之间的一致性损失,如 图
2
所示。 奖励一致性损失可以表示为:
其中
𝔾
T
(
c
t
,
c
v
,
x
T
,
t
)
表示模型执行的过程
T
降噪步骤
从随机噪声
x
T
生成图像
x
0
′
,如图
4
(a) 所示。 这里,
ℒ
是一个抽象的度量函数,对于不同的视觉条件可以采用不同的具体形式。 例如,在使用分割掩码作为输入条件控制的情况下,
ℒ
可以是每个像素的交叉熵损失。 奖励模型
𝒟
也取决于条件,我们使用 UperNet
[57]
用于分割掩码条件。 损失函数和奖励模型的详细信息在补充材料中进行了总结。
除了奖励损失之外,我们还在等式
3
中采用了扩散训练损失,以确保原始图像生成能力不会受到损害,因为它们具有不同的优化目标。 最后,总损失是
ℒ
train
和
ℒ
reward
的组合:
其中
λ
是一个超参数,用于调整奖励损失的权重。 通过这种方法,一致性损失可以指导扩散模型如何在不同的时间步长进行采样,以获得与输入控制更一致的图像,从而增强可控性。 尽管如此,直接应用这种奖励一致性在现实世界环境中仍然存在效率方面的挑战。
图 4
:
(a)
默认奖励微调策略的管道。 奖励微调需要一直采样到完整的图像。 这种方法需要保留每个时间步的所有梯度,所需的内存是当前 GPU 无法承受的。
(b)
我们高效奖励策略的管道。 我们添加了一个小的噪声 (
t
≤
t
t
h
r
e
) 来扰乱输入图像和条件之间的一致性,然后单步去噪图像可以直接用于高效奖励微调。
3.3
高效奖励微调
为了实现像素空间一致性损失
ℒ
reward
,它需要
x
0
,即最终扩散图像,来从奖励模型计算奖励一致性。 由于现代扩散模型,如 Stable Diffusion
[43]
,需要多个步骤,
例如
50 步,才能渲染完整的图像,因此在现实环境中直接使用这种解决方案是不切实际的:(1) 需要多次耗时的采样才能从随机噪声中导出图像。 (2) 为了使梯度反向传播能够实现,我们必须在每个时间步存储梯度,这意味着 GPU 内存使用量将随着时间步数的增加而线性增长。 以 ControlNet 为例,当批次大小为 1 且使用 FP16 混合精度时,单个去噪步骤和存储所有训练梯度所需的 GPU 内存约为 6.8GB。 如果我们使用带有 DDIM
[51]
调度器的 50 步推理,则大约需要 340GB 的内存才能对单个样本执行奖励微调,这在当前硬件能力下几乎无法实现。 尽管可以通过采用诸如低秩自适应 (LoRA)
[20, 11]
、梯度检查点
[7, 11]
或停止梯度
[60]
等技术来减少 GPU 内存消耗,但由生成图像所需的采样步骤数量造成的效率下降仍然很显著,不容忽视。 因此,需要一种有效的奖励微调方法。
与从随机噪声
x
T
扩散以获得最终图像
x
0
相反,如图
4
(a) 所示,我们建议使用一种
单步
有效奖励策略。 具体来说,我们不是从噪声中随机采样,而是将噪声添加到训练图像
x
0
中,从而通过在等式
1
中执行前向扩散过程
q
(
x
t
|
x
0
)
,显式地扰乱扩散输入
x
t
′
及其条件控制
c
v
之间的 一致性。 我们将此过程示为图
4
(b) 中的
扰乱一致性
,这与标准扩散训练过程相同。 当添加的噪声
ϵ
相对较小时,我们可以通过执行单步采样来预测原始图像
x
0
′
1
在扰乱的图像
x
t
′
上
[18]
:
然后,我们直接利用去噪图像
x
0
′
执行奖励微调:
本质上,添加噪声的过程破坏了输入图像及其条件之间的一致性。 然后,等式
8
中的奖励微调指示扩散模型生成可以重建一致性的图像,从而增强其在生成过程中遵循条件的能力。
请注意,这里我们避免了等式
5
中的采样过程。 最后,损失是扩散训练损失和奖励损失的组合:
其中
t
t
h
r
e
表示时间步阈值,这是一个超参数,用于确定是否应将噪声图像
x
t
用于奖励微调。 我们注意到,小的噪声
ϵ
(
即
.
,相对较小的时间步
t
) 会扰乱一致性并导致有效的奖励微调。 当时间步
t
较大时,
x
t
更接近于随机噪声
x
T
,并且直接从
x
t
预测
x
0
′
会导致严重的图像失真。 我们高效奖励的优势在于,
x
t
可用于训练和奖励扩散模型,而无需由于多次采样而导致的时间和 GPU 内存成本,从而显着提高奖励微调阶段的效率。
在奖励微调阶段,我们将预训练的判别性奖励模型和文本到图像模型冻结,只更新 ControlNet,遵循其原始实现,确保不会损害生成能力。 我们还观察到,仅使用奖励损失会导致图像失真,这与之前研究
[60]
中得出的结论一致。
4
实验
4.1
实验设置
条件控制和数据集。
鉴于现有的生成模型文本-图像配对数据集无法提供准确的条件控制数据对
[49, 48]
,例如图像分割对,我们努力为不同的任务选择特定数据集,这些数据集可以提供更精确的图像标签数据对。 更具体地说,ADE20K
[67, 68]
和 COCOStuff
[4]
用于遵循 ControlNet
[63]
的分割掩码条件。 对于 Canny 边缘图、HED 边缘图、线稿图和深度图条件,我们使用 UniControl
[37]
提出的 MultiGen-20M 数据集,它是 LAION-Aesthetics
[48]
的一个子集。 对于没有文本标题的数据集,例如 ADE20K,我们使用 MiniGPT-4
[70]
生成图像标题,指令为 “
请用一句话简要描述这张图片
”。 所有数据集和方法的训练和推理分辨率均为 512
×
512。 详细信息见补充材料。
评估和指标。
我们在每个对应数据集的训练集上训练 ControlNet++,并在验证数据集上评估所有方法。 所有实验均在 512
×
512 分辨率下进行评估,以确保公平比较。 对于每种条件,我们通过测量输入条件与从扩散模型生成的图像中提取的条件之间的相似性来评估可控性。 对于语义分割和深度图控制,我们分别使用 mIoU 和 RMSE 作为评估指标,这在相关研究领域是一种常见的做法。 对于边缘任务,我们使用 F1-Score 评估硬边缘(Canny 边缘),因为它可以被视为 0(非边缘)和 1(边缘)的二元分类问题,并且具有严重的长尾分布,遵循边缘检测中的标准评估
[59]
。 用于评估的阈值为 OpenCV 的 (100, 200) 和 Kornia 实现的 (0.1, 0.2)。 SSIM 指标用于软边缘条件控制 (
i.e
.
,hed 边缘和线稿边缘),遵循之前的工作
[65]
。 对于 ControlNet++,我们使用 UniPC
[66]
采样器,进行 20 次去噪步骤,以使用原始文本提示生成图像,遵循 ControlNet v1.1
[63]
,没有任何负面提示。 对于 ControlNet 和我们之外的其他方法,我们利用它们的开源代码来生成图像,并在相同数据下进行公平评估,不更改它们的推理配置,例如推理步骤数量或去噪采样器。
基线。
我们的评估主要集中在 T2I-Adapter
[30]
、ControlNet v1.1
[63]
、GLIGEN
[27]
、Uni-ControlNet
[65]
和 UniControl
[37]
上,因为这些方法在可控文本到图像扩散模型领域处于领先地位,并提供用于各种图像条件的公共模型权重。 为了确保评估的公平性,所有方法都使用相同的图像条件和文本提示。 虽然大多数方法使用用户友好的 SD1.5 作为其可控生成的文本到图像模型,但我们观察到最近有一些基于 SDXL
[35]
的模型。 因此,我们还报告了 ControlNet-SDXL 和 T2I-Adapter-SDXL 的可控性结果。 请注意,此处提到的 ControlNet-SDXL 不是 ControlNet
[63]
中正式发布的模型。
表 1
:
在不同的条件控制和数据集下,与最先进方法的控制能力比较。
↑
表示结果越高越好,而
↓
表示结果越低越好。 ControlNet++ 在控制能力方面取得了显著的改进。 “-” 表示该方法没有提供公共模型进行测试。 我们生成了四组 png 格式的图像,并报告了平均结果以减少随机误差。
Dataset
T2I
Model
ADE20K
COCO-Stuff
MultiGen-20M
MultiGen-20M
MultiGen-20M
MultiGen-20M
ControlNet
SDXL
-
-
-
-
-
40.00
T2I-Adapter
SDXL
-
-
28.01
-
0.6394
39.75
T2I-Adapter
SD1.5
12.61
-
23.65
-
-
48.40
Gligen
SD1.4
23.78
-
26.94
0.5634
-
38.83
Uni-ControlNet
SD1.5
19.39
-
27.32
0.6910
-
40.65
UniControl
SD1.5
25.44
-
30.82
0.7969
-
39.18
ControlNet
SD1.5
32.55
27.46
34.65
0.7621
0.7054
35.90
Ours
SD1.5
43.64
34.56
37.04
0.8097
0.8399
28.32
4.2
实验结果
与最先进方法的控制能力比较。
实验结果如表
1
所示,可概括为以下观察结果:(1) 现有方法在控制能力方面仍表现不佳,难以实现精确的受控生成。 例如,当前方法(
i.e
.
,ControlNet)在分割掩码条件下生成的图像仅达到 32.55 mIoU,远低于其在真实数据集上的性能,在 Mask2Former 分割模型
[8]
的相同评估下,达到 50.7 mIoU。 (2) 我们的 ControlNet++ 在各种条件控制下,在控制能力方面显著优于现有工作。 例如,它在深度图条件下,相对于之前的最先进方法,实现了 11.1% 的 RMSE 改善;(3) 对于可控扩散模型,文本到图像主干的强度不会影响其控制能力。 如表所示,尽管基于 SDXL 的
[35]
ControlNet 和 T2I-Adapter 在某些特定任务上具有更好的控制能力,但其改进幅度并不大,与基于 SD 1.5
[43]
的对应方法相比,并没有显著优势。
表 2
:
在不同的条件控制和数据集下,与最先进方法的 FID (
↓
) 比较。 所有结果均在 512
×
512 图像分辨率下进行,并使用 Clean-FID 实现
[33]
进行公平比较。 “-” 表示该方法没有提供公共模型进行测试。 我们生成四组 png 格式的图像,并报告平均结果以减少随机误差。
表 3
:
CLIP 分数 (
↑
) 与不同条件控制和数据集下最先进方法的比较。 ‘-’ 表示该方法未提供用于测试的公共模型。 我们生成四组 png 格式的图像,并报告平均结果以减少随机误差。
与最先进方法的图像质量比较。
为了验证提高可控性是否会导致图像质量下降,我们在 Tab.
2
中报告了不同方法在各种条件生成任务下的 FID(Fréchet Inception Distance)指标。 我们发现,与现有方法相比,ControlNet++ 在大多数情况下通常表现出更好的 FID 值,表明我们的方法在增强条件控制的可控性的同时,并没有导致图像质量下降。 这也可以在图
6
中观察到。 我们在补充材料中提供了更多视觉示例。
与最先进方法的 CLIP 分数比较。
我们的 ControlNet++ 旨在使用基于图像的条件来提高扩散模型的可控性。 考虑到对文本可控性潜在的不利影响,我们使用 CLIP-Score 指标对不同数据集的各种方法进行了评估,以衡量生成图像与输入文本之间的相似性。 正如 Tab.
3
中所示,ControlNet++ 在多个数据集上实现了与现有方法相当或更优的 CLIP-Score 结果。 这表明我们的方法不仅显着增强了条件可控性,而且还保留了原始模型的文本到图像生成能力。
图 5
:
从头开始训练 DeepLabv3 (MobileNetv2),使用不同的图像,包括来自 ADE20K 的真实图像和来自 ControlNet 和我们生成的图像。 所有标签 (
i.e
.
,分割掩码) 都是 ADE20K 中的真实标签。
请注意,这里对于语义分割来说,改进并非微不足道。
生成图像的有效性。
为了进一步验证我们在可控性方面的改进及其影响,我们使用生成的图像以及真实的人工标注标签,从头开始训练判别模型,创建了一个新的数据集。 请注意,与用于训练判别模型的原始数据集唯一的区别是,我们将图像替换为可控扩散模型生成的图像,同时保持标签不变。 如果生成模型表现出良好的可控性,则构建的数据集的质量将更高,从而能够训练更强大的模型。
具体来说,我们在 ADE20K
[67, 68]
数据集上使用 MobileNetv2 主干
[5]
进行 DeepLabv3 实验。 我们使用标准训练数据集(20210 个训练样本)来训练判别模型,使用验证数据集(5000 个评估样本)进行评估。 我们在图
5