ControlNet核心基础知识


一、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 wy=x ∂ y ∂ x = w \frac{\partial y}{\partial x}=w xy=w ∂ y ∂ b = 1 \frac{\partial y}{\partial b}=1 by=1
  • 如果 w = 0 w=0 w=0并且 x ≠ 0 x \not=0 x=0,对应的梯度求导即为: ∂ y ∂ w ≠ 0 \frac{\partial y}{\partial w}\not=0 wy=0 ∂ y ∂ x = 0 \frac{\partial y}{\partial x}=0 xy=0 ∂ y ∂ b ≠ 0 \frac{\partial y}{\partial b}\not=0 by=0
  • 这意味着只要 x ≠ 0 x \not=0 x=0,一次梯度下降迭代将使得 w w w变成非零值,进而使得 ∂ y ∂ x ≠ 0 \frac{\partial y}{\partial x}\not=0 xy=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基本教程(一)

  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值