1、目的
让预训练好的大型DDPM模型支持额外的输入条件(如Canny edges、Hough lines、user scribbles、segmentation maps、human key points、shape normals、depths等)
不同于image-to-image translation致力于学习不同domain之间的映射,ContrlNet旨在用task-specific condition来控制扩散模型
2、方法
ControlNet:end-to-end网络,控制大型DDPM模型学习task-specific input condition
1)trainable copy
在task-specific数据集上训练,学习条件控制
2)locked copy
保留网络从上亿图片中学到的能力。因为保留了production-ready weights,所以在不同scale的数据集上训练都很鲁棒,不会overfitting
3)zero convolution
连接trainable和locked网络块,通过学习,卷积权重逐渐从0增长到优化的参数。
不给deep features增加新的噪声,因此相较于从头开始训练新的卷积层,训练和fine tune一样快
在训练初始,有
也即 ,相当于ControlNet不存在。之后ControlNet的训练就相当于是在进行fine tuning
并且训练伊始,卷积层的weight和bias的梯度不为0,不影响训练
4)训练技巧
-> 随机用空字符替代50%的text prompts,有利于网络专注于从input control map中学习语义特征
-> small-scale training
部分打破ControlNet和Stable Diffusion之间的connection可以加速收敛。等到模型的预测结果和condition之间展现出合理的关联的时候,可以再恢复这些connection进行训练,使得结果更精准
-> large-scale training
数据量较大,因此不容易over-fitting。可以先训ControlNets,然后再unlock Stable Diffusion的weights,训练整个模型。