Uni-ControlNet


Uni-ControlNet: All-in-One Control to Text-to-Image Diffusion Models

image


Abstract

  • 文本提示难以实现细节控制,即使文本很长很复杂
  • Uni-ControlNet同时利用局部控制(图像条件)和全局控制(图像字符嵌入),且只需要在冻结的预训练模型上微调2个适配器,就能将多个图像控制条件融入到一个模型中
  • text-to-image (T2I)

Contributions

  • 将所有条件分成两组——局部条件和全局条件,每组条件设计一个适配器Adapter,一共2个适配器,不需要联合训练,采用分开训练
  • 局部控制:引入了一种多尺度条件注入策略,使用共享的局部条件编码器适配器。该适配器首先将局部控制信号转换为调制信号,然后用于调制输入的噪声特征。
  • 全局控制:使用另一个共享全局条件编码器将其转换为条件标记,然后将其与文本标记连接起来形成扩展提示,并通过交叉注意与输入特征进行交互

image-20230829101505782

Controllable Diffusion Models

  • ControlNet
  • T2I-Adapter

每个条件单独一个适配器模型,非统一

Methodology

Overview

image-20230829101738798

image-20230829101922641

Local Control Adapter

  • 受ControlNet启发,固定了SD模型的权重且复制了其encoder和middle block的结构和权重分别为F‘,M’,然后修改了SD的decoder的输入,使其包含局部控制信息,具体如下:

image-20230829103238330

  • 和ControlNet不同地方是,没有直接将条件和噪声输入相加,而是采用多尺度条件注入策略
    1. 将不同的局部条件沿着通道维度进行拼接 Cl
    2. 使用堆叠的卷积层构成的特征提取器H提取不同尺度的特征图,64 32 16 8
    3. 受SPADE启发,实现了特征去正则化FDN,使用条件特征来调制归一化的输入噪声特征

image-20230829104105009

​ 上面就是将不同尺度的噪声和特征进行相加,2个学习参数分别学习空间敏感的尺度和偏移调制

​ zero是零卷积

​ 调制采用乘法,直接和噪声相乘

注意:局部图像条件没有用CLIP,而是用CNN提取特征,ControlNet就是采用CLIP提取image token embeddings

Global Control Adapter

  1. 使用CLIP提取一个图像全局条件的token嵌入
  2. 将全局控制信号用条件编码器hg投影到条件嵌入空间(条件编码器是由前馈层堆叠,可以将文本嵌入和图像条件嵌入对其到嵌入空间)
  3. reshape条件嵌入成K个全局字符,默认是4个
  4. 将K和文本字符K0相加,构成扩展提示(总的字符数是K+K0)
  5. 扩展提示字符作为所有交叉注意力层(包括SD模型和控制适配器)的输入

image-20230829105342752

Experiments

Training Strategy

  • 2个适配器分开训练(单独训练全局控制,单独训练局部控制,没有先后)
    • 以一定概率随机丢弃每一个条件
    • 以一定概率保留或丢弃全部条件
  • 推理时候直接组合,不需要联合训练

Results

image-20230829105606626

image-20230829110339463

Conclusions

  • 只需要2个适配器即可
  • 容易部署

References


文章作者: Lee Jet
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Lee Jet !
评论
  目录