《Pyramid Vision Transformer》论文笔记

news/2024/9/19 22:16:58 标签: 论文阅读

原文笔记

What

为了解决VIT在视觉任务上的局限性并且探究Transformer模型在视觉任务上的应用,这项工作提出了一种纯 Transformer 主干,称为 Pyramid Vision Transformer (PVT),它可以作为 CNN 主干在许多下游任务中的替代方案,包括图像级预测和像素级密集预测。具体来说,如图 1 (c) 所示,我们的 PVT 通过 (1) 将细粒度图像块(即每个补丁 4×4 像素)作为输入来学习高分辨率表示来克服传统 Transformer 的困难,这对于密集预测任务至关重要; (2) 随着网络的加深,引入渐进式收缩金字塔来减少 Transformer 的序列长度,显着降低计算成本,以及 (3) 采用空间缩减注意力 (SRA) 层在学习高分辨率特征时进一步减少资源消耗。

我们的方法比 ViT 具有以下优点:1)更灵活——可以在不同的阶段生成不同尺度的/通道的特征图; 2)更通用——可以很容易地插入和播放在大多数下游任务模型中; 3)对计算/内存更友好——可以处理更高分辨率的特征图或更长的序列。

Why

  • 卷积神经网络 (CNN) 在计算机视觉领域取得了显着的成功,使其成为几乎所有任务的通用和主导方法 [54, 22, 73, 49, 21, 39, 9, 32]。然而,这项工作旨在探索 CNN 之外的替代骨干网络,可用于密集预测任务,例如除了图像分类[12]外,目标检测,语义[83]和实例分割[40]。(替代卷积)
  • 以往的基于Transformer的视觉研究也很少研究探索干净且无卷积的 Transformer 主干来解决计算机视觉中的密集预测任务。(探索)
  • VIT(1)其输出特征映射是单尺度和低分辨率的,(2)它的计算和内存成本相对较高,即使对于常见的输入图像大小(例如,COCO基准[40]中800像素的较短边)。所以直接使其适应像素级密集预测(如目标检测和分割)是具有挑战性的因此,很难直接将 ViT 应用于需要高分辨率或多尺度特征图的密集预测任务。(区别于传统VIT的解决方法)

Challenge

Idea

Model

原文翻译

Abstract

尽管卷积神经网络 (CNN) 在计算机视觉中取得了巨大成功,但这项工作研究了一种更简单、无卷积的骨干网络,可用于许多密集预测任务。与最近提出的专门为图像分类设计的Vision Transformer (ViT) 不同,我们引入了金字塔视觉转换器 (PVT),它克服了将 Transformer 移植到各种密集预测任务的困难。与现有技术相比,PVT有几个优点。(1) 与通常产生低分辨率输出并产生高计算和内存成本的 ViT 不同,PVT 不仅可以在图像的密集分区上进行训练以实现高输出分辨率,这对于密集预测很重要,而且还使用渐进式收缩金字塔来减少大特征图的计算。(2) PVT继承了CNN和Transformer的优点,使其成为一个不需要卷积的针对不用视觉任务的统一的骨干,它可以作为CNN网络的一个直接的替代。(3) 我们通过广泛的实验验证 PVT,表明它提高了许多下游任务的性能,包括对象检测、实例和语义分割。例如,在参数数量相当的情况下,PVT+RetinaNet 在 COCO 数据集上达到了 40.4 AP,比 ResNet50+RetinaNet (36.3 AP) 高出 4.1 个绝对 AP(见图 2)。我们希望PVT可以作为像素级预测的替代和有用的主干,并促进未来的研究。

1. Introduction

卷积神经网络 (CNN) 在计算机视觉领域取得了显着的成功,使其成为几乎所有任务的通用和主导方法 [54, 22, 73, 49, 21, 39, 9, 32]。然而,这项工作旨在探索 CNN 之外的替代骨干网络,可用于密集预测任务,例如除了图像分类[12]外,目标检测,语义[83]和实例分割[40]。

受 Transformer [64] 在自然语言处理领域成功的启发,许多研究人员已经探索了它在计算机视觉中的应用。例如,一些工作[6,85,72,56,24,42]将视觉任务建模为具有可学习查询的字典查找问题,并在CNN主干之上使用Transformer解码器作为特定于任务的头部。尽管据我们所知,一些现有技术还将注意力模块 [70, 48, 80] 合并到 CNN 中,但很少研究探索干净且无卷积的 Transformer 主干来解决计算机视觉中的密集预测任务。

最近,Dosovitskiy等人[13]引入了视觉转换器(ViT)进行图像分类。这是用无卷积模型替换 CNN 主干的一个有趣且有意义的尝试。如图1 (b)所示,ViT有一个柱状结构,粗糙的图像补丁作为输入虽然ViT适用于图像分类,但直接使其适应像素级密集预测(如目标检测和分割)是具有挑战性的,因为(1)其输出特征映射是单尺度和低分辨率的,(2)它的计算和内存成本相对较高,即使对于常见的输入图像大小(例如,COCO基准[40]中800像素的较短边)。

为了解决上述限制,这项工作提出了一种纯 Transformer 主干,称为 Pyramid Vision Transformer (PVT),它可以作为 CNN 主干在许多下游任务中的替代方案,包括图像级预测和像素级密集预测。具体来说,如图 1 (c) 所示,我们的 PVT 通过 (1) 将细粒度图像块(即每个补丁 4×4 像素)作为输入来学习高分辨率表示来克服传统 Transformer 的困难,这对于密集预测任务至关重要; (2) 随着网络的加深,引入渐进式收缩金字塔来减少 Transformer 的序列长度,显着降低计算成本,以及 (3) 采用空间缩减注意力 (SRA) 层在学习高分辨率特征时进一步减少资源消耗。

总体而言,所提出的PVT具有以下优点。首先,与传统的CNN主干(见图1 (a)))相比,我们的PVT总是产生一个全局接受域,更适合检测和分割。其次,与ViT相比(见图1 (b)),由于其先进的金字塔结构,我们的方法可以更容易地插入到许多具有代表性的密集预测管道中,如RetinaNet[39]和Mask R-CNN[21]。第三,我们可以通过将我们的PVT与其他特定于任务的Transformer解码器(如PVT+DETR[6])相结合来构建无卷积管道,用于目标检测。据我们所知,这是第一个完全无卷积的目标检测管道

我们的主要贡献如下:(1)我们提出了金字塔视觉转换器(PVT),这是第一个为各种像素级密集预测任务设计的纯 Transformer 主干。结合我们的PVT和DETR,我们可以构建一个端到端的目标检测系统,没有卷积和手工制作的组件,如密集锚点和非极大值抑制(NMS)。(2) 通过设计渐进式收缩金字塔和空间缩减注意力 (SRA),我们在将 Transformer 移植到密集预测时克服了许多困难。这些能够减少 Transformer 的资源消耗,使 PVT 可以灵活地学习多尺度和高分辨率特征。(3)我们在几个不同的任务上评估了所提出的PVT,包括图像分类、目标检测、实例和语义分割,并将其与流行的ResNets[22]和ResNeXts[73]进行了比较。如图 2 所示,与现有技术相比,我们具有不同参数尺度的 PVT 可以始终存档提高性能。例如,相比于在相当数量的参数下,使用RetinaNet[39]进行目标检测,PVT-Small在COCO val2017实现了40.4 AP,超过了ResNet504.1分(40.4vs36.3)除此之外PVT-large取得了42.6AP,必ResNeXt101-64x4d多1.6AP同时少使用了30%的参数量

2. Related Work

2.1. CNN Backbones

CNN 是深度神经网络在视觉识别中的工作马。在[34]中首次引入了标准CNN来区分手写数字。该模型包含具有特定感受野的卷积核,可以捕获有利的视觉上下文。为了提供平移相等方差,卷积核的权重在整个图像空间之间共享。最近,随着计算资源(例如 GPU)的快速发展,在大规模图像分类数据集(例如 ImageNet [51])上成功训练堆叠卷积块 [33, 54]。例如,GoogLeNet[59]证明了包含多个内核路径的卷积算子可以获得非常有竞争力的性能。在 Inception 系列 [60, 58]、ResNeXt [73]、DPN [10]、MixNet [65] 和 SKNet [36] 中进一步验证了多路径卷积块的有效性。此外,ResNet[22]在卷积块中引入了跳跃连接,使得创建/训练非常深的网络成为可能,并在计算机视觉领域取得了令人印象深刻的结果。DenseNet[25]引入了一种密集连接的拓扑,它将每个卷积块连接到所有先前的块。最近的进展可以在最近的调查/评论论文中找到 [31, 53]。与成熟的 CNN 不同,vision Transformer backbone仍处于开发的早期阶段。在这项工作中,我们试图通过设计一种新的适用于大多数视觉任务的通用 Transformer 主干来扩展 Vision Transformer 的范围。

2.2. Dense Prediction Tasks

Preliminary.密集预测任务旨在对特征图执行像素级分类或回归。目标检测和语义分割是两个具有代表性的密集预测任务。

目标检测。在深度学习时代,cnn[34]已经成为目标检测的主要框架,包括单级检测器(如SSD[43]、RetinaNet[39]、FCOS[62]、GFL[37,35]、PolarMask[71]和OneNet[55])和多级检测器(Faster R-CNN[49]、Mask R-CNN[21]、Cascade R-CNN[4]和Sparse R-CNN[57])。这些流行的对象检测器大多建立在高分辨率或多尺度特征图上,以获得良好的检测性能。最近,DETR [6] 和可变形 DETR [85] 结合 CNN 主干和 Transformer 解码器来构建端到端的对象检测器。同样,它们为了获得目标检测准确性也需要高分辨率或多尺度特征图。

语义分割。CNN 在语义分割中也起着重要作用。在早期阶段,FCN [44] 引入了全卷积架构来为任意大小的给定图像生成空间分割图。之后,Noh 等人介绍了反卷积操作。 [47],并在 PASCAL VOC 2012 数据集 [52] 上取得了令人印象深刻的性能。受FCN的启发,UNet[50]是专门为医学图像分割领域提出的,弥合了相同空间大小对应的低层特征图和高层特征图之间的信息流。为了探索更丰富的全局上下文表示,Zhao 等人。 [81] 在各种池化尺度上设计了一个金字塔池化模块,Kirillov 等人。 [32] 基于 FPN [38],开发了一种称为语义 FPN 的轻量级分割头。最后,DeepLab家族[8,41]应用扩展卷积来扩大接受域,同时保持特征图的分辨率。与目标检测方法类似,语义分割模型也依赖于高分辨率或多尺度特征图。

2.3. Self-Attention and Transformer in Vision

由于卷积滤波器权重通常在训练期间是固定的,因此它们无法动态适应不同的输入。已经提出了许多方法来缓解这个问题使用动态过滤器[30]或自我注意操作[64]。非本地块[70]试图在空间和时间上对远程依赖关系进行建模,这已被证明有利于准确的视频分类。然而,尽管它取得了成功,但非局部算子的计算成本很高和内存开销很高。Criss-cross [26] 通过交叉路径生成稀疏注意力图进一步降低了复杂性。Ramachandran等人[48]提出了独立的自我注意,用局部自注意单元替换卷积层。ANet [3] 在结合自注意力和卷积操作时取得了有竞争力的结果。LambdaNetworks [2] 使用 lambda 层,这是一种有效的自注意力来替换 CNN 中的卷积。DETR [6] 利用 Transformer 解码器将对象检测建模为具有可学习查询的端到端字典查找问题,成功地消除了对 NMS 等手工过程的需求。基于 DETR,可变形 DETR [85] 进一步采用可变形注意力层关注一组稀疏的上下文元素,获得更快的收敛和更好的性能。最近,Vision Transformer (ViT)[13]采用纯Transformer[64]模型进行图像分类,将图像视为一系列补丁。DeiT[63]使用一种新的蒸馏方法进一步扩展了ViT。与以前的模型不同,这项工作将金字塔结构引入 Transformer 以呈现纯 Transformer骨干网络以应对密集预测任务,而不是一个根据任务特定的头或一个图像分类模型。

3. Pyramid Vision Transformer(PVT)

3.1 Overall Architecture

我们的目标是将金字塔结构引入 Transformer 框架中,以便它可以为密集预测任务(例如对象检测和语义分割)生成多尺度特征图。PVT的概述如图3所示。与CNN主干[22]类似,我们的方法有四个阶段来生成不同尺度的特征图。所有阶段共享相似的架构,它由一个补丁嵌入层(Patch Embedding layer)和 Li个 Transformer 编码器层组成。

在第一步,输入的是一张大小为H*W*3的图片,我们将它划分为HW/4^2个patches每一个patch的尺寸是4*4*3,之后将flatten之后的向量输入线性投射层获得patch embedding,尺寸为HW/4^2*C1,之后嵌入的补丁和位置嵌入通过具有 L1 层的 Transformer 编码器传递,输出被重新整形为大小为 H4 ×W4 ×C1 的特征图 F1。同样,使用前一阶段的特征图作为输入,我们得到以下特征图:F2、F3 和 F4,其步幅相对于输入图像为 8、16 和 32 像素。使用特征金字塔{F1, F2, F3, F4},我们的方法可以很容易地应用于大多数下游任务,包括图像分类,目标检测,和语义分割。

3.2. Feature Pyramid for Transformer

与使用不同卷积步长获得多尺度特征图的CNN骨干网[54,22]不同,我们的PVT使用渐进收缩策略通过补丁嵌入层来控制特征映射的规模。

在这里,我们将第 i 阶段的补丁大小表示为 Pi。在阶段i的开始,我们首先将输入特征映射Fi−1∈R^Hi−1×Wi−1×Ci−1平均划分为Hi−1Wi−1/Pi^2patches,然后将每个补丁压平并投影到Ci维嵌入中。在线性投影之后,嵌入补丁的形状可以看作是Hi−1/Pi × Wi−1/Pi × Ci,其中高度和宽度比输入小Pi倍。

这样,我们可以在每个阶段灵活调整特征图的规模,从而使为 Transformer 构建一个特征金字塔成为可能。

3.3 Transformer Encoder

第 i 阶段的 Transformer 编码器有 Li 个编码器层,每个编码器层由注意力层和前馈层组成 [64]。由于PVT需要处理高分辨率(如4步)特征图,我们提出了一种空间缩减注意(SRA)层来代替编码器中传统的多头注意(MHA)层[64]。

与 MHA 类似,我们的 SRA 接收查询 Q、键 K 和值 V 作为输入,并输出细化的特征。不同的是,我们的SRA降低了K和V的空间尺度再进行注意力操作这大大减少了计算/内存开销。SRA 在阶段 i 的详细信息可以表示如下:

3.4. Model Details

总之,我们方法的超参数如下:

• Pi:阶段 i 的补丁大小;

• Ci:阶段i输出的通道数;

• Li:阶段i中的编码器层数;

• Ri:阶段i中SRA的缩减率;

• Ni:阶段i中SRA的头部数;

• Ei:阶段i中前馈层[64]的扩展比;

遵循 ResNet [22] 的设计规则,我们 (1) 在浅层使用小输出通道号; (2) 在中间阶段集中主要计算资源。为了为讨论提供实例,我们在表 1 中描述了一系列不同尺度的 PVT 模型,即 PVT-Tiny、-Small、-Medium 和 -Large,其参数编号分别与 ResNet18、50、101 和 152 相当。第 4 节介绍了在特定下游任务中使用这些模型的更多详细信息。

3.5. Discussion

我们模型最相关的工作是 ViT [13]。在这里,我们讨论了它们之间的关系和差异。首先,PVT 和 ViT 都是纯 Transformer 模型,没有卷积。它们之间的主要区别是金字塔结构。与传统的Transformer[64]类似,ViT输出序列的长度与输入相同,这意味着ViT的输出是单尺度的(见图1 (b))。此外,由于资源有限,ViT 的输入是粗粒度的(例如,补丁大小为 16 或 32 像素),因此其输出分辨率相对较低(例如 16 步幅或 32 步幅)。因此,很难直接将 ViT 应用于需要高分辨率或多尺度特征图的密集预测任务。我们的PVT通过引入渐进式收缩金字塔打破了Transformer的例行。它可以像传统的CNN主干那样生成多尺度特征图。此外,我们还设计了一个简单但有效的注意力层——SRA,用于处理高分辨率特征图并降低计算/内存成本。得益于上述设计,我们的方法比 ViT 具有以下优点:1)更灵活——可以在不同的阶段生成不同尺度的/通道的特征图; 2)更通用——可以很容易地插入和播放在大多数下游任务模型中; 3)对计算/内存更友好——可以处理更高分辨率的特征图或更长的序列。

4. Application to Downstream Tasks

4.1. Image-Level Prediction

图像分类是图像级预测最经典的任务。为了提供讨论的实例,我们设计了一系列不同尺度的PVT模型,分别是PVT-Tiny、-Small、-Medium和-Large,其参数数分别类似于ResNet18、50、101和152PVT系列的详细超参数设置在补充材料中(SM)中提供。

PVT系列的详细超参数设置在补充材料中(SM)中提供。

对于图像分类,我们遵循 ViT [13] 和 DeiT [63] 将可学习的分类标记附加到最后阶段的输入,然后使用全连接 (FC) 层在令牌之上进行分类。

4.2. Pixel-Level Dense Prediction

除了图像级预测之外,还需要对特征图执行像素级分类或回归的密集预测也经常出现在下游任务中。在这里,我们讨论了两个典型的任务,即对象检测和语义分割。

我们将PVT模型应用于三种具有代表性的密集预测方法,即RetinaNet[39]、Mask RCNN[21]和语义FPN[32]。RetinaNet 是一种广泛使用的单级检测器,Mask R-CNN 是最流行的两阶段实例分割框架,Semantic FPN 是一种没有特殊操作(例如扩张卷积)的普通语义分割方法。使用这些方法作为基线使我们能够充分检查不同主干的有效性。

实现细节如下:(1)与ResNet一样,我们使用在ImageNet上预训练的权值初始化PVT主干;(2)我们使用输出特征金字塔{F1, F2, F3, F4}作为FPN[38]的输入,然后将细化的特征映射输入到后续的检测/分割头;(3)在训练检测/分割模型时,PVT中没有一层被冻结;(4)由于检测/分割的输入可以是一个任意形状,在 ImageNet 上预训练的位置嵌入可能不再有意义。因此,我们根据输入分辨率对预训练的位置嵌入进行双线性插值。

5. Experiments


http://www.niftyadmin.cn/n/5666215.html

相关文章

redis集群创建问题处理

一.TCP 积压设置问题和处理内存超配警告 3432:C 17 Sep 2024 16:50:39.537 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 3432:C 17 Sep 2024 16:50:39.537 # Redis version7.0.11, bits64, commit00000000, modified0, pid3432, just started 3432:C 17 Sep 2024 16:50:…

【论文阅读】Benchmarking Retrieval-Augmented Generation for Medicine

论文:https://arxiv.org/abs/2402.13178 代码: GitHub - Teddy-XiongGZ/MIRAGE: Official repository of the MIRAGE benchmark GitHub - Teddy-XiongGZ/MedRAG: Code for the MedRAG toolkit 研究背景: 系统地评估医用rag QA系统&#xff0…

Mac使用技巧-来自苹果专人在线辅导服务

好记性不如烂笔头 跟着技术人员从头到尾操作了一遍,发现应该跟人家学习的时候,是很容易接受并接收知识点的,但发现还是要做一下笔记,好记性不如烂笔头。 用来用去,感觉Mac更适合不搭配鼠标使用,因为鼠标的滑…

整整3W字笔记,Redis最核心的秒杀业务、分布式锁、消息队列相关原理一篇文章就搞定(黑马点评项目)

目录 四、 优惠卷秒杀系列功能实现 4.1 全局ID生成器 4.1.1 全局ID生成器的选型 4.1.2 全局ID生成器的实现 4.1.3 全局ID生成器的测试 4.1.4 其他ID生成器的拓展 4.2 利用PostMan模拟管理员后台添加秒杀优惠卷信息 【代码实现】 【PostMan测试】 4.3 优惠卷秒杀下单功能…

算法——贡献法

前天的AtCoder Beginner Contest 371 D题碰到了这个贡献法,刚好之前的第十一届蓝桥杯省赛第二场真题AcWing 2868. 子串分值也是用的这个方法hh,但是赛时没有搞出来。。。 AcWing 2868. 子串分值 对于一个字符串 SS,我们定义 SS 的分值 f(S)f(S) 为 SS 中…

Linux服务器上下左右键乱码^[[D ^[[C ^[[A ^[[B

查看shell环境: echo $SHELL如果出现 bin/sh, 那么输入: bash学术会议征稿 想要了解国内主办的覆盖学科最全最广的学术会议,请前往【会议官网】: 学术会议官网www.ais.cn

01_快速入门

读取数据 import pandas as pd# df pd.read_excel(https://xxxx/xxx//xx.xslx) # 读取网络数据 # df pd.read_excel(rd:\data\xx.xslx) # 读取本地文件 # 如果是csv文件,用read_csv()函数 df pd.read_csv(seaborn/iris.csv)查看数据 df.head() # 前5条记录 d…

MiniDB 使用手册

MiniDB 使用手册 核心功能指南表的创建与管理数据操作事务管理 本使用文档旨在帮助用户快速上手使用本数据库系统。 进行数据库操作之间必须输入init命令进行初始化 核心功能指南 表的创建与管理 CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR …