ControlNeXt: Powerful and Efficient Control for Image and Video Generation(2024,8)
paper
Github
进一步在ControlNet上进行了改进,主要针对一下两点
- 对于每一个模块添加一个Zero-Conv也会占用很多显存.
- Zero-Conv两个模态的输出的mean、var具有差异,导致收敛很慢.
针对1,使用一个轻量级的ResBlock进行替换,并且微调很小一部分参数,来替代原来的网络.
针对2,使用了Cross-Normalization,就是将在ResNet添加一个Normlization,来学习一个Mean、Var和原来输出类似的参数.具体如下:
首先对于输入\(x\),计算原始模型的\(\mu,\sigma\)
\[\boldsymbol{\mu}_m=\frac1n\sum_{i=1}^n\boldsymbol{x}_{m,i} ,\\\boldsymbol{\sigma}_m^2=\frac1n\sum_{i=1}^n(\boldsymbol{x}_{m,i}-\boldsymbol{\mu}_m)^2 .
\]
然后使用这两个参数来进行Normlization.
\[\hat{\boldsymbol{x}}_c=\frac{\boldsymbol{x}_c-\boldsymbol{\mu}_m}{\sqrt{\boldsymbol{\sigma}_m^2+\boldsymbol{\epsilon}}}*\gamma,
\]
需要注意的是,只有scale参数\(\gamma\),而没有shift参数.