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

相关文章

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Java实现将Markdown转换为纯文本

《Java实现将Markdown转换为纯文本》这篇文章主要为大家详细介绍了两种在Java中实现Markdown转纯文本的主流方法,文中的示例代码讲解详细,大家可以根据需求选择适合的方案... 目录方法一:使用正则表达式(轻量级方案)方法二:使用 Flexmark-Java 库(专业方案)1. 添加依赖(Ma

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c