T2I-Adapter: 让马良之神笔(扩散模型)从文本生成图像更加可控

文章信息

在这里插入图片描述
单位:北大深张健团队,腾讯ARC lab
源码: https://github.com/TencentARC/T2I-Adapter

在这里插入图片描述

图1. 插个DXL的渲染图,这么真实的光感,感觉PS都可以被取代了


前言

大规模的text2image模型具有不可置信的生成能力,已经在学习复杂结构和高层语义上展现了超能力。但是,仅依赖文本提示还不够充分挖掘这些能力,特别是在灵活以及准确地控制下(例如颜色和结构)。在这篇文章中,作者尝试去发掘这种T2I模型隐性学习的能力,然后直接使用它们去控制更加有颗粒度的生成。特别地,作者提出学习简单的轻量级的T2I-Adapters去对齐模型内部的知识。作者会固定住原始的T2I模型,并调控外部的控制信息,以这样的方式,作者能够训练不同的适配器来对应不同的场景,提升丰富的控制和编辑效果在颜色和结构上。并且,提出的适配器具有实用价值,例如泛化性与组合性。更多的实验证明了作者的适配器取得了优秀的生成效果和广泛的应用。


一、介绍

由于在海量数据和超大算力的训练,T2I模型在给定文本的情况下用于生产图片,已经被证明具有很强的生成能力。这些生成式的结果通常具有丰富的纹理,清晰的边界,合理的结构以及正确的语义。这些现象潜在地表明T2I模型能够以隐性的方式去较好捕捉到不同级别的信息,从低级别(纹理),中层级别(边缘)到高级别(语义)。

尽管取得了不错的合成质量,它非常依赖于设计良好的提示【22,26】,并且生成式的基线模型缺少灵活的用户控制能力,这种能力能够指导合成的图片能够更加精确地实现用户的意图。对于一个不专业的用户,生成的结果通常是不可控的和不稳定的。例如,最近提出的Stable Diffusion SD模型在想象的场景下表现不太好,例如下图所示“带有翅膀的小车”,“带有兔耳朵的钢铁侠”。作者觉得并不是T2I没有这种生成的能力,而是提示文本不能提供精确的结构指引。
在这里插入图片描述
在这里插入图片描述

作者比较好奇的是,是否可能去挖掘T2I模型的隐性学习能力,特别是高层级的结构与语义能力,然后直接使用它们去控制更加准确地生成。

作者觉得一个小的适配器模型能够取得这个目的,因为它不是学习新的生成能力,而是学习一个从控制信息到模型内部知识的映射。也就是说,主要的问题是对齐任务,即内部的只是和外部的控制信号应该被对齐。因此,作者提出T2I-Adapters,一个轻量级的模型能够用于学习这种对齐,在使用相对少量的数据下。T2I适配器提供了带有额外提示的预训练的SD模型。通过这样的方式,作者能够训练不同的适配器以适应不同的场景,然后提供了更加精确可控的生产指导。如下图所示,这种适配器,作为额外的网络注射指导信息,具有以下优点:

  • 插件可玩。他们不影响原始的网络结构和生成能力;
  • 结构简单。他们能够简单地插入到当前的T2I模型中,在花费少量的训练代价下。并且他们在扩散过程中仅需要一次推理。他们只有77M参数量和300M的存储空间。
  • 灵活性。作者能够训练不同的适配器用于不同的控制条件,包括空间颜色控制,和更加精细的结构控制。
  • 组合性。不止一个的适配器能够组合起来获得更多条件的控制;
  • 泛化性。一旦被训练好,他们能够直接用于微调的SD模型。

二、相关工作

1.图像合成与转换

这种高维的结构化的特点给自然图像生成带来了挑战。生产对抗网络GAN允许有效的采用在随机分布中,并取得了不错的合成质量。一些其他方法比如可变的自编码器也被提出来用于构建一个更加稳定的优化过程。这些早期的工作通常执行一个不可控的图像合成。不同于不可控的图像合成,一些有条件的策略被提出来。常用的情况是在另一个域如草稿,语义分割图和关键点姿态。几个有条件的GAN方法【16,24】被提出用于转换其他域的条件图到自然图像。除了图像控制的情况外,文本是另外一个重要的情况,它用于给出文本描述下生成图像。多数这类方法对待不同的情况是单独训练的。最近的一些尝试【15】在探索多模态情况下的图像合成。

2 扩散模型

近些年,扩散模型在图像合成中取得了非凡的成就。它用于从高斯噪声中生成图像,通过一个迭代的去噪过程。它的实现是基于严格的物理用法,包括一个扩散过程和一个相反的过程。在扩散过程,一个图像X0被转换为一个高斯分布X_T,通过在T次迭代内添加随机的高斯噪声。反向过程是从X_T中复原X0通过不断去噪步骤。

最近的扩散方法关注在文本到图像的生成任务。例如,Glide方法提出在去噪过程中结合文本特征到transformer块。后来,DALLE,Cogview, Make-a-scene,SD和Imagen等快速地提升了T2I的生成能力。这些快速传播的策略在特征空间执行去噪过程通过交叉注意力模型。尽管他们获得了不错的生成质量,文本提示不能提供可信结构的合成结果。PITI【43】提出提供结构化的指引通过关闭其他条件与文本条件之间的特征之间的距离。方法【42】提出采用目标手稿与中间结果的相似梯度来越苏最终结果的结构。一些其他方法也尝试调制交叉注意力图区指导生成过程。这类方法的好处是他们不需要额外的单独数据。但是他们在复杂场景仍然不实用。后来的工作【45】尝试学习特定任务的ControlNet来实现有条件下的合成。方法【14】就是采用一组可控条件下来重新训练扩散模型。

3 适配器

适配器的概率源自NLP。适配器【13】发现微调一个大的预训练模型用于每个下游任务是不高效的,提出使用适配器来转换。适配器是一个紧凑的可扩展的模型。方法【40】探讨多任务的方法通过共享一个简单的BERT模型,带有少量的额外的特定任务参数。在CV领域,方法【20】提出微调ViT在最小改动下用于目标检测。最近,ViT-Adapter采用适配器使得一个原始的ViT能够执行不同的下游任务。但是,在预训练的T2I模型上使用低成本的适配器,仍然是一个开放的问题。

三、T2I适配器

在这里插入图片描述

图3. T2I适配器的架构图。主要包含两个部分:1)固定参数的预训练好的稳定扩散模型;2)几个适配器,被训练于对齐扩散模型内部的知识和外部的控制信号。不同的适配器能够被组合,通过直接添加不同的权重。

总结

作者迈出的这一步,对于玩SD的人来说是一个锦上添花的过程。我们知道SD非常强大,但是要生成满意的图像,需要良好的文字提示。但是文字提示也是一个有技巧的工程。作者提出的T2I适配器,能够减少对文字提示的依赖,获得更想要的图像生成效果。

实验目的: 1. 了解数据库的基本原理和操作; 2. 掌握企业管理器的使用方法; 3. 实现基本的SQL语句。 实验步骤: 1. 打开企业管理器,新建一个名为“StdentW101”的数据库,并在其中创建三个表格,分别为S(学生信息表)、C(课程信息表)和SC(选课信息表)。 2. 对于S表,创建以下字段:SNO(学号)、SNAME(姓名)、SEX(性别)、AGE(年龄)和BIRTHDAY(出生日期)。 3. 对于C表,创建以下字段:CNO(课程号)、CNAME(课程名称)和TNO(教师号)。 4. 对于SC表,创建以下字段:SNO(学号)、CNO(课程号)和GRADE(成绩)。 5. 向S表中插入学生信息,向C表中插入课程信息,向SC表中插入选课信息。 6. 使用SQL语句实现以下查询: 1. 检索丁宝康老师所授课程的课程号和课程名 ```sql SELECT C.CNO, C.CNAME FROM C WHERE C.TNO = ( SELECT T.TNO FROM T WHERE T.TNAME = '丁宝康' ) ``` 2. 检索年龄大于19岁的男学生的学号和姓名。 ```sql SELECT S.SNO, S.SNAME FROM S WHERE S.AGE > 19 AND S.SEX = '男' ``` 3. 检索至少选修两门课程的学生学号。 ```sql SELECT SC.SNO FROM SC GROUP BY SC.SNO HAVING COUNT(*) >= 2 ``` 4. 统计有学生选修的课程门数。 ```sql SELECT COUNT(DISTINCT SC.CNO) FROM SC ``` 5. 求选修课程号为2的学生的平均年龄。 ```sql SELECT AVG(S.AGE) FROM S WHERE S.SNO IN ( SELECT SC.SNO FROM SC WHERE SC.CNO = 2 ) ``` 6. 求马良老师所授课程的每门课程的学生平均成绩 ```sql SELECT SC.CNO, AVG(SC.GRADE) FROM SC, C WHERE SC.CNO = C.CNO AND C.TNO = ( SELECT T.TNO FROM T WHERE T.TNAME = '马良' ) GROUP BY SC.CNO ``` 7. 统计每门课程的学生选修人数(超过1人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 ```sql SELECT SC.CNO, COUNT(DISTINCT SC.SNO) AS NUM FROM SC GROUP BY SC.CNO HAVING COUNT(DISTINCT SC.SNO) > 1 ORDER BY NUM DESC, SC.CNO ASC ``` 8. 检索姓名以王打头的所有学生的姓名和年龄。 ```sql SELECT S.SNAME, S.AGE FROM S WHERE S.SNAME LIKE '王%' ``` 9. 在SC中检索成绩为空值的学生学号和课程号。 ```sql SELECT SC.SNO, SC.CNO FROM SC WHERE SC.GRADE IS NULL ``` 实验结论: 通过企业管理器建立学生选课数据库“StdentW101”,并使用SQL语句实现了多种查询操作,实现了对数据库的基本操作和实际应用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烧技湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值