二十六章:Pyramid Vision Transformer ——金字塔视觉Transformer:一种无卷积的用于密集预测的多功能主干网络

news2024/11/26 12:38:09

0.摘要

        虽然卷积神经网络(CNN)在计算机视觉领域取得了巨大成功,但本研究探讨了一种更简单、无卷积的骨干网络,适用于许多密集预测任务。与最近提出的专门用于图像分类的Vision Transformer(ViT)不同,我们引入了金字塔视觉Transformer(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:不同架构的比较,其中“Conv”和“TF-E”分别代表“卷积”和“Transformer编码器”。

(a)许多CNN主干网络在目标检测(DET)、实例分割和语义分割(SEG)等密集预测任务中使用金字塔结构。

(b)最近提出的Vision Transformer(ViT)[12]是一种专为图像分类(CLS)而设计的“柱状”结构。 (c)通过将CNN的金字塔结构结合起来,我们提出了金字塔视觉Transformer(PVT),它可以用作许多计算机视觉任务的多功能主干网络,扩大了ViT的范围和影响。

此外,我们的实验还表明,PVT可以轻松与DETR [5]相结合,构建一个无需卷积的端到端目标检测系统。

1.引言

        卷积神经网络(CNN)在计算机视觉领域取得了显著的成功,使其成为几乎所有任务的通用和主导方法[53,21,72,48,20,38,8,31]。然而,本研究旨在探索一种超越CNN的替代骨干网络,用于密集预测任务,如物体检测[39,13]、语义分割[81]和实例分割[39],除了图像分类[11]之外。

        受到Transformer在自然语言处理中的成功启发,许多研究人员开始探索其在计算机视觉中的应用。例如,一些工作将视觉任务建模为具有可学习查询的字典查找问题,并在CNN骨干网络之上使用Transformer解码器作为任务特定的头部[5,82,71,55,23,41]。虽然一些先前的研究也将注意力模块[69,47,78]融入到CNN中,但据我们所知,在计算机视觉中探索一个干净且无卷积的Transformer骨干网络来解决密集预测任务的研究非常有限。

        最近,Dosovitskiy等人[12]提出了用于图像分类的Vision Transformer(ViT)。这是一种有趣且有意义的尝试,以无卷积模型取代CNN的骨干网络。如图1(b)所示,ViT具有柱状结构,以粗糙的图像块作为输入。虽然ViT适用于图像分类,但直接将其适应于像素级密集预测,如物体检测和分割,是具有挑战性的,因为

        (1)其输出特征图是单尺度和低分辨率的,

        (2)即使对于常见的输入图像尺寸(例如COCO基准测试中800像素的短边),其计算和内存成本也相对较高。

        为了解决上述限制,本研究提出了一种纯Transformer骨干网络,称为金字塔视觉Transformer(PVT),可以在许多下游任务中替代CNN骨干网络,包括图像级预测和像素级密集预测。具体而言,如图1(c)所示,我们的PVT通过以下方式克服了传统Transformer的困难:

        (1)采用细粒度的图像块(即每个块4×4像素)作为输入,学习高分辨率的表示,这对于密集预测任务至关重要;

        (2)引入渐进缩小的金字塔结构,随着网络的加深,减少Transformer的序列长度,显著降低计算成本;

        (3)采用空间缩减注意力(SRA)层,在学习高分辨率特征时进一步减少资源消耗。

        总体而言,提出的PVT具有以下优点。

        首先,与传统的CNN骨干网络(参见图1(a))相比,其具有随着网络深度增加而增大的局部感受野,我们的PVT始终产生全局感受野,更适用于检测和分割任务。

        其次,与ViT(参见图1(b))相比,由于其先进的金字塔结构,我们的方法可以更容易地嵌入到许多代表性的密集预测流程中,例如RetinaNet [38]和Mask R-CNN [20]

        第三,我们可以通过将PVT与其他任务特定的Transformer解码器(例如PVT+DETR [5]用于目标检测)结合,构建一个无卷积的流程。据我们所知,这是第一个完全无卷积的目标检测流程。

        我们的主要贡献如下:

        (1) 我们提出了金字塔视觉Transformer(PVT),这是第一个专为各种像素级密集预测任务设计的纯Transformer骨干网络。通过结合PVT和DETR,我们可以构建一个端到端的目标检测系统,无需卷积和手工设计的组件,如密集锚点和非极大值抑制(NMS)。

DETR(Detection Transformer)是一种基于Transformer的端到端目标检测模型。它使用Transformer编码器来处理输入图像,并通过自注意力机制来建立图像中目标的全局关联。DETR的输出由两部分组成:目标类别和目标框坐标。​​​​​​​

        (2) 我们通过设计渐进缩小的金字塔和空间缩减注意力(SRA),克服了将Transformer迁移到密集预测任务时的许多困难。这些方法能够减少Transformer的资源消耗,使PVT能够灵活地学习多尺度和高分辨率的特征。

        (3) 我们在几个不同的任务上对提出的PVT进行了评估,包括图像分类、目标检测、实例分割和语义分割,并将其与流行的ResNet [21]和ResNeXt [72]进行了比较。

        如图2所示,我们的PVT在不同参数规模下相对于先前的方法始终取得了改进的性能。例如,在可比的参数数量下,使用RetinaNet [38]进行目标检测,PVT-Small在COCO val2017上实现了40.4的AP,比ResNet50高出4.1个点(40.4 vs. 36.3)。此外,PVT-Large实现了42.6的AP,比ResNeXt101-64x4d提高了1.6个点,参数数量减少了30%。

图2:使用RetinaNet进行目标检测时,在COCO val2017上不同骨干网络的性能比较,其中“T”、“S”、“M”和“L”表示我们的PVT模型的不同规模。我们可以看到,当不同模型的参数数量可比时,PVT变体显著优于它们对应的骨干网络,如ResNets(R)[21],ResNeXts(X)[72]和ViT [12]。

2.相关工作

2.1.CNN主干网络

        CNN是视觉识别中深度神经网络的主力军。标准的CNN最早在[33]中被引入,用于区分手写数字。该模型包含具有一定感受野的卷积核,可以捕捉有利的视觉上下文。为了提供平移等变性,卷积核的权重在整个图像空间上共享。近年来,随着计算资源(例如GPU)的快速发展,对大规模图像分类数据集(例如ImageNet [50])上的堆叠卷积块[32,53]的成功训练成为可能。例如,GoogLeNet [58]证明了包含多个卷积核路径的卷积操作符可以实现非常竞争的性能多路径卷积块的有效性在Inception系列[59,57]、ResNeXt [72]、DPN [9]、MixNet [64]和SKNet [35]中进一步得到验证。此外,ResNet [21]将跳跃连接引入卷积块中,使得创建/训练非常深的网络成为可能,并在计算机视觉领域取得了令人印象深刻的结果DenseNet [24]引入了一种密集连接的拓扑结构,将每个卷积块连接到所有先前的块。最近的进展可以在最近的调研/综述论文[30,52]中找到。与完整的CNN不同,视觉Transformer骨干网络仍处于早期开发阶段。在这项工作中,我们尝试通过设计一种新的多功能Transformer骨干网络,适用于大多数视觉任务,来扩展Vision Transformer的范围。

2.2.密集预测任务

初步的。密集预测任务旨在对特征图进行像素级分类或回归。目标检测和语义分割是两个典型的密集预测任务。

目标检测。在深度学习时代,CNN已成为目标检测的主要框架,其中包括单阶段检测器(如SSD [42]、RetinaNet [38]、FCOS [61]、GFL [36,34]、PolarMask [70]和OneNet [54])和多阶段检测器(Faster R-CNN [48]、Mask R-CNN [20]、Cascade R-CNN [4]和Sparse R-CNN [56])。这些主流目标检测器大多都建立在高分辨率或多尺度的特征图上,以获得良好的检测性能。最近,DETR [5]和可变形DETR [82]将CNN骨干和Transformer解码器结合起来构建一个端到端的目标检测器。同样地,它们也需要高分辨率或多尺度的特征图来进行准确的目标检测。

语义分割。CNN在语义分割中也起着重要的作用。在早期阶段,FCN [43]引入了完全卷积的架构,用于为任意大小的给定图像生成空间分割图。随后,Noh等人 [46]引入了反卷积操作,并在PASCAL VOC 2012数据集 [51]上取得了令人印象深刻的性能。受到FCN的启发,U-Net [49]专门用于医学图像分割领域,将相同空间尺寸的低级和高级特征图之间的信息流连接起来。为了探索更丰富的全局上下文表示,Zhao等人 [79]设计了一个金字塔池化模块,用于不同的池化尺度,而Kirillov等人 [31]则基于FPN [37]开发了一个轻量级的分割头部模块,称为Semantic FPN。最后,DeepLab系列 [7,40]应用了空洞卷积来扩大感受野,同时保持特征图的分辨率。与目标检测方法类似,语义分割模型也依赖于高分辨率或多尺度的特征图。

2.3.自注意力机制和Transformer在视觉中的应用

        由于卷积滤波器权重通常在训练后固定,它们无法根据不同的输入进行动态调整。许多方法已经提出来通过使用动态滤波器 [29]或自注意操作 [63]来缓解这个问题非局部块 [69]尝试对空间和时间上的长程依赖进行建模,对于准确的视频分类已经被证明是有益的。然而,尽管非局部操作符取得了成功,但它面临着高计算和内存成本的问题。Criss-cross [25]通过生成交叉路径的稀疏注意力图进一步降低了复杂性。Ramachandran等人 [47]提出了独立的自注意力来替换卷积层,使用本地自注意单元。AANet [3]在自注意力和卷积操作结合时取得了有竞争力的结果LambdaNetworks [2]使用lambda层,一种高效的自注意力方法,来替换CNN中的卷积操作。DETR [5]利用Transformer解码器将目标检测建模为一个端到端的字典查找问题,通过可学习的查询成功地消除了诸如NMS之类的手工制作过程。在DETR的基础上,可变形DETR [82]进一步采用了可变形注意力层,以关注一组稀疏的上下文元素,从而实现更快的收敛和更好的性能最近,Vision Transformer (ViT) [12]通过将图像视为一系列补丁,采用纯Transformer [63]模型进行图像分类。DeiT [62]通过一种新颖的蒸馏方法进一步扩展了ViT。与以前的模型不同,本工作将金字塔结构引入Transformer,用于呈现密集预测任务的纯Transformer骨干,而不是任务特定的头部或图像分类模型。        

3.金字塔视觉Transformer

3.1.整体架构

        我们的目标是将金字塔结构引入Transformer框架,使其能够为密集预测任务(例如目标检测和语义分割)生成多尺度的特征图。PVT的概述如图3所示。与CNN的骨干网络[21]类似,我们的方法有四个阶段,生成不同尺度的特征图。所有阶段共享相似的架构,包括一个补丁嵌入层和Li个Transformer编码器层。

        在第一阶段中,给定大小为H×W×3的输入图像,我们首先将其划分为HW/4×HW/4个大小为4×4×3的补丁。然后,我们将展平的补丁输入线性投影,并获得大小为HW/4×C1的嵌入补丁。接下来,将嵌入补丁和位置嵌入一起通过具有L1个层的Transformer编码器,输出被重塑为大小为H/4×W/4×C1的特征图F1。以相同的方式,使用前一阶段的特征图作为输入,我们获得以下特征图F2、F3和F4,它们相对于输入图像的步长分别为8、16和32个像素。通过特征金字塔{F1,F2,F3,F4},我们的方法可以轻松地应用于大多数下游任务,包括图像分类、目标检测和语义分割。

 图3:金字塔视觉Transformer(PVT)的整体架构。整个模型分为四个阶段,每个阶段由一个补丁嵌入层和一个Li层的Transformer编码器组成。按照金字塔结构,四个阶段的输出分辨率逐渐从高(4倍步长)缩小到低(32倍步长)。

3.2.Transformer的特征金字塔

        与CNN骨干网络[53,21]使用不同的卷积步长来获得多尺度特征图不同,我们的PVT通过补丁嵌入层使用逐渐缩小的策略来控制特征图的尺度。在这里,我们将第i个阶段的补丁大小表示为Pi。在第i个阶段的开始,我们首先将输入特征图Fi−1 ∈RHi−1×Wi−1×Ci−1均匀地划分为Hi−PiWi−Pi个补丁,然后将每个补丁展平并投影到一个Ci维的嵌入中。经过线性投影后,嵌入补丁的形状可以看作是HPi×WPi×Ci,其中高度和宽度比输入小Pi倍。通过这种方式,我们可以在每个阶段灵活调整特征图的尺度,从而可以构建Transformer的特征金字塔。

 图4:多头注意力(MHA)与空间缩减注意力(SRA)的比较。通过空间缩减操作,我们的SRA的计算/内存成本远低于MHA。

3.3.Transformer编码

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

        与MHA类似,我们的SRA接收查询Q、键K和值V作为输入,并输出一个经过改进的特征。不同之处在于我们的SRA在注意力操作之前减小了K和V的空间尺度(参见图4),这大大减小了计算和内存开销。第i阶段中SRA的详细描述如下:

其中Concat(·)是连接操作,与[63]中一样。W Q j,W K j和W V j是线性投影参数,维度分别为RCi×dhead。W O 是一个 RCi×Ci 的线性投影参数。Ni是第i阶段注意力层的头数。因此,每个头的维度(即dhead)等于NCii。SR(·)是用于减小输入序列(即K或V)的空间维度的操作,表示为:这里,x ∈ R(HiWi)×Ci表示输入序列,Ri表示第i阶段注意力层的缩减比例。Reshape(x,Ri)是将输入序列x重新形状为大小为HRiW2 i i i ×(Ri2Ci)的序列的操作。WS ∈ R(Ri2Ci)×Ci是一个线性投影,将输入序列的维度降低到Ci。Norm(·)表示层归一化[1]。与原始的Transformer [63]一样,我们的注意力操作Attention(·)计算如下:通过这些公式,我们可以发现我们的注意力操作的计算/内存成本比MHA低Ri2倍,因此我们的SRA可以在有限资源下处理更大的输入特征图/序列。

3.4.讨论

        与我们的模型最相关的工作是ViT [12]。在这里,我们讨论它们之间的关系和区别。首先,PVT和ViT都是没有卷积的纯Transformer模型。它们之间的主要区别在于金字塔结构。与传统的Transformer [63]类似,ViT的输出序列的长度与输入相同,这意味着ViT的输出是单一尺度的(参见图1 (b))。此外,由于资源有限,ViT的输入是粗粒度的(例如,补丁大小为16或32像素),因此其输出分辨率相对较低(例如,16步长或32步长)。因此,直接将ViT应用于需要高分辨率或多尺度特征图的密集预测任务是困难的。

        我们的PVT通过引入逐步缩小的金字塔结构打破了Transformer的常规。它可以生成与传统CNN骨干网络类似的多尺度特征图。此外,我们还设计了一个简单但有效的注意力层——SRA,用于处理高分辨率特征图并减少计算和内存成本。由于以上设计的优势,我们的方法相比ViT具有以下优点:

        1)更灵活——可以在不同阶段生成不同尺度/通道的特征图;

        2)更通用——可以轻松地插入并在大多数下游任务模型中使用;

        3)更友好于计算和内存——可以处理更高分辨率的特征图或更长的序列。

4.应用到下游任务

4.1.基于图像级别的预测

        图像分类是图像级别预测最经典的任务。为了提供讨论的实例,我们设计了一系列不同尺度的PVT模型,分别是PVT-Tiny、-Small、-Medium和-Large,其参数数量与ResNet18、50、101和152相似。PVT系列的详细超参数设置在补充材料中提供。对于图像分类,我们遵循ViT [12]和DeiT [62]的做法,在最后一个阶段的输入中添加一个可学习的分类标记,然后使用全连接(FC)层在标记之上进行分类。

4.2.基于像素级别的密集预测

        除了图像级别的预测,密集预测也经常在下游任务中出现,需要在特征图上进行像素级别的分类或回归。在这里,我们讨论两个典型的任务,分别是目标检测和语义分割。我们将我们的PVT模型应用于三种代表性的密集预测方法,分别是RetinaNet [38]、Mask R-CNN [20]和Semantic FPN [31]。RetinaNet是一种广泛使用的单阶段检测器,Mask R-CNN是最流行的两阶段实例分割框架,Semantic FPN是一种没有特殊操作(例如,空洞卷积)的基本语义分割方法。使用这些方法作为基准可以充分检验不同的骨干网络的有效性。

        具体的实现细节如下:

        (1)与ResNet类似,我们使用在ImageNet上预训练的权重来初始化PVT骨干网络;

        (2)我们使用输出特征金字塔{F1,F2,F3,F4}作为FPN [37]的输入,然后将精炼的特征图送入后续的检测/分割头部;

        (3)在训练检测/分割模型时,PVT的所有层都不被冻结;

        (4)由于检测/分割的输入可以是任意形状,预训练的ImageNet上的位置嵌入可能不再有意义。因此,我们根据输入分辨率对预训练的位置嵌入进行双线性插值。

5.实验

        我们将PVT与两个最具代表性的CNN骨干网络进行比较,即ResNet [21]和ResNeXt [72],它们在许多下游任务的基准测试中被广泛使用。

 表1:在ImageNet验证集上的图像分类性能。“#Param”指参数数量。“GFLOPs”是在输入尺度为224×224下计算的。“*”表示使用原始论文中的训练策略的方法的性能。

5.1.图像分类

设置。图像分类实验是在ImageNet 2012数据集[50]上进行的,该数据集包含了128万张训练图像和1,000个类别的50,000张验证图像。为了进行公平比较,所有模型都在训练集上进行训练,并在验证集上报告top-1错误率。我们遵循DeiT [62]的做法,采用随机裁剪、随机水平翻转[58]、标签平滑正则化[59]、mixup [76]、CutMix [75]和随机擦除[80]作为数据增强。在训练过程中,我们使用AdamW [45]进行优化,动量为0.9,小批量大小为128,权重衰减为5×10^-2。初始学习率设置为1×10^-3,并按照余弦调度[44]进行衰减。所有模型在8个V100 GPU上从头开始训练300个epochs。为了进行基准测试,我们对验证集进行中心裁剪,将224×224的图像块裁剪出来评估分类准确率。

结果。在表1中,我们可以看到在相似的参数数量和计算预算下,我们的PVT模型优于传统的CNN骨干网络。例如,当GFLOPs大致相似时,PVT Small的top-1错误率达到20.2,比ResNet50 [21]的错误率高1.3个百分点(20.2 vs. 21.5)。同时,在相似或更低的复杂度下,PVT模型的性能与最近提出的基于Transformer的模型(如ViT [12]和DeiT [62])相当(PVT-Large: 18.3 vs. ViT(DeiT)-Base/16: 18.3)。在此,我们需要澄清的是,这些结果符合我们的预期,因为金字塔结构对于密集预测任务是有益的,但对图像分类几乎没有改进。需要注意的是,ViT和DeiT有局限性,它们专门设计用于分类任务,因此不适用于密集预测任务,后者通常需要有效的特征金字塔。

5.2.目标检测

设置。目标检测实验是在具有挑战性的COCO基准测试[39]上进行的。所有模型都在COCO train2017(118,000张图像)上进行训练,并在val2017(5,000张图像)上进行评估。我们在两个标准检测器RetinaNet [38]和Mask R-CNN [20]的基础上验证了PVT骨干网络的有效性。在训练之前,我们使用在ImageNet上预训练的权重来初始化骨干网络,并使用Xavier [17]来初始化新增的层。我们的模型在8个V100 GPU上以批量大小为16进行训练,并使用AdamW [45]进行优化,初始学习率为1×10^-4。遵循常规做法[38,20,6],我们采用1×或3×的训练计划(即12或36个epochs)来训练所有的检测模型。训练图像的尺寸调整为较短边为800像素,而较长边不超过1333像素。当使用3×的训练计划时,我们会在[640,800]的范围内随机调整输入图像的较短边。在测试阶段,输入图像的较短边固定为800像素。

结果。如表2所示,在使用RetinaNet进行目标检测时,我们发现在相同数量的参数下,基于PVT的模型显著超过了它们的对应模型。例如,使用1×的训练计划,PVT-Tiny的AP比ResNet18高出4.9个百分点(36.7 vs. 31.8)。此外,使用3×的训练计划和多尺度训练,PVT-Large实现了最佳的AP为43.4,超过了ResNeXt101-64x4d(43.4 vs. 41.8),而我们的参数数量少了30%。这些结果表明,对于目标检测,我们的PVT可以作为CNN骨干网络的良好替代品。在基于Mask R-CNN的实例分割实验中也发现了类似的结果,如表3所示。使用1×的训练计划,PVT-Tiny实现了35.1的掩膜AP(APm),比ResNet18高出3.9个百分点(35.1 vs. 31.2),甚至比ResNet50高出0.7个百分点(35.1 vs. 34.4)。PVT-Large获得的最佳APm为40.7,比ResNeXt101-64x4d高出1.0个百分点(40.7 vs. 39.7),且参数少了20%。

表2:在COCO val2017上的目标检测性能。“MS”表示使用了多尺度训练[38,20]。

5.3.语义分割

设置。我们选择了ADE20K [81]作为具有挑战性的场景解析数据集,来评估语义分割的性能。ADE20K包含150个细粒度的语义类别,分别用于训练、验证和测试的图像数量分别为20,210、2,000和3,352。我们基于没有膨胀卷积 [73]的简单分割方法Semantic FPN [31]来评估我们的PVT骨干网络。在训练阶段,骨干网络使用在ImageNet [11]上预训练的权重进行初始化,其他新增的层使用Xavier [17]进行初始化。我们使用AdamW [45]进行模型优化,初始学习率为1e-4。遵循常规做法[31,7],我们在4个V100 GPU上以批量大小为16进行80k次迭代的训练。学习率按照0.9的幂指数进行多项式衰减。在训练时,我们随机调整和裁剪图像大小为512×512,并在测试时按照较短边为512像素进行缩放。

结果。如表4所示,在使用Semantic FPN [31]进行语义分割时,基于PVT的模型始终优于基于ResNet [21]或ResNeXt [72]的模型。例如,几乎具有相同数量的参数和GFLOPs,我们的PVT-Tiny/Small/Medium的mIoU至少比ResNet-18/50/101高2.8个百分点。此外,尽管我们的PVT-Large的参数数量和GFLOPs比ResNeXt101-64x4d低了20%,但mIoU仍然比后者高出1.9个百分点(42.1 vs. 40.2)。在更长的训练计划和多尺度测试下,PVT-Large+Semantic FPN实现了最佳的mIoU为44.8,非常接近ADE20K基准测试的最新性能。需要注意的是,Semantic FPN只是一个简单的分割头部。这些结果表明,我们的PVT骨干网络可以比CNN骨干网络提取更好的用于语义分割的特征,得益于全局注意机制。

表3:在COCO val2017上的目标检测和实例分割性能。APb和APm分别表示边界框AP和掩膜AP。

5.4.纯Transformer物体检测

        为了达到无卷积的极限,我们通过简单地将我们的PVT与基于Transformer的检测头DETR [5]相结合,构建了一个纯Transformer的目标检测管道。我们在COCO train2017上训练模型50个epochs,初始学习率为1×10^(-4)。学习率在第33个epoch时除以10。我们使用随机翻转和多尺度训练作为数据增强。所有其他实验设置与5.2节中相同。如表5所示,基于PVT的DETR在COCO val2017上实现了34.7的AP,优于基于ResNet50的原始DETR 2.4个百分点(34.7 vs. 32.3)。这些结果证明了纯Transformer检测器在目标检测任务中也能很好地工作。在SM中,我们还尝试了一个纯Transformer模型PVT+Trans2Seg [71]用于语义分割。

表5:纯Transformer目标检测管道的性能。我们通过将PVT和DETR [5]相结合构建了一个纯Transformer检测器,其AP比基于ResNet50 [21]的原始DETR高出2.4个百分点。

5.5.消融研究

设置。我们在ImageNet [11]和COCO [39]数据集上进行消融研究。在ImageNet上的实验设置与第5.1节中的设置相同。对于COCO,所有模型都使用1×训练计划(即12个epochs)进行训练,不使用多尺度训练,其他设置与第5.2节中的设置相同。

金字塔结构。在将Transformer应用于密集预测任务时,金字塔结构至关重要。ViT(见图1(b))是一个柱状框架,其输出是单尺度的。当使用粗糙的图像补丁(例如,每个补丁32×32像素)作为输入时,会导致低分辨率的输出特征图,从而导致检测性能较差(如表6所示,在COCO val2017上为31.7的AP)。当像我们的PVT那样使用细粒度的图像补丁(例如每个补丁4×4像素)作为输入时,ViT将耗尽GPU内存(32G)。通过渐进式缩小的金字塔,我们的方法避免了这个问题。具体来说,我们的模型可以在浅层阶段处理高分辨率的特征图,在深层阶段处理低分辨率的特征图。因此,在COCO val2017上我们获得了40.4的AP,比ViT-Small/32高出8.7个百分点(40.4 vs. 31.7)。

计算开销。随着输入规模的增加,我们的PVT的GFLOPs增长速度大于ResNet [21],但低于ViT [12],如图5所示。然而,当输入规模不超过640×640像素时,PVT-Small和ResNet50的GFLOPs相似。这意味着我们的PVT更适用于中分辨率输入的任务

        在COCO数据集上,输入图像的较短边为800像素。在这种情况下,基于PVT-Small的RetinaNet的推理速度比基于ResNet50的模型慢。

        (1)解决这个问题的一种直接方法是减小输入规模。将输入图像的较短边缩小到640像素时,基于PVT-Small的模型比基于ResNet50的模型运行更快(51.7ms vs. 55.9ms),并且AP更高(38.7 vs. 36.3,提高了2.4个百分点)。

        (2)另一种解决方案是开发一个计算复杂度较低的自注意力层。这是一个值得探索的方向,我们最近提出了一种解决方案PVTv2 [66]。在SM中,我们对PVT的其他特征进行了更多的定性或定量分析,并提供了密集预测任务的视觉结果。

表6:使用RetinaNet进行目标检测时,ViT和我们的PVT的性能比较。由于小的补丁大小(即每个补丁4×4),ViT-Small/4的GPU内存不足。ViT-Small/32在COCO val2017上获得31.7的AP,比我们的PVT-Small低了8.7个百分点。

 图5:不同输入规模下的模型GFLOPs。GFLOPs的增长速率为:ViT-Small/16 [12] > ViT-Small/32 [12] > PVT-Small(我们的)> ResNet50 [21]。

6.结论和未来的工作

        我们引入了PVT,一种纯Transformer骨干网络,用于密集预测任务,如目标检测和语义分割。我们开发了一个逐渐缩小的金字塔和一个空间缩减注意力层,以在有限的计算/内存资源下获得高分辨率和多尺度的特征图。在目标检测和语义分割基准测试上进行了广泛的实验,验证了我们的PVT在相同参数数量下比精心设计的CNN骨干网络更强大。

        尽管PVT可以作为CNN骨干网络(如ResNet、ResNeXt)的替代品,但仍然有一些特定的模块和操作是为CNN设计的,在这项工作中没有考虑,例如SE [22]、SK [35]、空洞卷积 [73]、模型修剪 [19] 和NAS [60]。此外,随着多年的快速发展,已经出现了许多经过良好设计的CNN骨干网络,如Res2Net [16]、EfficientNet [60]和ResNeSt [77]。相比之下,计算机视觉中基于Transformer的模型仍处于早期阶段的发展。因此,我们相信在未来还有许多潜在的技术和应用领域(例如OCR [67,65,68]、3D [27,10,26]和医学 [14,15,28]图像分析)有待探索,并希望PVT能够成为一个良好的起点。

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

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

相关文章

无人机自主探索FUEL:代码阅读1--边界簇检测更新与视点生成

~/src/catkin_fuel_refactored/fuel_refactored/fuel_planner/bagbag中包含三个.sh文件,为rosbag指令,给出了录包指令以及有用话题信息 FIS 1、增量边界检测与聚类 路径:~/fuel_planner/active_perception/src/frontier_finder.cpp 主要函…

五、模型训练

目录 1. 线性模型1.1 Lasso 回归1.2 Ridge 回归 2. 树模型2.1 随机森林(Random Forest,RF)2.2 梯度提升树(GBDT)2.3 XGBoost2.4 LightGBM2.5 CatBoost2.6 模型深入对比 3. 神经网络3.1 多层感知机3.2 卷积神经网络3.3 …

Linux 下 nc 发送接收 udp、tcp数据

nc,全名叫 netcat,它可以用来完成很多的网络功能,譬如端口扫描、建立TCP/UDP连接,数据传输、网络调试等等,因此,它也常被称为网络工具的 瑞士军刀 。 一、只服务端使用nc 备注:这种方式只能发…

【Hive】Centos7安装单机版Hive

Hive依赖MySQL存储元数据信息,安装Hive前需要先安装MySQL 一、安装MySQL 下载mysql安装包 wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm2. 如果不是root用户需要先切换到root用户,安装第1步下载的rpm包 yum -y install …

MYSQL练习一答案

练习1答案 构建数据库 数据库 数据表 answer开头表为对应题号答案形成的数据表 表结构 表数据 答案: 1、查询商品库存等于50的所有商品,显示商品编号,商 品名称,商品售价,商品库存。 SQL语句 select good_no,good…

数据结构07:查找[C++][B树Btree]

图源:文心一言 考研对于B树的要求重点在推理手算的部分,只参考王道论坛咸鱼老师的视频就可以了;若时间非常充裕的小伙伴,也可以往下滑了解一下代码~🥝🥝 备注: 这次的代码是从这里复制的&…

nodejs+vue+elementui汽车销售网站

前端技术:nodejsvueelementui,视图层其实质就是vue页面,通过编写vue页面从而展示在浏览器中,编写完成的vue页面要能够和控制器类进行交互,从而使得用户在点击网页进行操作时能够正常。 可以设置中间件来响应 HTTP 请求。 Express …

关于坏点问题的调试总结

1、问题背景: 前段时间调试一个项目,有发现在低照度场景下图上有很多明显的白点,如下图所示。以以往的调试经验来看这就是坏点,可以通过 ISP 中去坏点模块去将其抹掉,但这么多的明显坏点,通过去坏点模块去…

5.1.tensorRT基础(2)-正确导出onnx的介绍,使得onnx问题尽量少

目录 前言1. 正确导出ONNX总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 基础-正确导出 onnx 的介绍&#xff0…

【网络安全】DVWA靶场实战BurpSuite内网渗透

BurpSuite 内网渗透 一、 攻击模式介绍1.1 Sniper(狙击手)1.2 Battering ram(攻城锤)1.3 Pitchfork(草叉)1.4 Cluster bomb(榴霰弹) 二、 DVWA靶场搭建2.1 下载DVWA工程2.2 添加网站…

19 QListWidget控件

Tips: 对于列表式数据可以使用QStringList进行左移一块输入。 代码: //listWidget使用 // QListWidgetItem * item new QListWidgetItem("锄禾日当午"); // QListWidgetItem * item2 new QListWidgetItem("汗滴禾下土"); // ui->…

vue前端打包优化

建议,使用pnpn代替原生的npm 具体操作如下: pnpm安装,如果是linux,需要把npm和pnpm设置为环境变量## 安装pnpm npm install -g pnpm5.15.0 --registryhttps://registry.npm.taobao.org ## 设置淘宝镜像pnpm config set registry…

Vue3+vite实现组件上传npm并应用

场景:就是A项目的组件需要在B项目中使用 下面举例的是把a项目pagination分页组件上传到npm,在b项目使用 采坑日记:封装的组件一定要起name要不调用不成功 1.1 配置打包 1.1 首先在公用组件components文件夹下创建index.js文件&#xff0c…

JavaSwing+MySQL的小区物业管理系统

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88071096 JDK1.8、MySQL5.7 《数据库原理课程设计》课程设计任务书 题 目: 小区物业管理系统 学生姓名: xxxxxx 班 级: xx 级软件工程 x 班 学 号&#…

虚继承是如何解决二义性和数据的冗余的

我们知道面向对象的三大特性分别为封装,继承,多态。在继承中,我们知道一个类可以继承另一个类,这样的关系被叫做子类(派生类)继承父类(基类),并且子类可以使用到父类的接口。但是在C中还被设计了…

ElasticSearch学习--数据聚合

介绍 数据聚合可以帮助我们对海量的数据进行统计分析,如果结合kibana,我们还能形成可视化的图形报表。自动补全可以根据用户输入的部分关键字去自动补全和提示。数据同步可以帮助我们解决es和mysql的数据一致性问题。集群可以帮助我们了解结构和不同节点…

Pytorch个人学习记录总结 08

目录 神经网络-搭建小实战和Sequential的使用 版本1——未用Sequential 版本2——用Sequential 神经网络-搭建小实战和Sequential的使用 torch.nn.Sequential的官方文档地址,模块将按照它们在构造函数中传递的顺序添加。代码实现的是下图: 版本1—…

BeanFactory容器的构建和使用示例

BeanFactory容器的实现流程: BeanFactory是Spring框架中的一部分,它提供了IoC(控制反转)的实现机制。下面是BeanFactory的IoC实现过程: 定义Bean定义:首先,我们需要在配置文件中定义Bean的定义…

[数据结构]顺序表和ArrayList

顺序表的介绍 在了解顺序表之前先了解一下什么叫做线性表: 线性表(linear list):是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构。 常见的线性表:顺序表、链表、栈、队列… 线性…

数学建模入门-如何从0开始,掌握数学建模的基本技能

一、前言 本文主要面向没有了解过数学建模的同学,帮助同学们如何快速地进行数学建模的入门并且尽快地在各类赛事中获奖,或者写出优秀的数学建模论文。 在本文中,我将从什么是数学建模、数学建模的应用领域、数学建模的基本步骤、数学建模的技…