假设 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