ControlNet 简介与 Diffusers 实现

April 30, 2024 ControlNet 是 ICCV 2023 的一篇 best paper,原文:Adding Conditional Control to Text-to-Image Diffusion Models,其目的是在 Diffusion 图像生成时增加条件控制,与通常的文本 Prompt 不同,ControlNet 支持在像素空间做精细控制,如下图的三个示例,分别是通过 Canny 边缘、人体姿态、深度来控制图像的生成,左上角是输入的 condition 图,其余是 Diffusion 生成的结果图,可以看到控制非常有效,并且图像质量没有明显下降,整体和谐。 算法简介 ControlNet 本身是一种模型微调方法,如下图右侧,在原模型的基础上,增加一个可训练副本,可训练副本的输入是原输入x加上条件c,然后把两个模型的输出相加,可训练副本的输入输出都经过零卷积(zero convolution)处理,用于在刚开始训练时保持模型的稳定性(零卷积的参数初始化为0,使得微调的影响从0开始逐步增加) 具体的针对 Stable Diffusion 的 ControlNet 结构如下图,只复制(结构+权重)了 UNet 的 Encoder block 和 Middle block,控制条件图c先经过几层卷积,再与原UNet的输入zt相加作为输入,ControlNet 每个 block 的输出再添加到原 UNet 的 Decoder block 输入,实际代码实现中,这里 ControlNet 的输出还可以乘上一个scale,用于控制影响程度 作为一种微调方法,增加Continue reading “ControlNet 简介与 Diffusers 实现”