用ControlNet+Inpaint实现stable diffusion模特换衣
ControlNet 训练与架构详解 ControlNet 的架构 用于文本到图像扩散的 ControlNet 训练过程 Zero卷积层的作用解释 inpaint Inpaint Anything 的重要性 Inpaint Anything 的功能概述在现代计算机视觉领域,稳定扩散(Stable Diffusion)技术已经成为图像修复的重要工具之一。然而,虽然稳定扩散能够有效地填补图像中的缺失区域,但是对于用户来说,对修复过程进行更精准的控制往往是一项挑战。
为了解决这一问题,我们引入了ControlNet,这是一种专门设计用于在大型预训练文本到图像扩散模型中引入空间调节控制的神经网络架构。通过结合ControlNet与稳定扩散技术,我们实现了一种全新的图像修复方法,使用户能够通过各种条件输入来精确控制修复过程,例如Canny边缘、霍夫线、用户涂鸦、人体关键点、分割图、形状法线和深度等。本研究不仅证明了ControlNet在小型和大型数据集上的稳健性,还展示了其在图像修复领域的巨大潜力,为更广泛的图像处理应用提供了全新的可能性。
ControlNet 是一种神经网络架构,可以通过空间局部化、特定于任务的图像条件增强大型预训练文本到图像扩散模型。我们首先介绍下ControlNet的基本结构,
然后后面描述如何将ControlNet应用到图像扩散模型Stable Diffusion,以及Inpaint的方法
ControlNet 训练与架构详解
ControlNet 的架构
ControlNet 将附加条件注入到神经网络的块中。具体来说,ControlNet 的设计目的是在预训练模型的基础上,添加可训练的副本,以便处理新的控制信息(如草图、边缘图等)。这种设计可以保留预训练模型的优点,同时增强模型的多样性和灵活性。
核心概念
网络块:指一组神经层的组合,形成神经网络的一个单元,例如 ResNet 块、Conv-BN-ReLU 块、多头注意力块等。 锁定参数:冻结预训练模型的参数,使其保持稳定,并将其复制为可训练的副本。 零卷积:使用 1×1 卷积层,其权重和偏置初始化为零,确保初始训练时无有害噪声影响。控制模块的添加
预训练块:假设 F ( ⋅ ; Θ ) F(·;\Theta) F(⋅;Θ)是一个具有参数 Θ \Theta Θ的预训练神经块,将输入特征图 x x x转换为输出特征图 y y y。
y = F ( x ; Θ ) y=F(x;\Theta) y=F(x;Θ)
ControlNet 模块:锁定原始块的参数 Θ \Theta Θ,并克隆为可训练副本 Θ c \Theta_c Θc
可训练副本接受外部条件向量 c c c作为输入
计算过程:ControlNet 的完整计算如下:
y c = F ( x ; Θ ) + Z ( F ( x + Z ( c ; Θ z 1 ) ; Z c ) ; Θ z 2 ) y_c = F(x;\Theta)+\Zeta(F(x+\Zeta(c;\Theta_{z1});\Zeta_c);\Theta_{z2}) yc=F(x;Θ)+Z(F(x+Z(c;Θz1);Zc);Θz2)
其中, Z ( ⋅ ; ⋅ ) \Zeta(·;·) Z(⋅;⋅)是零卷积层, Θ z 1 \Theta_{z1} Θz1和 Θ z 2 \Theta _{z2} Θz2是其参数。
零卷积的初始状态:初始训练步骤中,零卷积的权重和偏置均为零,因此计算结果也是零,使得:
y c = y y_c = y y