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模型、语音或音乐。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/597927.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

10.Java对象内置结构

文章目录 Java对象内置结构1.Java对象的三个部分1.1.对象头1.2.对象体1.3.对齐字节 2.对象结构中核心字段的作用2.1.MarkWord(标记字)2.2.Class Pointer(类对象指针)2.3.Array Length(数组长度)2.4.对象体2.5.对齐字节 3.Mark Word的结构信息3.1.不同锁状态下的Mark Word字段结…

K邻算法:在风险传导中的创新应用与实践价值

程序员的实用神器 ⛳️ 写在前面参与规则!!! ✅参与方式:关注博主、点赞、收藏、评论,任意评论(每人最多评论三次) ⛳️本次送书1~4本【取决于阅读量,阅读量越多,送的越…

Ubuntu24.04安装中文输入法

Ubuntu24.04安装中文输入法 为了更好的体验,请访问个人博客 www.huerpu.cc:7000 一、添加中文语言支持 在安装中文输入法之前,首选要添加中文语言支持。选择System,点击Region & Language。 点击Manage Install Languages。 点击Insta…

LED显示屏的维护与使用指南

LED显示屏作为一种先进的显示技术,广泛应用于广告、信息显示、舞台背景等领域。然而,为了确保显示屏的长期稳定运行和良好的显示效果,对其进行正确的维护和使用是非常必要的。以下是一些专业的维护与使用建议: 维护建议&#xff1…

Android iw 工具

代码位置:Android/external/iw 查看支持的命令: console:/ # iw help Usage: iw [options] command Options:--debug enable netlink debugging--version show version (4.1) Commands:help [command]Print usage for all or a specific command, e.g."…

六西格玛管理培训公司挑选攻略:如何找到最适合你的合作伙伴?

面对众多提供六西格玛管理培训的公司,企业如何挑选到真正适合自己的呢?本文有建议如下: 一、明确培训目标 在选择六西格玛管理培训公司之前,企业首先要明确自身的培训需求和目标。这包括确定培训的范围、期望达到的效果以及预算…

docker-compose完成mysql8.0+环境搭建

1、准备my.cnf文件到指定目录(和基础的增加了一个default_authentication_pluginmysql_native_password 的身份验证插件配置信息) 原因:官方提到: 该方式可以解决:Authentication plugin ‘caching_ sha2_password‘ c…

【代码分享】使用HTML5的Canvas绘制编码说明图片

最急在工作中遇到一个需求,根据给定的编码生成编码说明,像下面这样的效果。 不同含义的编码用横杠分割,然后每个编码下面用箭头指明具体的含义。下面是我使用canvas实现的代码。具体的编码宽度大家可以根据实际情况进行调整,目前…

炒股沪指放量涨逾1%,医药、酿酒等板块强势

5月首个交易日,两市股指高开高走,盘中大幅单边上行,两市成交额连续4个交易日突破万亿元,北向资金大举进场扫货,一度净买入超100亿元。 同创优配是AAA 级诚信经营示范单位,中国人民银行备案认证,天眼查可查询。是一家专注于股票投资、金融服务、及资产管理的专业机构 截至收盘…

代码随想录算法训练营第36期DAY14

DAY14(周二) 二叉树的递归遍历 144二叉树的前序遍历 过了。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullp…

简易的项目管理软件有哪些推荐?

简易的项目管理软件有很多,以下是一些推荐选项: zz-plan:https://zz-plan.com/ 作为一个在线甘特图工具,它适用于不同规模和复杂性的项目管理,能够轻松管理任务和进度。 Asana:https://asana.com/ 以其简…

4. FactoryTalk View SE按钮弹出二次确认

在按钮界面–按钮属性–添加释放动作–选择需要确认–配置–确定。 (如果是用变量连接的比如需要输入密码等等选择使用变量) 这样就完成了二次确认的窗口设置。

106短信群发平台:拓客拉新、商品促销,效果究竟如何?一试便知!

106短信群发平台在拓客拉新和商品促销方面的效果是非常显著的。 首先,从发送速度和到达率来看,106短信平台表现优秀。无论是节假日还是平日,其发送速度都能保持在一个较快的水平,这对于需要及时到达的营销信息尤为重要。同时&…

Leetcode—1991. 找到数组的中间位置【简单】

2024每日刷题&#xff08;129&#xff09; Leetcode—1991. 找到数组的中间位置 实现代码 class Solution { public:int findMiddleIndex(vector<int>& nums) {int sum accumulate(nums.begin(), nums.end(), 0);int prefix 0;for(int i 0; i < nums.size();…

第十三章 计算机网络

这里写目录标题 1.网络设备2.协议簇2.1电子邮件(传输层)2.2地址解析(网际层)2.3DHCP(动态主动配置协议)2.4URL(统一资源定位器)2.5IP地址和子网掩码 1.网络设备 物理层&#xff1a;中继器&#xff0c;集线器(多路中继器) 数据链路层&#xff1a;网桥&#xff0c;交换机(多端口…

软件FMEA的时机:架构设计、详设阶段——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 软件FMEA&#xff08;故障模式与影响分析&#xff09;是一种预防性的质量工具&#xff0c;旨在识别软件中可能存在的故障模式&#xff0c;并分析其对系统性能、安全性和可靠性的影响。在软件开发生命周期中&#xff0c;选择适当的时机进行FME…

[Docker]容器的网络类型以及云计算

目录 知识梗概 1、常用命令2 2、容器的网络类型 3、云计算 4、云计算服务的几种主要模式 知识梗概 1、常用命令2 上一篇已经学了一些常用的命令&#xff0c;这里补充两个&#xff1a; 导出镜像文件&#xff1a;[rootdocker ~]# docker save -o nginx.tar nginx:laster 导…

rust调用SQLite实例

rusqlite库介绍 Rusqlite是一个用Rust编写的SQLite库&#xff0c;它提供了对SQLite数据库的操作功能。Rusqlite的设计目标是提供一个简洁易用的API&#xff0c;以便于Rust程序员能够方便地访问和操作SQLite数据库。 Rusqlite的主要特点包括&#xff1a; 遵循Rust的类型系统和…

用滑动条改变字体的大小(简单好抄)

1.首先在屏幕中添加一个滑动条和你要改变字体大小的文本&#xff08;用新版的&#xff09; 2.点击滑动条设置value的最大值和最小值 3.编写脚本 using System.ComponentModel; using TMPro; using UnityEngine; using UnityEngine.UI;public class FontSizeSlider : MonoBehav…

LeetCode 面试经典150题 228.汇总区间

题目&#xff1a; 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区…