【第29篇】MPViT:用于密集预测的多路径视觉转换器,面试题目有哪些

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

如果不能下载,请在使用gitee上的链接:

https://gitee.com/wanghao1090220084/MPViT

1、简介

===============================================================

自推出以来,Transformer [53] 对自然语言处理 (NLP) [4, 14,43] 产生了巨大影响。 同样,Vision Transformer (ViT) [16] 的出现推动了计算机视觉社区的发展。 因此,基于 Transformer 的视觉工作最近出现了爆炸式增长,涵盖静态图像分类 [17、37、50、51、57、58、65、67]、对象检测 [5、12、74]、 和语义分割 [54, 63] 到时间任务,例如视频分类 [1, 3, 18] 和对象跟踪 [7,41,56]。

image-20220204111926065

对于密集预测任务(例如对象检测和分割)来说,在多个尺度上表示特征以区分不同大小的对象或区域是至关重要的。 在密集预测方面表现出更好性能的现代 CNN 主干利用卷积核级别 [19、32、33、46、47] 或特征级别 [34、42、55] 的多个尺度。 Inception Network [46] 或 VoVNet [32] 在相同的特征级别上利用多粒度卷积核,产生不同的感受野,进而提高检测性能。 HRNet [55] 通过同时聚合整个卷积层的精细和粗糙特征来表示多尺度特征。

尽管 CNN 模型被广泛用作密集预测的特征提取器,但当前最先进的 (SOTA) 视觉转换器 [17,37,57,58,60,65,67,71] 已经超越了 CNN 的性能。虽然 ViTvariants [17, 37, 58, 60, 67, 71] 专注于如何解决自我注意的二次复杂性,当应用于高分辨率的密集预测时,他们不太关注构建有效的多尺度表示.例如,按照传统的 CNN [23, 44],最近的 Vision Transformer 主干 [37, 58, 67, 71] 构建了一个简单的多阶段结构(例如,从精细到粗糙的结构)和单尺度补丁(即,令牌)。 CoaT [65] 通过使用允许并行跨层注意的共同尺度机制同时表示精细和粗糙特征,从而提高检测性能。然而,协同尺度机制需要大量的计算和内存开销,因为它增加了对基础模型(例如 CoaT-Lite)的额外跨层关注。因此,ViT 架构的多尺度特征表示仍有改进空间。

image-20220204111855525

在这项工作中,我们专注于如何使用 Vision Transformers 有效地表示多尺度特征以进行密集预测任务。受 CNN 模型利用用于多个感受野的多粒度卷积核 [19、32、46] 的启发,我们提出了一种用于 Transformer 的多尺度补丁嵌入和多路径结构方案,称为多路径视觉转换器 (MPViT)。如图1所示,多尺度patch embedding通过重叠卷积操作同时对不同大小的视觉patch进行token化,在适当调整padding/stride后产生具有相同序列长度(即特征分辨率)的特征卷积。然后,来自不同尺度的令牌被独立地并行输入到 Transformer 编码器中。每个具有不同大小补丁的 Transformer 编码器都执行全局自注意力。然后聚合生成的特征,在同一特征级别启用精细和粗略的特征表示。在特征聚合步骤中,我们引入了全局到局部特征交互(GLI)过程,该过程将卷积局部特征连接到转换器的全局特征,同时利用卷积的局部连通性和转换器的全局上下文。

按照 DeiT [50] 中的标准训练方法,我们在 ImageNet-1K [13] 上训练 MPViT,与最近的 SOTA Vision Transformers [17, 37, 60, 65, 67] 相比,它始终获得卓越的性能。此外,我们验证 MPViT 作为 COCO 数据集上的对象检测和实例分割以及 ADE20K 数据集上的语义分割的主干,实现了最先进的性能。特别是,MPViT-Small(22M 和 4GFLOPs)超过了最近更大的 SOTA Focal-Base [67](89M 和 16GFLOPs),如图 2 所示。总而言之,我们的主要贡献如下:

• 我们提出了一种具有多路径结构的多尺度嵌入,用于同时表示密集预测任务的精细和粗糙特征。

• 我们引入全局到局部特征交互(GLI)以利用卷积的局部连通性和转换器的全局上下文。

• 我们提供消融研究和定性分析,分析不同路径尺寸和补丁规模的影响,发现高效和有效的配置。

• 我们验证了 MPViT 作为密集预测任务主干的有效性,在 ImageNet 分类、COCO 检测和 ADE20K 分割方面实现了最先进的性能。

2、相关工作


**用于密集预测的视觉转换器。**当前的 SOTA Vision Transformers [17, 37, 58, 65, 67, 71] 在应用于高分辨率密集预测时,专注于降低自注意力的二次复杂度。 [37,67,71] 用局部区域的细粒度补丁限制注意力范围,并将其与滑动窗口或稀疏全局注意力相结合。 [58, 60] 通过空间缩减(即池化)减少序列长度来利用粗粒度的全局自我注意。 [17, 65] 通过跨特征通道而不是令牌操作自我注意来实现线性复杂性。虽然 [37, 58, 67, 71] 具有简单的金字塔结构(从细到粗),但 XCiT [17] 具有单级结构,如 ViT [16]。当应用于密集预测任务时,XCiT 添加下采样/上采样层以在 ImageNet 上进行预训练后提取多尺度特征。 Xu 等人[65] 在 CoaT-Lite 之上介绍了具有简单金字塔结构的 CoaT-Lite 和具有跨层注意力的 CoaT。跨层注意力允许 CoaT 优于 CoaT-Lite,但需要大量内存和计算开销,这限制了模型的扩展。

与并行工作的比较。 CrossViT [6] 还在单级结构中使用不同的补丁大小(例如,小和大)和双路径,如 ViT [16] 和 XCiT [17]。 但是,CrossViT 的分支之间的交互仅通过 [CLS] 令牌发生,而 MPViT

允许不同尺度的所有补丁进行交互。 此外,与 CrossViT(仅分类)不同,MPViT 更普遍地探索更大的路径维度(例如,超过两个),并采用多阶段结构进行密集预测。

3、Multi-Path Vision Transformer

==========================================================================================

3.1、架构


image-20220204111817834

图 3 显示了多路径视觉转换器 (MPViT) 架构。由于我们的目标是探索用于密集预测的强大主干网络,因此我们构建了一个多阶段架构 [37, 58, 67],而不是 ViT [16] 和 XCiT [17] 等单阶段(即单片)架构]。具体来说,我们构建了一个四阶段的特征层次结构,用于生成不同尺度的特征图。由于多级架构具有更高分辨率的特征,它本质上需要更多的计算。因此,由于其线性复杂性,我们对整个模型使用包含因子分解自注意力的 Transformer 编码器,如 CoaT [65] 中所做的那样。在 LeViT [20] 中,卷积茎块显示出比非重叠补丁嵌入更好的低级表示(即,不会丢失显着信息)。受 LeViT 的启发,给定尺寸为 H × W × 3 的输入图像,我们还采用了一个由两个 3 × 3 卷积层组成的茎块,通道为 C 2 / 2 C_{2}/2 C2​/2; C 2 C_{2} C2​和 2 的步幅,生成大小为 $H/4 × W/4 × C_{2} $的特征,其中 C 2 C_{2} C2​是阶段 2 的通道大小。每个卷积之后是 Batch Normalization [29] 和 Hardswish [25] 激活函数.从第 2 阶段到第 5 阶段,我们在每个阶段堆叠提出的多尺度补丁嵌入 (MS-PatchEmbed) 和多路径转换器 (MP-Transformer) 块。许多作品 [8, 16, 20, 58] 已经证明用最终特征图的全局平均池化 (GAP) 替换 [CLS] 令牌不会影响性能,因此我们也移除 [CLS] 令牌并使用 GAP为简单起见。

3.2、多尺度补丁嵌入


我们设计了一个多尺度补丁嵌入 (MSPatchEmbed) 层,该层利用相同特征级别的细粒度和粗粒度视觉标记。 为此,我们使用具有重叠补丁的卷积操作,类似于 CNN [23、44] 和 CvT [60]。 具体来说,给定来自前一阶段 X i ∈ R H i − 1 × W i − 1 × C i − 1 \mathrm{X}_{i} \in \mathbb{R}^{H_{i-1} \times W_{i-1} \times C_{i-1}} Xi​∈RHi−1​×Wi−1​×Ci−1​的 2D 重构输出特征图(即令牌图)作为阶段 i 的输入,我们学习了一个函数 F k × k ( ⋅ ) F_{k \times k}(\cdot) Fk×k​(⋅)将 Xi 映射为具有通道大小 C i C_{i} Ci​ 的新标记 F k × k ( X i ) F_{k \times k}(X_{i}) Fk×k​(Xi​),其中 F(·) 是内核大小(即补丁大小)k × k、步幅 s 和填充 p 的 2D 卷积操作。 输出的 2D 令牌映射 F k × k ( X i ) ∈ R H i × W i × C i F_{k \times k}\left(\mathrm{X}_{i}\right) \in \mathbb{R}^{H_{i} \times W_{i} \times C_{i}} Fk×k​(Xi​)∈RHi​×Wi​×Ci​的高度和宽度如下:

H i = ⌊ H i − 1 − k + 2 p s + 1 ⌋ , W i = ⌊ W i − 1 − k + 2 p s + 1 ⌋ (1) H_{i}=\left\lfloor\frac{H_{i-1}-k+2 p}{s}+1\right\rfloor, W_{i}=\left\lfloor\frac{W_{i-1}-k+2 p}{s}+1\right\rfloor \tag{1} Hi​=⌊sHi−1​−k+2p​+1⌋,Wi​=⌊sWi−1​−k+2p​+1⌋(1)

卷积补丁嵌入层使我们能够通过改变步幅和填充来调整标记的序列长度。 即,可以输出具有不同补丁大小的相同大小(即分辨率)的特征。 因此,我们并行形成了几个具有不同内核大小的卷积补丁嵌入层。 例如,如图 1 所示,我们可以生成具有 3 × 3,5 × 5, 7 × 7 块大小的相同序列长度的各种大小的视觉标记。

由于堆叠具有相同通道和滤波器大小的连续卷积操作会扩大感受野(例如,两个 3×3 相当于 5×5)并且需要更少的参数(例如, 2 × 3 2 < 5 2 2 \times 3^{2} <5^{2} 2×32<52),因此我们选择连续 3×3 卷积层在实践中。对于三路径结构,我们使用三个连续的 3 × 3 卷积,具有相同的通道大小 C ′ C^{\prime} C′,填充为 1,步长为 s,其中当降低空间分辨率时 s 为 2,否则为 1。因此,给定特征 X i ∈ R H i × W i × C i \mathrm{X}_{i} \in \mathbb{R}^{H_{i} \times W_{i} \times C_{i}} Xi​∈RHi​×Wi​×Ci​在第 i 阶段,我们可以得到 F3×3(Xi)、F5×5(Xi)、F7×7(Xi) 特征,其大小与 H i s × C i s × C ′ \frac{H_{i}}{s} \times \frac{C_{i}}{s} \times C^{\prime} sHi​​×sCi​​×C′ 相同。由于 MPViT 由于多路径结构而具有更多的嵌入层,我们通过采用 3 × 3 深度可分离卷积 [9,26] 来减少模型参数和计算开销,该卷积由 3 × 3 深度卷积和 1 × 1 点卷积组成嵌入层。所有卷积层之后都是批量标准化 [29] 和 Hardswish [25] 激活函数。最后,不同大小的令牌嵌入特征分别输入到每个转换器编码器中。

3.3、全局到局部特征交互


尽管 Transformers 中的自注意力可以捕获远程依赖关系(即全局上下文),但它可能会忽略每个补丁内的结构信息 [30] 和局部关系 [39]。此外,变形金刚受益于形状偏差 [52],使他们能够专注于图像的重要部分。相反,CNN 可以利用平移不变性的局部连通性 [31, 52]——图像中的每个补丁都由相同的权重处理。这种归纳偏差促使 CNN 在对视觉对象进行分类时更加依赖纹理而不是形状 [2]。因此,MPViT 以互补的方式将 CNN 的局部连接性与全局上下文转换器结合起来。为此,我们引入了一个全局到局部特征交互模块,该模块学习局部特征和全局特征之间的交互以丰富表示。具体来说,为了表示阶段 i 的局部特征 L i ∈ R H i × W i × C i L_{i} \in \mathbb{R}^{H_{i} \times W_{i} \times C_{i}} Li​∈RHi​×Wi​×Ci​,我们采用深度残差瓶颈块,由 1×1 卷积、3×3 深度卷积和 1×1 卷积组成,通道大小与 Ci 相同和剩余连接[23]。使用来自每个transformer G i , j ∈ R H i × W i × C i G_{i, j} \in \mathbb{R}^{H_{i} \times W_{i} \times C_{i}} Gi,j​∈RHi​×Wi​×Ci​的 2D 重构全局特征。局部和全局特征的聚合是通过连接来执行的,

A i = concat ⁡ ( [ L i , G i , 0 , G i , 1 , … , G i , j ] ) (2) A_{i}=\operatorname{concat}\left(\left[L_{i}, G_{i, 0}, G_{i, 1}, \ldots, G_{i, j}\right]\right) \tag{2} Ai​=concat([Li​,Gi,0​,Gi,1​,…,Gi,j​])(2)

X i + 1 = H ( A i ) (3) X_{i+1}=H\left(A_{i}\right) \tag{3} Xi+1​=H(Ai​)(3)

其中j是路径的索引, A i ∈ R H i × W i × ( j + 1 ) C i A_{i} \in \mathbb{R}^{H_{i} \times W_{i} \times(j+1) C_{i}} Ai​∈RHi​×Wi​×(j+1)Ci​是聚合特征,H(·)是学习与特征交互的函数,产生最终特征 X i + 1 ∈ R H i × W i × C i + 1 X_{i+1} \in \mathbb{R}^{H_{i} \times W_{i} \times C_{i+1}} Xi+1​∈RHi​×Wi​×Ci+1​ 具有下一阶段通道维度 C i + 1 C_{i+1} Ci+1​ 的大小。 我们对 H(·) 使用具有 C i + 1 C_{i+1} Ci+1​ 通道的 1 × 1 卷积。 最终特征 X i + 1 X_{i+1} Xi+1​用作下一阶段的多尺度补丁嵌入层的输入。

3.4、模型配置

===================================================================

为了减轻多路径结构的计算负担,我们使用 CoaT [65] 中提出的高效分解自注意力:

FactorAtt  ( Q , K , V ) = Q C ( softmax ⁡ ( K ) ⊤ V ) , (4) \text { FactorAtt }(Q, K, V)=\frac{Q}{\sqrt{C}}\left(\operatorname{softmax}(K)^{\top} V\right), \tag{4}  FactorAtt (Q,K,V)=C ​Q​(softmax(K)⊤V),(4)

Q , K , V ∈ R N × C Q, K, V \in \mathbb{R}^{N \times C} Q,K,V∈RN×C是线性投影的查询、键、值和N,C 分别表示令牌的数量和嵌入维度。为了保持可比较的参数和 FLOP,增加路径的数量需要减少通道 C 或层数 L(即变压器编码器的数量)。具有 N 个令牌和 h 个转换器编码器头的 L 个因式分解自注意力层 [65] 的总时间复杂度为 O ( L h N C 2 ) \mathcal{O}\left(L h N C^{2}\right) O(LhNC2),内存复杂度为 O ( L h C 2 + L h N C ) \mathcal{O}\left(LhC^{2}+L h N C\right) O(LhC2+LhNC)。复杂性是二次w.r.t。到通道 C,而线性 w.r.t.层数 L。因此,我们通过减少 C 而不是 L,将路径数量从单路径(即 CoaT-Lite [65] 基线)扩展到三路径。我们验证减少 C 可以获得更好的性能在消融研究中减少 L(见表 5)。由于更高的特征分辨率,第 2 阶段的计算成本相对较高,我们还在第 2 阶段将三路径模型的路径数设置为 2。因此,从第 3 阶段开始,三路径模型有 3 条路径。

有趣的是,我们还发现,虽然三路径和双路径在 ImageNet 分类中产生相似的准确度,但三路径模型在密集预测任务中表现出更好的性能。 这表明扩展路径维度的不同特征对于密集预测任务很有用。 因此,我们基于三路径结构构建 MPViT 模型。 我们将 MPViT 模型从对应于 CoaT-Lite Tiny (5M) [65] 或 DeiT-Tiny(5.7M) [50] 的小规模 MPViT-Tiny (5M) 扩展到大规模 MPViT-Base (74M) 对应于 SwinBase (88M) [37]。 所有 MPViT 型号均使用 8 个变压器编码器头,Tiny 和其他型号的 MLP 扩展比分别设置为 2 和 4。 MPViT 的详细信息如表 1 所示。

image-20220204115225058

4、实验

===============================================================

在本节中,我们评估 MPViT 作为视觉骨干在图像分类 (ImageNet-1K [13])、密集预测(如对象检测和实例分割 (COCO [36]) 和语义分割 (ADE20K [ 73])。

4.1、 ImageNet 分类


设置。 我们对 ImageNet-1K [13] 数据集进行分类。 为了与最近的作品进行公平比较,我们遵循 DeiT [50] 中的训练配方,其他基线 Transformer [37、57、58、65、67] 也是如此。 我们使用 AdamW [38] 优化器训练了 300 个 epoch,批量大小为 1024,权重衰减为 0.05,五个预热 epoch,初始学习率为 0.001,由余弦衰减学习率调度程序进行缩放。 我们将每张图像裁剪为 224 × 224,并使用与 [50, 65] 中相同的数据增强。 随机深度下降 [27] 仅用于小模型和基本模型,我们将速率分别设置为 0.05 和 0.3。 更多细节在附录中描述。

结果。 表 2 根据模型大小总结了性能比较。 为了公平比较,我们仅使用 224 × 224 输入分辨率和不使用蒸馏 [50] 或更大的 384 × 384 分辨率比较模型。MPViT 模型始终优于具有相似参数计数和计算复杂度的 SOTA Vision Transformer 架构。 MPViT-XS 和 Small 都比单路径基线 CoaT-Lite Mini 和 Small 分别提高了 2.0% 和 1.1%。 MPViTSmall 的性能也优于 CoaT Small,同时 GFLOP 减少了约 3 倍。 此外,MPViT-Small 的性能优于较大的型号,例如 PVT-L、DeiT-B/16 和 XCiTM24/16。 MPViT-Base (74M) 达到 84.3%,超过了最近使用更多参数的 SOTA 模型,例如 Swin-Base (88M) 和 Focal-Base (89M)。 有趣的是,MPViT-Base 优于 XCiT-M24/16,后者使用更复杂的训练配方 [17, 51] 使用更多的 epoch (400)、LayerScale 和不同的裁剪比例进行训练。

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-k4P1OwlD-1713437686978)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值