Versatile Diffusion—— 融合文本和图像的扩散模型

介绍

Diffusion模型在各种生成任务中取得了显著的进展,成为了一个重要的里程碑。特别是像DALL·E 2、Imagen和Stable Diffusion(SD)这样的模型,不仅在学术界引起了广泛关注,也在工业界产生了深远影响。尽管这些模型在特定任务上表现出色,例如根据文本描述生成图像,但它们通常只能处理一类任务。对于不同类型的任务,我们往往需要独立训练或构建新的模型。
在这样的背景下,研究人员开始探索能否在现有成果的基础上,开发出一种“全能型”的Diffusion模型,以实现AIGC(人工智能生成内容)模型的统一。最近,由伊利诺伊大学厄巴纳-香槟分校和得克萨斯大学奥斯汀分校的联合研究团队在这一方向上取得了进展。他们提出了Versatile Diffusion(VD),这是一种创新的多流多模态Diffusion框架,代表了向通用生成性人工智能迈出的重要一步。
VD模型不仅具备了传统的文本到图像的生成功能,还能够执行多种任务,包括从图像生成相似图像、从图像生成文本描述、从文本生成相似文本、进行图像语义解耦编辑、结合图像和文本生成视频,以及基于隐空间编辑图像内容等。未来,VD模型还计划支持更多模态,如语音、音乐、视频和3D数据。
根据论文中的介绍,VD模型及其基础框架已经展现出以下优势:
a) 能够以具有竞争力的高质量处理所有基础任务。
b) 支持新的扩展和应用,例如风格与语义的解耦、图像-文本双重引导生成等。
c) 通过这些实验和应用,为生成的输出提供了更丰富的语义洞察力。
在训练数据集的选择上,VD主要使用了Laion2B-en数据集,并应用了自定义的数据过滤器,以确保数据的质量和适用性。这标志着VD在多模态学习和生成任务中具有巨大的潜力,为未来的研究和应用奠定了坚实的基础。

简而言之,可以实现图像和文本的 “任意对任意”。还可以通过输入提示来编辑图像,例如 “将这幅画变成油画”。

论文地址:https://arxiv.org/pdf/2211.08332.pdf
源码地址:https://github.com/shi-labs/versatile-diffusion
测试地址:https://huggingface.co/spaces/shi-labs/Versatile-Diffusion

多用途模型结构

Versatile Diffusion(VD)模型的核心技术是其创新的“多流多模态扩散模型”,这一模型能够根据图像和文本等多种上下文生成多种形式的数据。在VD中,不同的“流”代表不同的生成任务,每个流可以独立激活以执行特定的任务。
“单流”在VD的上下文中指的是一个特定的生成任务,例如使用单一模态的上下文(如文本描述)来生成另一种单一模态的数据(如图像)。这与“多流”相对,后者指的是模型能够同时处理多个不同的生成任务,例如文本到图像、图像到文本、图像变化等。
在VD模型中,“文本到图像”任务与单流定义相匹配,即根据文本提示生成图像。这与现有的一些热门模型如Stable Diffusion和Imagen的工作原理相似,但VD的先进之处在于其多流架构,使其能够执行更广泛的任务。
VD模型的结构由三部分组成:

  1. 全局层(Global Layers):这些层是独立于流的,它们在所有生成任务中都会被激活。例如,时间嵌入层(time-embedding layers)就是全局层的一部分。
  2. 数据层(Data Layers):这些层依赖于输出数据的类型,仅在生成特定类型的数据时才会被激活。例如,残差块(residual blocks)可以作为图像数据层。
  3. 上下文层(Context Layers):这些层依赖于输入上下文的类型,仅在输入特定类型的上下文时才会被激活。例如,交叉注意力(cross-attention)层可以作为文本和图像的上下文层。
    在执行特定的生成任务时,VD会通过共享的全局层以及选定的数据层和上下文层进行前馈传递,而其他不相关的层则保持静默。这种设计不仅提高了参数的共享性,而且减少了模型的总体大小,因为不需要为每个任务训练独立的模型。通过这种方式,VD能够以更高效的方式执行多种复杂的多模态生成任务。

下表概括了各层和 "稳定扩散模型中的相应层 "的行为。

层次行为稳定扩散就是一个例子。
全球层不受流量影响,持续启动
… 不同流量之间共享参数。

整合时间信息 | 时间嵌入层 |
| 数据层 | 当网络产生 "相应输出模式 "时激活。 | 残块(按时间调节)。 |
| 背景层 | 输入 "相应语境模式 "时激活。 | 交叉注意层(文字调节)。 |

以 "文本到图像 "为例,xt被发送到图像的数据层和文本的上下文层,从而在下一步得到 xt-1。同样,对于图像到图像,xt被发送到图像的数据层和图像的上下文层。

整个 VD 网络的组织结构如下图所示。

如图右下角所示,有四种类型的 VD 生成流。

  • 文本到图片
  • 图像到文本
  • 图像变化
  • 文本变化

总之,数据层和上下文层的反复使用表明,其结构遵循了传统扩散模型中的 U-Net 结构。

CLIP 与以往模式的不同之处在于,它不仅引入了文本编码器,还引入了图像编码器。这是因为不仅考虑了文本调节,还考虑了图像调节。

此外,由于各层共享 "时间信息 "和 “全网参数”,全局层可在单一模型中实现多模式生成。

在 VD 中,图像通过 VAE 转换为潜在表征,文本通过 Optimus Bert 转换为潜在表征。

顺便提一下,在推理时,完整的噪声图像和文本数据被输入到 VD 网络。然后,图像和文本提示将通过 CLIP 的相应编码器用于生成调节条件。

评估测试

下表比较了 VD 和稳定扩散生成的数据。

定性结果表明,产生 VD 的能力很强。此外,定量评估结果表明:

FID 分数显示,在文本到图像和图像变化任务中,VD 的表现优于其他基线。

我们还进行了一项实验,要求受试者对每个模型生成的图像中他们认为质量最好的图像进行投票。结果如下。

蓝色代表 "稳定扩散生成的图像质量更好 "的票数,青色代表 VD 的票数,灰色代表 "质量差不多 "的票数。

结果表明,在 "文本到图像 "中,"质量差不多 "等意见很明显,但在 "图像变化 "中,VD 的评分更高。

项目配置

conda create -n versatile-diffusion python=3.8
conda activate versatile-diffusion
conda install pytorch==1.12.1 torchvision=0.13.1 -c pytorch
[Alternatively] pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
pip install -r requirements.txt

总结

Versatile Diffusion(VD)模型的设计理念是创建一个统一的多任务多模态框架,能够处理包括文本到图像(Text-to-Image)、图像到文本(Image-to-Text)和图像变化(Image-Variation)在内的多种生成任务。这种模型的设计灵活性和扩展性意味着它不仅可以处理当前的文本和图像模态,还可以通过添加适当的编码器来支持新的数据模态,如3D模型、语音或音乐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

知来者逆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值