ControlNet核心基础知识

发布时间:2024年01月12日


一、ControlNet模型的概念

  1. ControlNet是一种“辅助式”的神经网络模型结构,通过在Stable Diffusion模型中添加辅助模块,从而支持更多的输入条件来控制AI绘画的生成过程。
    • 原始SD模型的输入:prompt、source image
    • ControlNet模型的输入:canny边缘、语义分割图、关键点、涂鸦等
  2. ControlNet允许输入线稿、动作识别、深度信息等调节对象对原有的图像进行控制,用户可以手动编辑源图像,控制其某些属性,改变图像的画风、动作、颜料等,生成新的图像。
    在这里插入图片描述
  3. ControlNet应用领域非常广,如时尚设计师可以输入不同款式和图案,快速生成服装设计灵感和样品;游戏设计者可以使用该插件快速生成不同主题和风格的游戏资源,如不同时代的建筑、衣服、植被等;电商商家可以控制AI模特的动作,摆出相应的姿态等。

二、ControlNet模型的内部架构

ControlNet的网络结构可划分为两个部分,分别是locked copy和trainable copy。ControlNet主要在Stable Diffusion的U-Net中起作用,其中locked copy对应U-Net的encoder部分,trainable copy对应U-Net的decoder部分:

  • Stable Diffusion U-Net的Encoder部分:所有参数都被锁定并克隆到 ControlNet 端的可训练副本中;
  • Stable Diffusion U-Net的Decoder部分:通过skip connection加入了zero convolution模块处理后的特征,以实现对最终模型与训练数据的一致性。
    在这里插入图片描述

三、zero convolution模块的有效性

ControlNet模型的最小单元结构(如下图)中有两个zero convolution模块 ,它们是1×1卷积,并且权重和偏置都初始化为零。

  • 在我们开始训练ControlNet之前,所有zero convolution模块的输出都为零,使得ControlNet完完全全就在原有Stable Diffusion底模型的能力上进行微调训练,不会产生大的能力偏差;
  • 只有在加入自己的数据训练之后,下图(b)中的trainable copy以及zero convolution中的可学习参数值才会发生变化,使整个网络学习到用户指定的任务。
    在这里插入图片描述

推导:

  • 假设ControlNet的权重为: y = w x + b y=wx+b y=wx+b,对应的梯度求导即为: ? y ? w = x \frac{\partial y}{\partial w}=x ?w?y?=x ? y ? x = w \frac{\partial y}{\partial x}=w ?x?y?=w ? y ? b = 1 \frac{\partial y}{\partial b}=1 ?b?y?=1
  • 如果 w = 0 w=0 w=0并且 x =? 0 x \not=0 x=0,对应的梯度求导即为: ? y ? w =? 0 \frac{\partial y}{\partial w}\not=0 ?w?y?=0 ? y ? x = 0 \frac{\partial y}{\partial x}=0 ?x?y?=0 ? y ? b =? 0 \frac{\partial y}{\partial b}\not=0 ?b?y?=0
  • 这意味着只要 x =? 0 x \not=0 x=0,一次梯度下降迭代将使得 w w w变成非零值,进而使得 ? y ? x =? 0 \frac{\partial y}{\partial x}\not=0 ?x?y?=0,这样就能使得zero convolution模块逐渐成为具有非零权重的公共卷积层,并不断优化参数权重。

使用ControlNet模块就是假设将训练的所有参数锁定在 θ \theta θ中,然后将其克隆为可训练的副本 θ c \theta_c θc?。复制的 θ c \theta_c θc?使用外部条件向量c进行训练。 Z = F ( c ; θ ) Z=F(c;\theta) Z=F(c;θ)代表了zero convolution模块, θ z 1 \theta_{z1} θz1? θ z 2 \theta_{z2} θz2?代表ControlNet的参数权重。
在这里插入图片描述
由于训练开始前zero convolution模块的输出都为0,所以ControlNet未经训练的时候输出为0:
在这里插入图片描述这种情况下对SD模型是没有任何影响的,就能确保SD模型原本的性能完整保存,之后ControlNet训练也只是在原SD模型基础上进行优化。ControlNet模型思想使得训练的模型鲁棒性好,能够避免模型过度拟合,并在针对特定问题时具有良好的泛化性,在小规模甚至个人设备上进行训练成为可能。

四、输入Condition与SD模型隐空间特征的结合

ControlNet在训练过程中添加了四层卷积层,将图像空间Condition转化为隐空间Condition。这些卷积层的卷积核为4×4,步长为2,通道分别为16,32,64,128,初始化为高斯权重,并与整个ControlNet模型进行联合训练。
在这里插入图片描述

参考:
深入浅出完整解析ControlNet核心基础知识
ControlNet原理&使用实操
Stable Diffusion — ControlNet 超详细讲解
【Stable Diffusion】ControlNet基本教程(一)

文章来源:https://blog.csdn.net/weixin_47748259/article/details/135539088
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。