【CVPR 2023】 All are Worth Words: A ViT Backbone for Diffusion Models

All are Worth Words: A ViT Backbone for Diffusion Models, CVPR 2023

论文:https://arxiv.org/abs/2209.12152

代码:https://github.com/baofff/U-ViT

解读:U-ViT: A ViT Backbone for Diffusion Models - 知乎 (zhihu.com)

All are Worth Words : A ViT Backbone for Diffusion Models_通街市密人有的博客-CSDN博客

摘要

文中首次使用U-Net建模score-based model (即diffusion model),后续DDPM ,ADM ,Imagen 等许多工作对U-Net进行了一系列改进。目前,绝大多数扩散概率模型的论文依然使用U-Net作为主干网络。

ViT在各种视觉任务中显示出了前景,而基于CNN的U-Net在扩散模型中仍然占主导地位。论文设计了一种简单通用的基于ViT的架构(命名为U-ViT),用于使用扩散模型生成图像。U-ViT的特征是将包括时间、条件和噪声图像块在内的所有输入视为令牌,并在浅层和深层之间使用长跳跃连接。本文在无条件和类条件图像生成以及文本到图像生成任务中评估U-ViT,其中U-ViT即使不优于类似大小的基于CNN的U-Net,也具有可比性。特别是,在生成模型的训练过程中,在没有访问大型外部数据集的方法中,具有U-ViT的潜在扩散模型在ImageNet 256×256上的类条件图像生成中实现了2.29的FID得分,在MS-COCO上的文本到图像生成中达到了5.48的FID得分。实验结果表明,对于基于扩散的图像建模,长跳跃连接是至关重要的,而基于CNN的U-Net中的下采样和上采样算子并不总是必要的。
 

U-ViT网络结构

网络结构 

U-ViT是图像生成中扩散模型的一个简单通用的主干,延续了ViT的方法,将带噪图片划分为多个patch之后,将时间t,条件c,和图像patch视作token输入到Transformer block,同时在网络浅层和深层之间引入long skip connection,可选地在输出之前添加一个3×3卷积块。

网络细节

对U-ViT中的关键因素进行了系统的实证研究。在CIFAR10[36]上进行消融,在10K生成的样本上每50K训练迭代评估FID得分,并确定默认实现细节。 

The way to combine the long skip branch

组合长跳跃分支的方法。直观上理解,扩散概率模型中的噪声预测网络是像素级别的预测任务,对low-level feature敏感,long skip connection为连接low-level feature提供了快捷方式,所以有助于网络的训练。 对于网络主分支的特征h_m \in R^{B,L,D}和来自long skip connection的特征 h_s \in R^{B,L,D} ,其中B为batch_size,L为token 数目,D为每一个token的长度。作者探究了以下5种融合 h_m,h_s 的方式。

long skip connection对于图像生成的FID分数是至关重要的。第(1)种方式最好。 

The way to feed the time into the network

将时间输入网络的方式。考虑了两种将t输入网络的方法。

(1) 将其视为令牌token,如图1所示。
(2) 将层归一化后的时间合并到transformer块中,类似于U-Net中使用的自适应组归一化。

将时间视为令牌的第一种方式比AdaLN表现得更好。

The way to add an extra convolutional block after the transformer

在transformer块之后添加额外卷积块的方法。考虑两种方法在transformer块之后添加额外的卷积块。

(1) 在线性投影后添加一个3×3卷积块,将标记嵌入映射到图像块,如图1所示。
(2) 在该线性投影之前添加一个3×3卷积块,该块需要首先将令牌嵌入的1D序列h \in R^{L*D}重新排列为形状为 H/P\times W/P\times D的2D特征,其中P是patch大小。
(3) 与丢弃额外卷积块的情况进行比较。

在线性投影后添加3×3卷积块的第一种方法的性能略好于其他两种选择。

Variants of the patch embedding

patch嵌入的变体。考虑了patch嵌入的两种变体。

(1) 原始patch嵌入采用线性投影,将patch映射到令牌嵌入。
(2)使用3×3卷积块的堆栈,然后是1×1卷积块,将图像映射到令牌嵌入。

原始的patch嵌入表现更好。

Variants of the position embedding

位置嵌入的变体。考虑位置嵌入的两种变体。

(1) 在原始ViT中提出的一维可学习位置嵌入,本文的默认设置。
(2) 二维正弦位置嵌入,它是通过级联位置(i,j)处的patch的i和j的正弦嵌入而获得的。

一维可学习位置嵌入表现更好。

深度、宽度和patch大小的影响

通过研究深度(即层数)、宽度(即隐藏层大小D)和patch大小对CIFAR10的影响,展示了U-ViT的缩放性。随着深度(即层数)从9增加到13,性能有所提高。尽管如此,UViT并没有像50K训练迭代中的17次那样从更大的深度中获益。类似地,将宽度(即隐藏层大小)从256增加到512可以提高性能,并且进一步增加到768不会带来增益;将patch大小从8减小到2提高了性能,并且进一步减小到1不会带来增益。请注意,要获得良好的性能,需要像2这样的小patch大小。假设这是因为扩散模型中的噪声预测任务是低级别的,需要小patch,不同于高级别的任务(例如分类)。由于使用小的patch大小对于高分辨率图像来说是昂贵的,首先将它们转换为低维潜在表示[54],并使用U-ViT对这些潜在表示进行建模。

实验

设置 

数据集。对于无条件学习,考虑包含50K训练图像的CIFAR10和包含162770张人脸训练图像的CelebA 64×64。对于类条件学习,考虑64×64、256×256和512×512分辨率的ImageNet[12],它包含来自1K个不同类的1281167个训练图像。对于文本到图像学习,我们考虑256×256分辨率的MS-COCO[40],其中包含82783个训练图像和40504个验证图像。每张图片都有5个图像标注。

高分辨率图像生成。对于256×256和512×512分辨率的图像,遵循潜在扩散模型(LDM)。首先使用Stable Diffusion2[54]提供的预训练图像自编码器,将它们分别转换为32×32和64×64分辨率的潜在表示。然后,使用所提出的U-ViT对这些潜在的表示进行建模。

文本到图像学习。在MS-COCO上,使用稳定扩散之后的CLIP文本编码器将离散文本转换为嵌入序列。然后将这些嵌入作为令牌序列馈送到U-ViT中。

训练。使用AdamW优化器,所有数据集的权重衰减为0.3。对大多数数据集使用2e-4的学习率,除ImageNet 64×64使用3e-4。在CIFAR10和CelebA 64×64上训练了500K次迭代,批量大小为128。在ImageNet 64×64和ImageNet 256×256上训练300K迭代,在ImageNet 512* 512上训练500K迭代,批量大小为1024。在batchsize=256的MS-COCO上训练1M次迭代。

U-ViT配置变体

无条件和类条件图像生成

将U-ViT与基于U-Net的先验扩散模型进行了比较。还与GenViT进行了比较,后者是一种较小的ViT,不使用长跳跃连接,并包含了标准化层之前的时间。如表1所示,U-ViT在无条件CIFAR10和CelebA 64×64上与U-Net相当,同时性能远优于GenViT。

表3进一步表明,在使用相同采样器的不同采样步骤下,U-ViT优于LDM。请注意,U-ViT也优于VQ-Diffusion,后者是一种离散扩散模型[1],采用transformer作为主干。

 在图4中,在ImageNet 256×256和ImageNet 512×512上提供了选定的样本,在其他数据集上提供了随机样本,这些样本具有良好的质量和清晰的语义。

MS-COCO上的文本到图像生成 

在标准基准数据集MS-COCO上评估了用于文本到图像生成的U-ViT。 

表4所示,U-ViT-S在生成模型的训练过程中,在不访问大型外部数据集的情况下,已经在方法中实现了最先进的FID。通过将层数从13层进一步增加到17层,U-ViT-S(Deep)甚至可以实现5.48的更好FID。 

图6显示了使用相同随机种子生成的U-Net和U-ViT样本,以进行公平比较。发现U-ViT生成了更多高质量的样本,同时语义与文本匹配得更好。例如,给定文本“棒球运动员向球挥动球棒”,U-Net既不会生成球棒也不会生成球。相比之下,我们的U-ViT-S生成的球具有更少的参数,而我们的U-ViT-S(Deep)进一步生成击球。我们假设这是因为文本和图像在U-ViT的每一层都有交互,这比只在跨越注意力层交互的U-Net更频繁。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进阶JAVA篇-Object类与Objects类、包装类的常用API(一)

目录 API 1.0 API概念 2.0 Object类的常用API 2.1 Object 中的 tostring() 方法 表示返回对象的字符串表达形式 2.2 Object 中的 equals(Object o) 方法 ,判断两个对象的是否相等 2.2.1深入了解如何重写Object 中的 equals(Object o) 方法 2.2.2 对重写Object 中的…

C++医院影像科PACS源码:三维重建、检查预约、胶片打印、图像处理、测量分析等

PACS连接DICOM接口的医疗器械(如CT、MRI、CR、DR、DSA、各种窥镜成像系统设备等),实现图像无损传输,实现DICOM胶片打印机回传打印功能,支持各种图像处理,可以进行窗技术调节,与登记台管理系统共…

差模电感和共模电感的差别

一、初步了解差模、共模的概念 超链接,点击鼠标打开:X电容和Y电容;差模与共模初认识 二、差模和共模电感的二者区别 共模电感和差模电感,是电路中常用的滤波电感、EMI器件,两者经常以环形电感线圈的方式存在。 首先…

【蓝桥·算法双周赛】蓝桥杯官方双周赛震撼来袭

1. 赛事前言 \space\space 大家好,我是执梗。在蓝桥杯中获得过十三届 Java B 组国一以及十四届 C B 组的国一。今天主要为大家带来一个好消息,蓝桥杯将为各位喜爱算法的小伙伴带来全新的算法双周赛。如果你热爱算法竞赛,或者准备参加十五届的…

firefox的主题文件位置在哪?记录以防遗忘

这篇文章写点轻松的 最近找到了一个自己喜欢的firefox主题,很想把主题的背景图片找到,所以找了下主题文件所在位置 我的firefox版本:版本: 118.0.1 (64 位)主题名称: Sora Kawai 我的位置在 C:\Users\mizuhokaga\AppData\Roaming\Mozilla\Firefox\Profiles\w0e4e24v.default…

【开源电商网站】(2),使用docker-compose和dockerfile进行配置,设置自定义的镜像,安装插件,增加汉化包,支持中文界面汉化。

项目相关代代码地址 相关内容: https://blog.csdn.net/freewebsys/category_12461196.html 原文地址: https://blog.csdn.net/freewebsys/article/details/133666433 包括以下运行的详细代码: https://gitee.com/study-demo-all/oscommerc…

CTF 全讲解:[SWPUCTF 2021 新生赛]Do_you_know_http

文章目录 参考环境题目hello.php雾现User-Agent伪造 User-AgentHackBarHackBar 插件的获取修改请求头信息 雾散 a.php雾现本地回环地址与客户端 IP 相关的 HTTP 请求头X-Forwarded-For 雾散 参考 项目描述搜索引擎Bing、GoogleAI 大模型文心一言、通义千问、讯飞星火认知大模型…

Apache Doris (三十九):Doris数据导出 - MySQL dump导出

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

抖音小店创业攻略,快速了解这些适合新手经营的类目

抖音小店是抖音平台上的一种新型电商形态,它允许用户在抖音上开设自己的小店,销售自己的商品。抖音小店的开设门槛低,成本也不高,因此很受新手创业者的青睐。那么,下面不若与众将介绍抖音小店中有哪些适合新手创业者经…

Factory-Method

Factory-Method 动机 在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“具…

智能优化算法常用指标一键导出为EXCEL,CEC2017函数集最优值,平均值,标准差,最差值,中位数,秩和检验,箱线图...

声明:对于作者的原创代码,禁止转售倒卖,违者必究! 之前出了一篇关于CEC2005函数集的智能算法指标一键统计,然而后台有很多小伙伴在询问其他函数集该怎么调用。今天采用CEC2017函数集为例,进行展示。 为了突…

根据前序遍历结果构造二叉搜索树

根据前序遍历结果构造二叉搜索树-力扣 1008 题 题目说明: 1.preorder 长度>1 2.preorder 没有重复值 直接插入 解题思路: 数组索引[0]的位置为根节点,与根节点开始比较,比根节点小的就往左边插,比根节点大的就往右…

TCP/IP(十一)TCP的连接管理(八)socket网络编程

一 socket网络编程 socket 基本操作函数 bind、listen、connect、accept、recv、send、select、close 说明: 本文需要C语言、syscall系统调用、OS 操作系统支持,如果不了解可以暂时跳过备注: 知道对应库函数的更底层机制思考: socket函数与FIN、ACK等…

c++ 学习之 强制类型转换运算符 const_cast

看例子怎么用 int main() {int a 1;int* p a;// 会发生报错// 如果学着 c的风格类型转换int* pp (int*)a;*pp 1; // 编译不报错,但是运行报错// const_castconst int n 5;const std::string s "lalal";// const cast 只针对指针,引用&…

.NET 8 中的调试增强功能

作者:James Newton-King 排版:Alan Wang 开发人员喜欢 .NET 强大且用户友好的调试体验。您可以在您选择的 IDE 中设置断点,启动已经附加上调试器的程序,逐步执行代码并查看 .NET 应用程序的状态。 在 .NET 8 中,我们致…

ceph版本和Ceph的CSI驱动程序

ceph版本和Ceph的CSI驱动程序 ceph查看ceph版本Ceph的CSI驱动程序 ceph ceph版本和Ceph的CSI驱动程序 查看ceph版本 官网ceph-releases-index Ceph的CSI驱动程序 Ceph的CSI驱动程序 https://github.com/ceph/ceph-csi

微信小程序在TS模板下引入TDesign组件

介绍 TDesign 是腾讯官方出品的一款微信小程序组件库。本文介绍如何在新建ts空白模板下引入TDesign库 步骤 新建一个空白项目,这里可以选择TS-基础模板 新建项目目录结构如图所示: 注意这里其实小程序的文件都存放在miniprogram文件夹下,…

MPP 架构在 OLAP 数据库的运用

MPP 架构: MPP 架构的产品: Impala ClickHouse Druid Doris 很多 OLAP 引擎都采用了 MPP 架构 批处理系统 - 使用场景分钟级、小时级以上的任务,目前很多大型互联网公司都大规模运行这样的系统,稳定可靠,低成本。…

vscode刷leetcode使用Cookie登录

1、安装插件 打开vscode,选择扩展,搜索leetcode,选择第一个,带有中文力扣字样,安装后重启 2、切换 选择这个小球,切换中文版本,切换后,会显示一个打勾 3、 选择小球旁边的有箭…

ES6 class类的静态方法static有什么用

在项目中,工具类的封装经常使用静态方法。 // amap.jsimport AMapLoader from amap/amap-jsapi-loader; import { promiseLock } from triascloud/utils; /*** 高德地图初始化工具*/ class AMapHelper {static getAMap window.AMap? window.AMap: promiseLock(AM…