多模态论文笔记——U-ViT

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍U-ViT的模型架构和实验细节,虽然没有后续的DiT在AIGC领域火爆,但为后来的研究奠定了基础,但其开创性的探索值得学习。

在这里插入图片描述

文章目录

      • 论文
      • 背景
      • 架构
      • 训练细节
        • 1. 长跳跃连接 (Long Skip Connections)
        • 2. 时间信息的注入方式 (Feeding Time into the Network)
        • 3. 额外的卷积块 (Extra Convolutional Block)
        • 4. Patch Embedding 的变体
        • 5. 位置编码 (Position Embedding)
      • 深度、宽度、patch大小的影响
      • 总结
      • 长跳跃连接在图像扩散模型中的作用
        • 1. 信息传递
        • 2. 特征整合
        • 3. 梯度传播
        • 4. 其他作用
  • 历史文章
    • 机器学习
    • 深度学习
      • 多模态论文

在前面的多模态系列文章中,我们介绍了DiT,其作为AIGC时代的新宠儿,将Transformer和Diffusion结合起来的,是近几年图像和视频生成的领域的优选结构。其实早在2022年9月,清华大学团队就发布了用「基于Transformer的架构U-ViT」替代基于卷积架构的U-Net,只不过没有现在的DiT火热。下面详细介绍U-ViT:

论文

All are Worth Words: A ViT Backbone for Diffusion Models

背景

扩散模型是一种强大的深度生成模型,近年来在高质量图像生成任务中展现了巨大的潜力。它们的发展速度迅猛,广泛应用于文本到图像生成、图像到图像生成、视频生成、语音合成以及3D合成等领域。

在目前的扩散模型中,骨干(backbones)结构的变革在扩散模型中起着核心作用。目前火热的扩散模型,如SD系列模型就是基于CNN的U-Net的,并取得了优异的性能。它通过下采样(encoding)和上采样(decoding)操作,结合跳跃连接,在捕捉局部细节和全局结构方面表现突出。

在SD 3 之前的扩散模型使用的是以基于CNN的U-Net为骨干结构的,在SD 3 之后的系列中,则是使用了DiT作为了骨干结构。
扩散模型系列参考:SD合集

将视觉和Transformer相结合的 ViT 在各种视觉任务中显现出了前景,而基于CNN的U-Net在扩散模型中仍占主导地位。本文中设计了一个简单而通用的基于ViT的架构(U-ViT),替代扩散模型中的U-Net,用于生成图像。

ViT参考:多模态论文笔记——ViT、ViLT

  • 设计一个基于其他架构(如ViT)的模型,要在性能上达到甚至超越U-Net并不容易。
  • ViT作为Transformer家族的一员,擅长处理全局特征,但其对局部细节的捕捉能力不如CNN。因此,直接用ViT替代U-Net并不现实。

U-ViT 核心设计如下:

  • U-ViT是基于ViT(Vision Transformer)架构的,它借鉴了U-Net的结构,用于替代扩散模型中的基于 CNN 的 U-Net,以生成图像。
  • 它将时间、条件和噪声图像补丁作为 token 输入,并使用**长跳跃连接(long skip connections)**连接浅层和深层。

效果:

  • 在无条件、类条件图像生成和文本到图像生成任务中,U-ViT表现出色。
  • 研究表明,长跳跃连接对于扩散模型中的图像建模至关重要,而 CNN-based U-Net 中的下采样和上采样操作并非总是必需的。

架构

本文中,作者设计的U-ViT架构,如下图所示:
在这里插入图片描述

图1. 用于扩散模型的U-ViT架构,其特点是将所有输入(包括时间、条件和噪声图像补丁)作为token,并在浅层和深层之间采用(#Blocks-1)/2个长跳跃连接。

架构说明:

  • U-ViT遵循ViT的设计方法,对图片进行一个Patch化的操作,并且U-ViT将所有输入(包括时间、条件和图像patch)都视为token。
    • 将时间 t t t、条件 c c c图像patch后的加噪图像 x t x_t xt 作为输入,然后【通过 ϵ θ ( x t , t , c ) \epsilon_\theta(x_t, t, c) ϵθ(xt,t,c)】在 U-ViT模型中预测加入 x t x_t xt中的噪声。
  • 受基于CNN的U-Net在扩散模型中的成功启发,U-ViT采用了类似的浅层和深层之间的长跳跃连接。
    • ϵ θ ( x t , t , c ) \epsilon_\theta(x_t, t, c) ϵθ(xt,t,c)的目标是像素级预测任务,对低级特征敏感。长跳跃连接为低级特征提供了捷径,使用长跳跃连接(long skip connections)连接浅层和深层,使浅层特征传递到深层,为深层网络提供更丰富的信息。
  • 【可选项】U-ViT在输出之前添加一个3×3的卷积块。旨在防止transformer生成的图像中出现潜在的伪影(potential artifacts in images)。

在论文的Background部分,还对扩散模型的扩散原理进行了简单的回顾,如不了解这个内容,建议参考:Stable Diffusion的加噪和去噪详解

训练细节

作者通过系统的实验研究,精心设计了其关键实现细节,并在CIFAR10数据集上进行了消融实验,通过消融实验,作者确定了以下最佳实现细节:

  1. 长跳跃连接采用 连接后线性投影 的方式。
  2. 时间信息通过 Token 注入更优。
  3. 额外卷积块在 线性投影后 添加效果最佳。
  4. Patch Embedding 使用 线性投影 更好。
  5. 位置编码使用 一维可学习嵌入(1-dimensional learnable position embedding) 是最佳选择(U-ViT和ViT、ViLT、DiT选择的位置编码一样,都是1D position embeddings,不同的是:DiT是不可学习的,ViT、ViLT和U-ViT是可学习的)。

消融实验(Ablation Study)是一种常见的实验方法,用于评估复杂系统中各个组件或设计对整体性能的贡献。通过系统地移除、替换或修改某个组件,然后观察模型性能的变化,研究人员可以验证该组件的作用并优化设计。

1. 长跳跃连接 (Long Skip Connections)

问题:哪种长跳跃连接方法更优?
实验设置:考虑以下几种主分支 h m h_m hm 和长跳跃分支 h s h_s hs 的组合方法:

  • 方法1:将它们连接后执行线性投影: Linear(Concat ( h m , h s ) ) \text{Linear(Concat}(h_m, h_s)) Linear(Concat(hm,hs))
  • 方法2:直接相加: h m + h s h_m + h_s hm+hs
  • 方法3:线性投影 h s h_s hs 后相加: h m + Linear ( h s ) h_m + \text{Linear}(h_s) hm+Linear(hs)
  • 方法4:相加后进行线性投影: Linear ( h m + h s ) \text{Linear}(h_m + h_s) Linear(hm+hs)
  • 方法5:不使用长跳跃连接。

在这里插入图片描述

结果

  • 方法1(连接后线性投影) 的性能最佳。该方法显著改变了表征信息,提升了模型性能。
  • 方法2(直接相加) 表现较差,因为Transformer内部已有加法操作,导致无显著增益。

2. 时间信息的注入方式 (Feeding Time into the Network)

问题:如何将时间 t t t 送入网络?
实验设置

  • 方法1:将时间 t t t 作为一个Token输入(如图1所示)。
  • 方法2:通过自适应层归一化 (Adaptive LayerNorm, AdaLN) 融入时间信息:
    AdaLN ( h , y ) = y s ⋅ LayerNorm ( h ) + y b \text{AdaLN}(h, y) = y_s \cdot \text{LayerNorm}(h) + y_b AdaLN(h,y)=ysLayerNorm(h)+yb
    其中, y s y_s ys y b y_b yb 为时间嵌入的线性投影。

在这里插入图片描述

结果

  • 方法1(将时间视为Token) 效果更好,尽管实现简单。

3. 额外的卷积块 (Extra Convolutional Block)

问题:Transformer后额外卷积块的位置对性能的影响?
实验设置

  • 方法1:在线性投影后添加一个3×3卷积块,将Token映射到图像Patch。
  • 方法2:在线性投影前添加一个3×3卷积块。
  • 方法3:不添加卷积块。

在这里插入图片描述

结果

  • 方法1(在线性投影后添加卷积块)性能略优。

4. Patch Embedding 的变体

问题:哪种Patch Embedding方式更好?
实验设置

  • 方法1:使用线性投影将Patch映射为Token嵌入(原始方式)。
  • 方法2:堆叠3×3卷积块,后接1×1卷积块,将图像映射为Token嵌入。

在这里插入图片描述

结果

  • 方法1(原始线性投影) 表现优于卷积堆叠方式。

5. 位置编码 (Position Embedding)

问题:哪种位置编码更优?
实验设置

  • 方法1:一维可学习位置嵌入(ViT默认设置)。
  • 方法2:二维正弦位置嵌入,Patch的 position ( i , j ) \text{position}(i, j) position(i,j) i i i j j j 的正弦编码拼接得到, i i i j j j 分别是二维网格中的行索引列索引
  • 方法3:不使用任何位置编码。

在这里插入图片描述

结果

  • 方法1(1D可学习位置嵌入) 性能最佳。
  • 方法3(无位置编码) 无法生成有意义的图像,表明位置编码对图像生成至关重要。

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

论文中还探讨了深度(层数)、宽度(隐藏层尺寸)和patch size对模型性能的影响。效果如下图所示:

在这里插入图片描述

  1. 深度 (Depth):

    • 随着模型深度的增加,性能得到了提高(例如:depth=9, 13),证实了 scale 特性。
    • 然而,在50K训练迭代后,增加到更大的深度(depth=17)并未带来额外的性能提升。
  2. 宽度 (Width):

    • 增加隐藏层的宽度(例如:width=256, 512)有助于性能的提升。
    • 然而,进一步增加到width=768并没有带来性能增益。
  3. Patch Size:

    • 减小patch size可以提高性能(例如:patch-size=8, 2),但是,减小到patch-size=1时,不再有任何性能提升。
    • 作者认为,为了获得良好的性能,较小的patch size(如patch-size=2)是必要的。推测原因是扩散模型的噪声预测任务需要低级别的细节,而这与高级任务(如分类)不同。
  4. 低维潜在表示:

    • 小的patch尺寸对于高分辨率图像的计算代价较高,因此作者选择将图像转换为低维潜在表示,并利用U-ViT对这些低维表示进行建模,【同SD模型,使用VAE进行降维】。

总结

通读完U-ViT,可以看出 U-ViT 和 后面发布并且爆火的 DiT在设计上有异曲同工之处:

  • 二者均是将 Transformer 与扩散模型融合的思路
  • 实验路径也相似,比如都采用了1 D 的位置编码 、在patch size上,都得出了同样的结论:patch size 为 2*2 是最理想的,都使用了和ViT一样的位置编码:1 D的正余弦。
  • 在模型参数量上,两者都在 50M-500M 左右的参数量上做了实验,最终都证实了Transformer的强大 scale 特性。
  • 额外的条件信息(时间信息/Timesteps,和文本信息)的注入方式实验中,都验证了自适应层规范化(AdaLN)。只不过U-ViT实验表明将时间 t t t 作为一个Token输入虽然简单,但是表现更好;而DiT实验中则认为AdaLN(准确的说是adaLN-Zero)效果更好。

DiT参考历史文章:多模态论文——DiT

长跳跃连接在图像扩散模型中的作用

长跳跃连接(long skip connections) 在图像扩散模型中的作用和 ResNet(Residual Networks) 的作用有相似之处。下面是长跳跃连接在图像扩散模型中的作用的详细介绍

1. 信息传递
  • 直接连接浅层和深层,细节保留:通过长跳跃连接(long skip connections),浅层提取的低级特征(如边缘、纹理等)可以直接传递给深层网络。 使深层网络可以获得来自浅层的更丰富的信息。这种信息传递可以帮助深层网络更好地理解和捕捉图像中的细节和特征,从而提高图像扩散模型的性能。
2. 特征整合
  • 融合多层次信息,增强上下文理解:通过跳跃连接,将浅层特征与深层特征融合(如通过加法、拼接等操作),形成丰富的多尺度特征表示。可以获得更丰富、更全局的特征表示。这种特征整合可以帮助模型更好地理解图像的上下文和语义信息,提高生成图像的质量和准确性。
3. 梯度传播
  • 缓解梯度消失和梯度爆炸,增强训练稳定性:长跳跃连接通过直接连接浅层和深层,使得梯度能够从深层更有效地反向传播到浅层,避免梯度在传播过程中的逐渐衰减或增大。梯度的顺畅传播有助于网络各层参数的学习更加稳定,从而提高训练的收敛速度和效果。
4. 其他作用
  • 支持高分辨率生成:在高分辨率图像生成中,长跳跃连接能够帮助模型更好地传递细粒度特征信息,避免因过多的下采样导致的分辨率损失。
  • 减少依赖下采样和上采样操作:相比传统的卷积U-Net中大量依赖下采样和上采样,长跳跃连接可以减少对这些操作的依赖,从而降低结构复杂度。

历史文章

机器学习

机器学习笔记合集

深度学习

深度学习笔记合集

多模态论文

深度学习笔记——ViT、ViLT
深度学习笔记——DiT(Diffusion Transformer)
深度学习笔记——CLIP、BLIP
多模态论文笔记——BLIP2
深度学习笔记——VQ-VAE和VQ-VAE-2
多模态论文笔记——dVAE(DALL·E的核心部件)
多模态论文笔记——LLaVA
多模态论文笔记——Coca
多模态论文笔记——CogVLM和CogVLM2

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

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

相关文章

springboot实战纪实-课程介绍

教程介绍 Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。 Spring Boot通过自动配置功能,降低了复杂性,同时支持…

BBP飞控板中的坐标系变换

一般飞控板中至少存在以下坐标系: 陀螺Gyro坐标系加速度计Acc坐标系磁强计Mag坐标系飞控板坐标系 在BBP飞控板采用的IMU为同时包含了陀螺(Gyro)及加速度计(Acc)的6轴传感器,故Gyro及Acc为同一坐标系。同时…

数据表中的索引详解

文章目录 一、索引概述二、普通索引三、唯一索引四、全文索引五、多列索引六、索引的设计原则七、隐藏和删除索引 一、索引概述 日常生活中,我们经常会在电话号码簿中查阅“某人”的电话号码,按姓查询或者按字母排序查询;在字典中查阅“某个…

大模型系列17-RAGFlow搭建本地知识库

大模型系列17-RAGFlow搭建本地知识库 安装ollama安装open-wehui安装并运行ragflowRAG(检索、增强、生成)RAG是什么RAG三过程RAG问答系统构建步骤向量库构建检索模块生成模块 RAG解决LLM的痛点 使用ragflow访问ragflow配置ollama模型添加Embedding模型添加…

R shiny app | 网页应用 空格分隔的文本文件在线转csv

shiny 能快速把R程序以web app的形式提供出来,方便使用,降低技术使用门槛。 本文提供的示例:把空格分隔的txt文件转为逗号分隔的csv文件。 前置依赖:需要有R环境(v4.2.0),安装shiny包(v1.9.1)。括号内是我使用的版本…

SocraticLM: Exploring Socratic Personalized Teaching with Large Language Models

题目 苏格拉底式教学:用大型语言模型探索苏格拉底式个性化教学 论文地址:https://openreview.net/pdf?idqkoZgJhxsA 项目地址:https://github.com/Ljyustc/SocraticLM 摘要 大型语言模型(LLM)被认为是推进智能教育的一项关键技术,因为它们展…

第一节:电路连接【51单片机+A4988+步进电机教程】

摘要:本节介绍如何搭建一个51单片机A4988步进电机控制电路,所用材料均为常见的模块,简单高效的方式搭建起硬件环境 一、硬件清单 ①51单片机最小控制模块 ②开关电源 ③A4988模块转接座 ④二相四线步进电机 ⑤电线若干 二、接线 三、A49…

Outlook2024版如何回到经典Outlook

Outlook2024版如何回到经典Outlook 如果新加入一家公司,拿到的电脑,大概率是最新版的Windows, 一切都是新的。 如果不coding, 使用国产的foxmail大概就可以解决一切问题了。可惜老程序员很多Coding都是基于传统Outlook的,科技公司所有人都是I…

网关如何识别和阻止网络攻击

网关在识别和阻止网络攻击方面扮演着关键角色,它通过多种技术和机制来确保网络的安全。以下是网关如何识别和阻止网络攻击的一些主要方法: 1.深度包检测(DPI) 网关可以对经过的数据包进行深度分析,检查数据包的头部、负…

操作系统复习(理论版)

目录 只会在选择填空出现类型 第一章:操作系统导论 操作系统介绍 不得不知道的概念 可能出现在答题的类型 第二章:进程调度 进程管理: 处理机调度: 进程同步: 死锁: 预防死锁: 避免死…

概述(讲讲python基本语法和第三方库)

我是北子,这是我自己写的python教程,主要是记录自己的学习成果方便自己日后复习, 我先学了C/C,所以这套教程中可能会将很多概念和C/C去对比,所以该教程大概不适合零基础的人。 it seems that python nowadays 只在人工…

Linux(Centos 7.6)命令详解:ls

1.命令作用 列出目录内容(list directory contents) 2.命令语法 Usage: ls [OPTION]... [FILE]... 3.参数详解 OPTION: -l,long list 使用长列表格式-a,all 不忽略.开头的条目(打印所有条目,包括.开头的隐藏条目&#xff09…

改善 Kibana 中的 ES|QL 编辑器体验

作者:来自 Elastic Marco Liberati 随着新的 ES|QL 语言正式发布,Kibana 中开发了一种新的编辑器体验,以帮助用户编写更快、更好的查询。实时验证、改进的自动完成和快速修复等功能将简化 ES|QL 体验。 我们将介绍改进 Kibana 中 ES|QL 编辑器…

基于Spring Boot的紧急物资管理系统

基于Spring Boot的紧急物资管理系统是一个非常实用的应用,特别是在应对自然灾害、公共卫生事件等情况下。该系统可以帮助管理者有效地追踪和分配物资,确保资源能够及时到达需要的地方。以下是一个基本的实现思路和一些关键组件: 项目规划 需…

机器学习基础-概率图模型

(一阶)马尔科夫模型的基本概念 状态、状态转换概率、初始概率 状态转移矩阵的基本概念 隐马尔可夫模型(HMM)的基本概念 条件随机场(CRF)的基本概念 实际应用中的马尔科夫性 自然语言处理: 在词…

Qt打包为exe文件

个人学习笔记 选择release 进入项目文件夹,查看releas生成的文件 releas文件路径 进入release看到exe文件,但是无法执行 将exe文件单独放到一个文件夹内 选择MinGW 用CD 进入存放exe文件的路径,输入下面指令 cd J:\C\Qt\test4-3-1 windeploy…

VScode怎么重启

原文链接:【vscode】vscode重新启动 键盘按下 Ctrl Shift p 打开命令行,如下图: 输入Reload Window,如下图:

Web安全 - “Referrer Policy“ Security 头值不安全

文章目录 概述原因分析风险说明Referrer-Policy 头配置选项1. 不安全的策略no-referrer-when-downgradeunsafe-url 2. 安全的策略no-referreroriginorigin-when-cross-originsame-originstrict-originstrict-origin-when-cross-origin 推荐配置Nginx 配置示例 在 Nginx 中配置 …

Hyperbolic dynamics

http://www.scholarpedia.org/article/Hyperbolic_dynamics#:~:textAmong%20smooth%20dynamical%20systems%2C%20hyperbolic%20dynamics%20is%20characterized,semilocal%20or%20even%20global%20information%20about%20the%20dynamics. 什么是双曲动力系统? A hy…

基于SpringBoot在线竞拍平台系统功能实现十五

一、前言介绍: 1.1 项目摘要 随着网络技术的飞速发展和电子商务的普及,竞拍系统作为一种新型的在线交易方式,已经逐渐深入到人们的日常生活中。传统的拍卖活动需要耗费大量的人力、物力和时间,从组织拍卖、宣传、报名、竞拍到成…