前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >ControlNet-图像控制文生图模型

ControlNet-图像控制文生图模型

作者头像
iResearch666
发布2023-09-13 14:17:18
发布2023-09-13 14:17:18
7450
举报

ControlNet: Adding Conditional Control to Text-to-Image Diffusion Models


  • paper https://arxiv.org/abs/2302.05543
  • code https://github.com/lllyasviel/ControlNet

ControlNet pose examples


Abstract

  • 除了text-prompt文本提示作为输入,还增加了其它控制条件作为输入(文本+图像作为输入)
  • 在小数据集上(<50k)鲁棒性较好
  • 是一个特定任务条件,且是一个end2end,对diffusion model进行控制(Stable diffusion是一种)

Contributions

  • ControlNet 将diffusion model 克隆成2个模型,一个是trainable copy,一个是locked copy
    • trainable copy 在特定任务上以端到端方式学习条件控制
    • locked copy 保留网络来自数亿图像的生成能力,所以具有较好的鲁棒性
    • 2个copy的联系采用 zero convolution ,其权重从0开始增加到优化参数,因为不需要向深层特征增加noise,所以训练速度和微调模型一样快
  • Conditions: Canny edges, Hough lines, user scribbles, human key points, segmentation maps, shape normals, depths, etc

Related Work

Text-to-Image Diffusion

Diffusion models can be applied to text-to-image generating tasks to achieve state-of-the-art image generating results. This is often achieved by encoding text inputs into latent vectors using pretrained language models like CLIP

  • Glide is a text-guided diffusion models supporting both image generating and editing.
  • Disco Diffusion is a clip-guided implementation of to process text prompts.
  • Stable Diffusion is a large scale implementation of latent diffusion to achieve text-to-image generation.
  • Imagen is a text-to-image structure that does not use latent images and directly diffuse pixels using a pyramid structure.

Image-to-Image Translation

  • 在应用上,ControlNet 和 image-to-image translation 存在重叠,但是二者动机不同
    • image-to-image translation 是学习不同domain图像之间的映射关系
    • ControlNet 用特定任务条件对diffusion model 进行控制

Methodology

Overview

image-20230828105432263

  1. 克隆预训练模型:ControlNet 首先创建了预训练图像扩散模型的两个副本,其中一个是 “锁定” 的,不能被修改,而另一个是 “可训练” 的,可以在特定任务上进行微调。 ControlNet 使用了一种称为 “权重共享” 的技术,该技术可以将预训练模型的权重复制到两个不同的神经网络中。这样,在微调可训练副本时,锁定副本仍然保留着从预训练中学到的通用知识,并且可以提供更好的初始状态。 需要注意的是,在克隆预训练模型之前,需要先选择一个适合特定任务的预训练模型,并对其进行必要的调整和优化。这样才能确保克隆出来的模型能够更好地适应特定任务,并取得更好的效果。
  2. 定义输入条件:ControlNet 然后定义了一组输入条件,可以用来控制模型的输出。这些条件可能包括颜色方案、对象类别或其他特定任务参数。 该技术可以将输入条件与预训练模型进行连接,并将其作为额外的输入信息传递给神经网络。这样,在微调可训练副本时,神经网络可以根据这些输入条件来调整输出结果,并更好地适应特定任务。 需要注意的是,在定义输入条件之前,需要先确定哪些参数对于特定任务是最重要的,并选择合适的方式来表示这些参数。例如,在图像分类任务中,可能需要考虑对象类别、颜色和纹理等因素,并选择合适的方式来表示它们。同时,还需要确保这些输入条件能够被有效地传递给神经网络,并且不会对模型性能产生负面影响。
  3. 训练可训练副本:ControlNet 然后使用反向传播和其他标准训练技术,在特定数据集上对可训练副本进行训练。 很自然的就是一个标准的神经网络训练流程。训练可训练副本之前,需要先选择一个适合特定任务的预训练模型,并将其克隆为可训练副本。同时还需要确定哪些输入条件对于特定任务是最重要的,并将其与预训练模型进行连接。
  4. 合并输出:最后,ControlNet 将两个模型副本的输出组合起来,产生一个最终结果,既包含从预训练中学到的通用知识,也包含从微调中学到的特定知识。

数据流转主要流程如下:

a.timesteps经过embedding转换为特征向量送入Stable Diffusion和ControlNet;

b.随机噪声被送入Stable Diffusion;

c.图像的Map经过HintBlock,与随机噪声相加,送入ControlNet;

d.Prompt的Embedding送入Stable Diffusion和ControlNet;

e.Stable Diffusion的所有参数被冻结不参与训练

f.ControlNet的结构与Stable Diffusion一致,只是每层后面增加一个零卷积;

g.Stable Diffusion和ControlNet中的ResBlock将上一层的输出和timesteps作为输入;

h.Stable Diffusion和ControlNet中的SpatialTransformer将上一层的输出和Prompt Embedding 作为输入。

ControlNet

  1. 为什么要将diffusion model分成2个copy,而不是在原始模型上训练权重?

因为一方面要保留采用数亿图像训练好模型的生成质量,另一方面在特定任务上训练,其数据量少容易overfitting

  1. 2个copy通过zero convolution连接 零卷积是指卷积的权重和偏差初始化为0的1X1普通卷积,在迭代过程中参数更新 在第一次迭代时候,零卷积为0,对2个copy网络贡献为0,所以不影响网络性能,网络输入仍为x,输出仍为y 。x + Zc x Zin -> y + Zy x Zout 满足的条件:特征图像非零

image-20230828142618638

ControlNet in Image Diffusion Model

  • 以Stable Diffusion为例,它是由encoder,a middle block,a skip-connected decoder三部分组成。其中U-net encoder和decoder都是12个blocks,总共25个blocks。有8个block是下采样或者上采样,其它17block包含4个resnet层和2个ViT层。每个ViT层包括self or cross注意力机制。Text encoder采用OpenAI CLIP,每个time steps采用positional encoding。
  • SD是将512X512分辨率的图像转化到64X64分辨率的 latent images,所以ControlNet需要将图像空间编码到64X64的隐图像空间Cf,设计一个卷积网络即可。 We use a tiny network E(·) of four convolution layers with 4 × 4 kernels and 2 × 2 strides (activated by ReLU, channels are 16, 32, 64, 128, initialized with Gaussian weights, trained jointly with the full model)
  • 训练时候内存增加了23%,时间增加了34%,计算效率比较高
  • trainable copy中,只是encoder和middle block参数可调,其它decoder参数固定

Experiments

Training

  • 将50%的text prompt置为空字符串,目的是为了让网络学习输入的图像条件,当出现空文本时,可以用图像条件取代文本提示
  • 算力有限前提下,将decoder的连线去掉,只保留middle block连线,有加速效果

Conditions

  • Canny Edge
  • Canny Edge (Alter)
  • Hough Line
  • HED Boundary
  • User Sketching
  • Human Pose (Openpifpaf)
  • Human Pose (Openpose)
  • Semantic Segmentation (COCO)
  • Semantic Segmentation (ADE20K)
  • Depth (large-scale)
  • Depth (small-scale)
  • Normal Maps
  • Normal Maps (extended)
  • Cartoon Line Drawing

image-20230828150219988

Datasets

如果想训练自己的 StableDiffusion & ControlNet,需要准备paired data:

  • 真实图像作为图像生成的Ground Truth
  • 通过真实图像获取的条件图像作为输入的控制条件 conditional images
  • 真实图像的文本描述caption作为text prompts

New dataset

  • GPU至少8G

image-20230828153126268

Conclusions

  • 增加了图像条件进行扩散模型图像生成的细粒度控制

References

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-28 16:05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iResearch666 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Abstract
  • Contributions
  • Related Work
    • Text-to-Image Diffusion
    • Image-to-Image Translation
  • Methodology
    • Overview
    • ControlNet
    • ControlNet in Image Diffusion Model
  • Experiments
    • Training
    • Conditions
  • Datasets
  • Conclusions
  • References
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档