随着大型文本-图像模型的出现,生成有吸引力的图像变得非常简单。用户只需动动手指,输入简单的提示即可。通过一系列操作得到图像后,我们难免会有几个疑问:根据提示生成的图像是否能满足我们的要求?我们应该构建什么样的架构来应对用户提出的各种需求?大型模型是否保留了在给定任务中从数十亿张图像中获得的优势和能力?为了回答这些问题,斯坦福大学的研究人员对各种图像处理应用程序进行了广泛调查,并得出以下三个发现:首先,特定领域的可用数据实际上少于用于训练一般模型的数据,这主要表明在,例如,关于特定问题(例如姿势理解等)的最大数据集通常低于100k,这比大规模、多模态文本图像数据集LAION5B(5×10^4)小几个数量级.这就要求神经网络具有鲁棒性,避免模型过拟合,对特定问题具有良好的泛化能力。其次,在对图像任务使用数据驱动处理时,大型计算集群并不总是可用。这就是快速训练方法变得重要的地方,它可以在可接受的时间和内存空间内针对特定任务优化大型模型。此外,在后续处理中可能需要进行微调和迁移学习等操作。最后,图像处理过程中遇到的各种问题有不同形式的定义。虽然图像扩散算法在解决这些问题时可以以“程序”方式进行调整,例如,约束去噪过程、编辑多头注意激活等,但这些手工制定的规则基本上是由人类指令决定的是的,考虑到一些特定任务,如深度图像、姿势人物等,这些问题本质上需要将原始输入解释为对象级或场景级的理解,这使得手工制作的程序方法不太可行。因此,端到端学习对于在多个任务中给出解决方案至关重要。基于以上研究结果,本文提出了一种端到端的神经网络架构ControlNet,可以通过添加附加条件来控制扩散模型(如StableDiffusion),从而提高图像生成的效果,实现full-线条图的彩色图像生成,生成具有相同深度结构的图形,通过手的关键点优化手的生成。论文地址:https://arxiv.org/pdf/2302.05543.pdf项目地址:https://github.com/lllyasviel/ControlNet效果展示那么ControlNet的效果如何呢?Canny边缘检测:通过从原始图像中提取艺术线条,可以生成相同构图的图像。深度检测:通过提取原始图像中的深度信息,可以生成具有相同深度结构的图。带语义分割的ControlNet:使用基于学习的深度霍夫变换从Places2检测线并使用BLIP生成字幕。HED边缘检测示意图。人体手势识别图。方法简介ControlNet是一种神经网络架构,可使用特定于任务的条件增强预训练图像扩散模型。我们先来看一下ControlNet的基本结构。ControlNet操纵神经网络块的输入条件,从而进一步控制整个神经网络的整体行为。这里的“网络块”指的是一组神经层,它们放在一起作为构建神经网络的通用单元,例如resnetblock、multi-headattentionblock、Transformerblock。以2D特征为例,给定一个特征图x?R^h×w×c,其中{h,w,c}分别是高、宽和通道数。具有一组参数Θ的神经网络块F(·;Θ)将x转换为另一个特征图y,如下面的等式(1)所示。这个过程如下图2-(a)所示。神经网络块由称为“零卷积”的独特类型的卷积层连接,即具有零初始化权重和偏置的1×1卷积层。研究人员将零卷积运算记为Z(·;·),使用两个参数实例{Θ_z1,Θ_z2}组成ControlNet结构,如下式(2)所示。其中y_c成为此神经网络块的输出,如下图2-(b)所示。图像扩散模型中的ControlNet研究人员以StableDiffusion为例,介绍如何使用ControlNet控制具有任务特定条件的大型扩散模型。StableDiffusion是一种在数十亿张图像上训练的大规模文本到图像扩散模型,本质上是一个由编码器、中间块和残差连接解码器组成的U-net。如下图3所示,研究人员使用ControlNet来控制U-net的每一层。需要注意的是,这里连接ControlNet的方式在计算上是高效的:由于原始权重被锁定,原始编码器上的梯度计算不需要训练。并且由于在原始模型上减少了一半的梯度计算,可以加快训练速度,节省GPU内存。使用ControlNet训练一个稳定的扩散模型只需要大约23%的GPU内存和每次训练迭代的34%的时间(在单个NvidiaA100PCIE40G上测试)。具体来说,研究人员使用ControlNet创建了12个编码块和一个稳定扩散中间块的可训练副本。12个编码块有4种分辨率,64×64、32×32、16×16和8×8,每种分辨率3个块。输出被添加到具有12个剩余连接和1个中间块的U-net。由于StableDiffusion是典型的U-net结构,因此这种ControlNet架构很可能适用于其他扩散模型。TrainingandBoostingTraining给定一张图像z_0,扩散算法逐渐向图像添加噪声并产生带噪声的图像z_t,其中t是添加噪声的次数。当t足够大时,图像近似于纯噪声。给定一组由时间步长t、文本提示c_t和任务特定条件c_f组成的条件,图像扩散算法学习网络ε_θ来预测添加到噪声图像z_t的噪声,如下面的等式(10)所示。在训练过程中,研究人员将50%的文本提示c_t随机替换为空字符串,这有利于ControlNet从输入条件映射中识别语义内容的能力。此外,研究人员讨论了几种改进ControlNet训练的策略,特别是在计算设备非常有限(例如笔记本电脑)或非常强大(例如具有可用的大规模GPU的计算集群)的极端情况下。有关更多技术细节,请参阅原始论文。
