深圳哪家公司做网站好,wordpress淘宝客手机,网站备案 怎么加,网址大全快捷怎么来的大家好#xff0c;这里是好评笔记#xff0c;公主号#xff1a;Goodnote#xff0c;专栏文章私信限时Free。本文详细介绍U-ViT的模型架构和实验细节#xff0c;虽然没有后续的DiT在AIGC领域火爆#xff0c;但为后来的研究奠定了基础#xff0c;但其开创性的探索值得学习… 大家好这里是好评笔记公主号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是基于ViTVision 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数据集上进行了消融实验通过消融实验作者确定了以下最佳实现细节
长跳跃连接采用 连接后线性投影 的方式。时间信息通过 Token 注入更优。额外卷积块在 线性投影后 添加效果最佳。Patch Embedding 使用 线性投影 更好。位置编码使用 一维可学习嵌入(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 hmhs方法3线性投影 h s h_s hs 后相加 h m Linear ( h s ) h_m \text{Linear}(h_s) hmLinear(hs)方法4相加后进行线性投影 Linear ( h m h s ) \text{Linear}(h_m h_s) Linear(hmhs)方法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)ys⋅LayerNorm(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不使用任何位置编码。 结果
方法11D可学习位置嵌入 性能最佳。方法3无位置编码 无法生成有意义的图像表明位置编码对图像生成至关重要。
深度、宽度、patch大小的影响
论文中还探讨了深度层数、宽度隐藏层尺寸和patch size对模型性能的影响。效果如下图所示 深度 (Depth): 随着模型深度的增加性能得到了提高例如depth9, 13证实了 scale 特性。然而在50K训练迭代后增加到更大的深度depth17并未带来额外的性能提升。 宽度 (Width): 增加隐藏层的宽度例如width256, 512有助于性能的提升。然而进一步增加到width768并没有带来性能增益。 Patch Size: 减小patch size可以提高性能例如patch-size8, 2但是减小到patch-size1时不再有任何性能提升。作者认为为了获得良好的性能较小的patch size如patch-size2是必要的。推测原因是扩散模型的噪声预测任务需要低级别的细节而这与高级任务如分类不同。 低维潜在表示: 小的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 在图像扩散模型中的作用和 ResNetResidual Networks 的作用有相似之处。下面是长跳跃连接在图像扩散模型中的作用的详细介绍
1. 信息传递
直接连接浅层和深层细节保留通过长跳跃连接long skip connections浅层提取的低级特征如边缘、纹理等可以直接传递给深层网络。 使深层网络可以获得来自浅层的更丰富的信息。这种信息传递可以帮助深层网络更好地理解和捕捉图像中的细节和特征从而提高图像扩散模型的性能。
2. 特征整合
融合多层次信息增强上下文理解通过跳跃连接将浅层特征与深层特征融合如通过加法、拼接等操作形成丰富的多尺度特征表示。可以获得更丰富、更全局的特征表示。这种特征整合可以帮助模型更好地理解图像的上下文和语义信息提高生成图像的质量和准确性。
3. 梯度传播
缓解梯度消失和梯度爆炸增强训练稳定性长跳跃连接通过直接连接浅层和深层使得梯度能够从深层更有效地反向传播到浅层避免梯度在传播过程中的逐渐衰减或增大。梯度的顺畅传播有助于网络各层参数的学习更加稳定从而提高训练的收敛速度和效果。
4. 其他作用
支持高分辨率生成在高分辨率图像生成中长跳跃连接能够帮助模型更好地传递细粒度特征信息避免因过多的下采样导致的分辨率损失。减少依赖下采样和上采样操作相比传统的卷积U-Net中大量依赖下采样和上采样长跳跃连接可以减少对这些操作的依赖从而降低结构复杂度。
历史文章
机器学习
机器学习笔记合集
深度学习
深度学习笔记合集
多模态论文
深度学习笔记——ViT、ViLT 深度学习笔记——DiTDiffusion Transformer 深度学习笔记——CLIP、BLIP 多模态论文笔记——BLIP2 深度学习笔记——VQ-VAE和VQ-VAE-2 多模态论文笔记——dVAEDALL·E的核心部件 多模态论文笔记——LLaVA 多模态论文笔记——Coca 多模态论文笔记——CogVLM和CogVLM2