T2I-Adapter:学习适配器为文本到图像扩散模型挖掘更多可控能力

本文主要是介绍T2I-Adapter:学习适配器为文本到图像扩散模型挖掘更多可控能力,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、研究动机
  • 二、T2I-Adapter的特点
  • 三、模型方法
    • (一)关于stable diffusion
    • (二)适配器设计
      • 1、结构控制
      • 2、空间调色板
      • 3、多适配器控制
    • (三)模型优化
      • 训练期间的非均匀时间步采样


一、研究动机

  • T2I模型,也就是文本到图像模型(text-to-image model)具备强大的生成能力,能够学习到复杂的内部结构和语义信息。但是仅仅依靠文本提示并不能充分利用模型学到的知识,尤其是在需要灵活准确的控制(例如颜色和结构)时。

文本很难为图像合成提供结构指导,导致在一些复杂场景下结果随机且不稳定。这并不是由于生成能力差,而是因为文本无法提供准确的生成指导以充分将 SD 的内部知识与外部控制相结合。
在这里插入图片描述

  • 因此文章提出了 T2I-Adapter,这是一种简单而小型的模型,可以为预训练的文本到图像(T2I)模型提供额外的指导,同时不影响其原始网络拓扑和生成能力。

借助 T2I-Adapter,我们可以生成原始 T2I 模型(例如stable diffusion)难以准确生成的更具想象力的结果。可以使用各种指导,例如颜色、深度、草图、语义分割和关键姿势。我们可以使用 T2I-Adapter 进一步实现本地编辑和可组合指导。
在这里插入图片描述

二、T2I-Adapter的特点

  • 即插即用:不会影响现有 T2I 扩散模型(例如稳定扩散)的原始网络拓扑和生成能力。
  • 简单、小型:可以轻松地插入到现有的 T2I 扩散模型中,训练成本较低,并且在扩散过程中只需要一次推理。它们是轻量级的,具有 ∼ 77 M 参数和 ∼ 300 M 存储空间。
  • 灵活性:可以针对不同的控制条件训练各种适配器,包括空间颜色控制和精细结构控制。
  • 可组合:可以方便地组合多个适配器来实现多条件控制。
  • 可推广:经过训练后,只要从相同的 T2I 模型进行微调,它们就可以直接用于自定义模型。
    在这里插入图片描述

三、模型方法

(一)关于stable diffusion

Stable Diffusion 是一个两阶段扩散模型,包含一个自动编码器和一个 UNet 降噪器。在第一阶段,SD 训练了一个自动编码器,它可以将图像 X0 转换为潜在空间,然后重建它们。在第二阶段,SD训练了一个改进的UNet降噪器来直接在潜在空间中执行降噪。

SD的优化过程:

  • Z t Z_t Zt表示第 t 步的噪声特征图
  • C代表条件信息
  • θ指的是UNet降噪器的函数
    在这里插入图片描述

在推理过程中, 输入潜在图 Z T Z_T ZT 由随机高斯分布生成。给定 Z T Z_T ZT ϵ θ \epsilon_θ ϵθ 在每个步骤 t以 C 为条件 预测噪声估计。通过减去它,噪声特征图变得逐渐清晰。经过 T 次迭代后,最终结果 Z 0 Z_0 Z0作为干净的潜在特征,被输入到自动编码器的解码器中以执行图像生成。

在条件部分, SD 利用预先训练的 CLIP 文本编码器将文本输入嵌入到标记 y 的序列中。然后利用交叉注意力模型将 y 结合到去噪过程中:

在这里插入图片描述

(二)适配器设计

T2I 适配器由四个特征提取块和三个用于改变特征分辨率的下采样块组成。
在这里插入图片描述
原始条件输入的分辨率为512×512,利用像素 unshuffle 操作将其下采样到 64 × 64。在每个尺度中,利用一个卷积层和两个残差块(RB)来提取条件特征 Fck。最终形成多尺度条件特征Fc = {Fc1, Fc2, Fc3, Fc4}。注意,Fc的维度与UNet降噪器的编码器中的中间特征Fenc = {Fe1nc, Fe2nc, Fe3nc, Fe4nc}相同。然后在每个尺度上添加 Fc 和 Fenc。
在这里插入图片描述

1、结构控制

T2I-Adapter 具有良好的泛化性,可以支持各种结构控制,包括草图、深度图、语义分割图和关键姿势。这些模式的条件图直接输入到特定于任务的适配器中以提取条件特征Fc。
在这里插入图片描述

2、空间调色板

除了结构之外,颜色也是图像的基本组成部分,主要涉及两个方面:色调和空间分布。文章设计了一个空间调色板来粗略地控制生成图像的色调和颜色分布

  • 文章使用了高双三次下采样来去除图像的语义和结构信息,同时保留足够的颜色信息。
  • 然后应用最近的上采样来恢复图像的原始大小。
  • 最后,色调和颜色分布由几个空间排列的色块来表示。
    根据经验,文章利用 64× 下采样和上采样来完成这个过程。训练过程利用颜色图作为C,通过FAD生成Fc。

3、多适配器控制

除了使用单个适配器作为条件外,T2I 适配器还支持多个条件。此策略不需要额外的培训。从数学上讲,这个过程可以定义为:
在这里插入图片描述

(三)模型优化

优化时固定SD中的参数,只优化T2I适配器。每个训练样本都是一个三元组,包括原始图像 X 0 X_0 X0、条件图 C C C和文本提示 y y y。优化过程与SD类似。具体来说,给定图像 X 0 X_0 X0,首先通过自动编码器的编码器将其嵌入到潜在空间 Z 0 Z_0 Z0。然后从 [ 0 , T ] [0, T ] [0,T] 中随机采样一个时间步 t t t,并将相应的噪声添加到 Z 0 Z_0 Z0,产生 Z t Z_t Zt。从数学上讲,我们的 T2I 适配器通过以下方式进行优化:
在这里插入图片描述

训练期间的非均匀时间步采样

扩散模型中的时间嵌入是采样的重要条件。如果将时间嵌入引入适配器,能够增强其引导能力,但是这种设计需要适配器参与每次迭代,进而使得适配器不再轻量化。因此文章采用了合适的训练策略来弥补这个弱点:

  • 将DDIM推理采样平均分为3个阶段,即开始、中期和后期。
  • 向三个阶段中的每个阶段添加指导信息。可以发现中后期添加引导对结果影响不大。表明生成结果的主要内容是在早期采样阶段就确定的。因此,如果t是从后面的部分采样的,则在训练期间将忽略指导信息。

因此,为了加强adapter的训练,采用非均匀采样来增加采样早期t下降的概率。这里,文章利用三次函数(即 t = ( 1 − ( t T ) 3 ) × T , t ∈ U ( 0 , T ) t = (1 − ( \frac{t} {T} )^3) × T, t ∈ U (0, T ) t=(1(Tt)3)×T,tU(0,T))作为 t 的分布。

在这里插入图片描述

均匀采样和三次采样的比较如下图所示,包括颜色引导和关键姿势引导。可以发现t的均匀采样存在指导性弱的问题,尤其是在颜色控制方面。三次采样策略可以纠正这个弱点。
在这里插入图片描述

这篇关于T2I-Adapter:学习适配器为文本到图像扩散模型挖掘更多可控能力的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/928715

相关文章

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O