当前位置: 首页 > news >正文

AIGC 004-T2I-adapter另外一种支持多条件组合控制的文生图方案!

AIGC 004-T2I-adapter另外一种支持多条件组合控制的文生图方案!


文章目录

    • 0 论文工作
    • 1 论文方法
    • 2 效果

0 论文工作

T2I-Adapter 论文提出了一种名为 T2I-Adapter 的轻量级适配器模块,旨在增强文本到图像 (T2I) 扩散模型的语义理解和生成能力。 论文指出现有方法 (如 DreamBooth) 难以平衡新概念学习与原始模型能力的保留,且计算成本高。T2I-Adapter 通过学习轻量级适配器模块来解决这些问题,这些模块可以插入到冻结的预训练扩散模型中,以适应新概念,同时最大限度地减少对原始模型的影响。
大规模文本-文本图像(T2I)模型令人难以置信的生成能力已经显示出了学习复杂结构和有意义的语义的强大能力。然而,仅仅依靠文本提示不能充分利用模型所学到的知识,特别是当需要灵活和准确的控制(如颜色和结构)时。该论文中试图“挖掘”T2I模型隐式地学习到的能力,然后显式地使用它们进行更细致的控制。具体来说,通过学习一个简单和轻量级的T2I适配器,以将T2I模型中的内部知识与外部控制信号对齐,同时冻结原来的大型T2I模型。这样,就可以训练不同种类的适配器,在生成结果的颜色和结构上实现丰富的控制和编辑效果。此外,提出的t2i适配器有有吸引力的专业具有实用价值的优点,如可组合性和泛化能力。大量的实验表明,t2i-adaptert具有良好的发电质量和广泛的应用前景。
特别指出ControlNet是比T2I-adapter几周的论文,几乎可以认为二者是同期工作。仔细区分的话,T2I更多体现出即插即用和组合扩展,他的条件简单通过cross-attention插入到T2I模型中,这显然是不如controlnet的融合更加有效更加全面。
论文arxiv
github

1 论文方法

T2I-Adapter 的核心思想是将可训练的适配器模块插入到冻结的预训练扩散模型中,而不是直接微调整个模型。 适配器模块的参数数量远远少于整个模型,这使得训练更有效率,并且可以更好地保留原始模型的能力。
在这里插入图片描述
a. 适配器模块:
结构: 适配器模块由多个瓶颈层组成,这些层被插入到扩散模型的 U-Net 结构的不同层级之间。 每个瓶颈层包含一个下采样层、一个非线性激活函数和一个上采样层。
参数: 适配器模块的参数是可训练的,并针对新概念进行优化。
位置: 适配器模块可以插入到 U-Net 结构的不同层级之间,以控制不同粒度级别的语义信息。
b. 扩散模型:
冻结权重: 预训练扩散模型的权重被冻结,不进行梯度更新。
适配器注入: 可训练的适配器模块被插入到冻结的扩散模型中。
c. 训练过程:
训练数据: 使用包含新概念的少量图像和文本描述对适配器模块进行训练。
损失函数: T2I-Adapter 使用与原始扩散模型相同的损失函数,例如变分下界 (ELBO) 或其他图像相似度指标。
优化目标: 训练目标是优化适配器模块的参数,以便生成与新概念一致的图像,同时最大限度地减少对原始模型的影响。
2. 优势:
参数效率: T2I-Adapter 仅需要训练少量适配器模块的参数,相比微调整个模型,大大降低了计算成本。
保留原始能力: 由于扩散模型的权重被冻结,T2I-Adapter 能够更好地保留原始模型的生成能力和泛化性。
易于集成: 适配器模块可以轻松地插入到现有的扩散模型中,而无需对模型结构进行重大修改。
可扩展性: 可以训练多个适配器模块来适应不同的新概念,并根据需要在推理时进行组合。
3. 缺点:
新概念学习能力: T2I-Adapter 的新概念学习能力可能不如微调整个模型,因为它只训练了少量参数。
适配器位置选择: 选择最佳的适配器模块插入位置可能需要一些实验和调整。

2 效果

在这里插入图片描述

相关文章:

  • 计算机视觉与深度学习实战:以Python为工具,基于深度学习的汽车目标检测
  • C语言 | Leetcode C语言题解之第113题路径总和II
  • Java线程池机制揭秘:一文掌握核心概念与实战技巧
  • 基于小波分析和机器学习(SVM,KNN,NB,MLP)的癫痫脑电图检测(MATLAB环境)
  • Day04:CSS 进阶
  • Ubuntu18.04 OpenSSH升级
  • IT行业的现状与未来发展趋势:从云计算到量子计算的技术变革
  • 猫头虎 解析:为什么AIGC在国内适合做TOB,在国外适合做TOC?
  • 【数据结构与算法 经典例题】相交链表
  • 【java程序设计期末复习】chapter7 内部类和异常类
  • C++STL---string知识汇总
  • Elasticsearch的复制功能
  • C#解析xml文件
  • K8s的kubectl的基本操作
  • C语言中的操作符
  • php的引用
  • [nginx文档翻译系列] 控制nginx
  • 10个最佳ES6特性 ES7与ES8的特性
  • ES6系统学习----从Apollo Client看解构赋值
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JS+CSS实现数字滚动
  • Js基础——数据类型之Null和Undefined
  • Logstash 参考指南(目录)
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • React as a UI Runtime(五、列表)
  • SOFAMosn配置模型
  • spark本地环境的搭建到运行第一个spark程序
  • Vue.js-Day01
  • 翻译--Thinking in React
  • 前端设计模式
  • 日剧·日综资源集合(建议收藏)
  • 如何在 Tornado 中实现 Middleware
  • 世界上最简单的无等待算法(getAndIncrement)
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 源码安装memcached和php memcache扩展
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​如何防止网络攻击?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • $forceUpdate()函数
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (C语言)逆序输出字符串
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Qt) 默认QtWidget应用包含什么?
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (九十四)函数和二维数组
  • (六)Hibernate的二级缓存
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .net framework 4.8 开发windows系统服务
  • .NET 中使用 Mutex 进行跨越进程边界的同步