PVT重磅升级:三点改进,性能大幅提升

2023-11-09 17:20

本文主要是介绍PVT重磅升级:三点改进,性能大幅提升,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编辑:Happy
首发:AIWalker

标题&作者团队

标题&作者团队

本文是南京大学&港大&南理工&商汤团队针对PVT的升级,针对PVT存在的不足提出了三点改进(1)采用卷积提取局部连续特征;(2)带zero-padding 的重叠块嵌入提取位置信息编码;(3)带均值池化、线性复杂度的注意力层。受益于上述三点改进措施,所得PVTv2取得了显著优于PVTv1的性能,同时具有比Swin更佳的性能。

Abstract

Transformer在CV领域取得了喜人的进展。在本文工作中,我们在PVT(后称PVTv1)的基础上引入了如下三个改进得到了PVTv2:

  • 采用卷积提取局部连续特征;

  • zero-padding的位置编码;

  • 带均值池化的线性复杂度的注意力层。

基于上述改进,所提PVTv2在分类、检测以及分割方面取得了显著优于PVTv1的性能,比如,PVTv2-B5在ImageNet上取得了83.8%的top1精度,优于Swin-B于Twins-SVT-L同时具有更少参数量与计算量;GFL+PVT-B2的组合在COCO-val2017数据集取得了50.2AP指标,显著优于Swin-T(高2.6AP)与ResNet50(高5.7AP)。更进一步,基于ImageNet-1K预训练,相比近期的工作(包含Swin Transformer)所提PVTv2取得了更佳的性能。

前情回顾

上图给出了PVT的架构示意图,PVT旨在将金字塔结构嵌入到Transformer结构用于生成多尺度特征,并最终用于稠密预测任务。类似与CNN骨干结构,PVT同样包含四个阶段用于生成不同尺度的特征,所有阶段具有相类似的结构:Patch Embedding+Transformer Encoder

在第一个阶段,给定尺寸为的输入图像,我们按照如下流程进行处理:

  • 首先,将其划分为的块(这里是为了与ResNet对标,最大输出特征的尺寸为原始分辨率的1/4),每个块的大小为;

  • 然后,将展开后的块送入到线性投影曾得到尺寸为的嵌入块;

  • 其次,将前述嵌入块与位置嵌入信息送入到Transformer的Encoder,其输出将为reshap为.

采用类似的方式,我们以前一阶段的输出作为输入即可得到特征。基于特征金字塔,所提方案可以轻易与大部分下游任务(如图像分类、目标检测、语义分割)进行集成。

对PVT一文感兴趣的朋友,可移步笔者之前的解读:

金字塔Transformer,更适合稠密预测任务的Transformer骨干架构

Improved Pyramid Vision Transformer

类似ViT,PVTv1同样将图像视作非重叠块序列,而这种处理方式会在一定程度上破坏图像的局部连续性。此外,PVTv1中采用了定长位置编码,这对于任意尺度图像处理不够灵活。这些问题均限制了PVTv1在视觉任务方面的性能。

为解决上述问题,我们提出了PVTv2,它主要针对PVTv1进行了以下三个方面的改进。

Overlapping Patch Embedding

下图对比了PVTv1与PVTv2在块嵌入方面的差异示意图。也就是说,在PVTv2中,我们采用重叠块嵌入对图像进行序列化。下上图a为例,我们扩大了块窗口,使得近邻窗口重叠一半面积。在这里,我们采用带zero-padding的卷积实现重叠块嵌入。具体来说,给定尺寸为的输入,我们采用stride=S,核尺寸为,padding为S-1的卷积进行处理,输出尺寸为。

Convolutional Feed-Forward

受启发于LocalViT、CPVT,我们移除了定长位置编码,将zero-padding位置编码引入到PVT,见上图b。我们采用了深度卷积、全连接层以及GELU构建了前馈网络。

Linear Spatial Reduction Attention

为进一步减少PVT的计算量,我们提出了LSRA(Linear Spatial Reduction Attention),见上图。与SRA不同之处,LSRA具有线性复杂度、内存占用与卷积类似。具体来说,给定的输如,SRA与LSRA的复杂度分别如下:

其中,R表示SRA的空间分辨率下降比例,P为LSRA的池化尺寸,默认为7。

Details of PVTv2 Seris

组合上述三点改进即得到了本文的PVTv2,它具有以下三个特性:

  • 包含图像/特征更多的局部连续性;

  • 更灵活的处理可变分辨率图像;

  • 具有类似CNN的线性复杂度

通过改变如下超参数,我们构建了不同版本的PVTv2(B0-B5)。

  • :表示阶段i的重叠块嵌入的stride;

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

  • :表示阶段i的编码器层数;

  • :表示阶段i的SRA的下降比例;

  • :表示阶段i的LSRA的自适应均值池化尺寸;

  • :表示阶段i的Efficient Self-Attention的头数;

  • :表示阶段i的前馈层的扩张比例。

上表给出了PVTv2的结构信息,该设计参考ResNet的设计原则:

  • 通道维度随空间分辨率收缩而提升;

  • Stage-3被赋予更多的计算量。

Experiments

在实验方面,我们主要在ImageNet分类、COCO检测与实例分割方面进行了对比。

ImageNet

上表给出了ImageNet上的性能对比,从中可以看到:

  • 相比PVT,PVTv2具有相似的FLOPs与参数量,但性能取得了显著提升。比如,相比PVTv1-tiny,PVTv2-B1指标高3.6%;相比PVT-large,PVTv2-B4指标高1.9%;

  • 性比其他方案,PVTv2同样具有显著优势(精度、模型大小)。比如,相比Swin与Twins,所提PVTv2-B5取得了83.8%top1精度,指标更高、参数量与FLOPs更低。

COCO

上表给出了COCO目标检测与实例分割方面的性能对比,从中可以看到:在单阶段与双阶段目标检测方面,PVTv2均比PVTv1具有更好的性能:相同模型大小,更高的指标。比如,基于RetinaNet,PVTv2-B4取得了46.4AP指标,以3.5AP超过了PVTv1;基于Mask R-CNN,PVTv2-B4取得了47.5AP指标,以3AP优于PVTv1。

为了与Swin更公平的对比,我们确保所有配置相同(包含预训练与微调)并在四种不同的检测器框架下进行了对比,结果见上表。从中可以看到:PVTv2在四种检测器框架下均取得了比Swin更佳的 AP指标,证实了其优异的特征表达能力。比如,基于ATSS框架,相比Swin-T,所提PVTv2取得了2.7指标提升且具有相似参数量与计算量;所提PVTv2-Li可以将计算量从258G减少到194G,而精度仅轻微下降(约1AP)。

推荐阅读

  1. “重参数宇宙”再添新成员:RepMLP,清华大学&旷视科技提出将重参数卷积嵌入到全连接层

  2. 新坑!谷歌提出MLP-Mixer:一种无卷积、无注意力,纯MLP构成的视觉架构

  3. CVPR2021 | 动态滤波器卷积新高度!DDF:同时解决内容不可知与计算量两大缺陷

  4. CVPR2021|“无痛涨点”的ACNet再进化,清华大学&旷视科技提出Inception类型的DBB

  5. TNT|为充分利用局部与全局结构信息,华为诺亚提出全新Transformer:TNT

  6. 金字塔Transformer,更适合稠密预测任务的Transformer骨干架构

  7. 来自Transformer的降维打击:ReID各项任务全面领先,阿里&浙大提出TransReID

  8. ResNet被全面超越了,是Transformer干的:依图科技开源“可大可小”T2T-ViT,轻量版优于MobileNet

  9. CNN与Transformer的强强联合!谷歌最新开源BoTNet,ImageNet达84.7%准确率

  10. Transformer再下一城!low-level多个任务榜首被占领,北大华为等联合提出预训练模型IPT

- END -

这篇关于PVT重磅升级:三点改进,性能大幅提升的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/377502

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

macOS升级后SVN升级

问题 svn: error: The subversion command line tools are no longer provided by Xcode. 解决 sudo chown -R $(whoami) /usr/local/Cellar brew install svn

java学习,进阶,提升

http://how2j.cn/k/hutool/hutool-brief/1930.html?p=73689

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

PR曲线——一个更敏感的性能评估工具

在不均衡数据集的情况下,精确率-召回率(Precision-Recall, PR)曲线是一种非常有用的工具,因为它提供了比传统的ROC曲线更准确的性能评估。以下是PR曲线在不均衡数据情况下的一些作用: 关注少数类:在不均衡数据集中,少数类的样本数量远少于多数类。PR曲线通过关注少数类(通常是正类)的性能来弥补这一点,因为它直接评估模型在识别正类方面的能力。 精确率与召回率的平衡:精确率(Pr

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww