当前位置:网站首页>无卷积骨干网络:金字塔Transformer,提升目标检测/分割等任务精度(附源代码)...
无卷积骨干网络:金字塔Transformer,提升目标检测/分割等任务精度(附源代码)...
2022-07-05 20:04:00 【计算机视觉研究院】

计算机视觉研究院专栏
作者:Edison_G
在将金字塔结构嵌入到Transformer结构用于生成多尺度特征,并最终用于稠密预测任务。
公众号ID|ComputerVisionGzq
学习群|扫码在主页获取加入方式
关注并星标
从此不迷路
计算机视觉研究院


论文地址:https://arxiv.org/pdf/2102.12122.pdf
源代码地址:https://github.com/whai362/PVT
背景
具有自注意力的Transformer引发了自然语言处理领域的革命,最近还激发了Transformer式架构设计的出现,并在众多计算机视觉任务中取得了具有竞争力的结果。
如下是之前我们分享的基于Transformer的目标检测新技术!
链接:ResNet超强变体:京东AI新开源的计算机视觉模块!(附源代码)

链接:利用TRansformer进行端到端的目标检测及跟踪(附源代码)

链接:YOLOS:通过目标检测重新思考Transformer(附源代码)

在今天分享的工作中,研究者设计了一个新颖的Transformer模块,针对稠密预测任务的主干网络,利用Transformer架构设计进行了一次创新性的探索,将特征金字塔结构与Transformer进行了一次融合,使其可以更好的输出多尺度特征,进而更方便与其他下游任务相结合。
前言
尽管卷积神经网络 (CNN) 在计算机视觉方面取得了巨大成功,但今天分享的这项工作研究了一种更简单、无卷积的主干网络,可用于许多密集预测任务。

目标检测

语义分割

实例分割
与最近提出的专为图像分类设计的Vision Transformer(ViT)不同,研究者引入了Pyramid Vision Transformer(PVT),它克服了将Transformer移植到各种密集预测任务的困难。与当前的技术状态相比,PVT 有几个优点:
与通常产生低分辨率输出并导致高计算和内存成本的ViT不同,PVT不仅可以在图像的密集分区上进行训练以获得对密集预测很重要的高输出分辨率,而且还使用渐进式收缩金字塔以减少大型特征图的计算;
PVT继承了CNN和Transformer的优点,使其成为各种视觉任务的统一主干,无需卷积,可以直接替代CNN主干;
通过大量实验验证了PVT,表明它提高了许多下游任务的性能,包括对象检测、实例和语义分割。
例如,在参数数量相当的情况下,PVT+RetinaNet在COCO数据集上实现了40.4 AP,超过ResNet50+RetinNet(36.3 AP)4.1个绝对AP(见下图)。研究者希望PVT可以作为像素级预测的替代和有用的主干,并促进未来的研究。

基础回顾
CNN Backbones
CNN是视觉识别中深度神经网络的主力军。标准CNN最初是在【Gradient-based learning applied to document recognition】中区分手写数字。该模型包含具有特定感受野的卷积核捕捉有利的视觉环境。为了提供平移等方差,卷积核的权重在整个图像空间中共享。最近,随着计算资源的快速发展(例如,GPU),堆叠卷积块成功在大规模图像分类数据集上训练(例如,ImageNet)已经成为可能。例如,GoogLeNet证明了包含多个内核路径的卷积算子可以实现非常有竞争力的性能。

multi-path convolutional block的有效性在Inception系列、ResNeXt、DPN、MixNet和SKNet中得到了进一步验证。此外,ResNet将跳过连接引入到卷积块中,从而可以创建/训练非常深的网络并在计算机视觉领域获得令人印象深刻的结果。DenseNet引入了一个密集连接的拓扑,它将每个卷积块连接到所有先前的块。更多最新进展可以在最近的论文中找到。

新框架

该框架旨在将金字塔结构嵌入到Transformer结构用于生成多尺度特征,并最终用于稠密预测任务。上图给出了所提出的PVT架构示意图,类似与CNN主干结构,PVT同样包含四个阶段用于生成不同尺度的特征,所有阶段具有相类似的结构:Patch Embedding+Transformer Encoder。
在第一个阶段,给定尺寸为H*W*3的输入图像,按照如下流程进行处理:
首先,将其划分为HW/4^2的块,每个块的大小为4*4*3;
然后,将展开后的块送入到线性投影,得到尺寸为HW/4^2 * C1的嵌入块;
其次,将前述嵌入块与位置嵌入信息送入到Transformer的Encoder,其输出将为reshap为H/4 * W/4 * C1。
采用类似的方式,以前一阶段的输出作为输入即可得到特征F2,F3和F4。基于特征金字塔F1、F2、F3、F4,所提方案可以轻易与大部分下游任务(如图像分类、目标检测、语义分割)进行集成。
Feature Pyramid for Transforme
不同于CNN采用stride卷积获得多尺度特征,PVT通过块嵌入按照progressive shrinking策略控制特征的尺度。

假设第i阶段的块尺寸为Pi,在每个阶段的开始,将输入特征均匀的拆分为Hi-1Wi-1/Pi个块,然后每个块展开并投影到Ci维度的嵌入信息,经过线性投影后,嵌入块的尺寸可以视作Hi-1/Pi * Wi-1/Pi * Ci。通过这种方式就可以灵活的调整每个阶段的特征尺寸,使其可以针对Transformer构建特征金字塔。
Transformer Encoder
对于Transformer encoder的第i阶段,它具有Li个encoder层,每个encoder层由注意力层与MLP构成。由于所提方法需要处理高分辨率特征,所以提出了一种SRA(spatial-reduction attention)用于替换传统的MHA(multi-head-attention)。
类似于MHA,SRA同样从输入端接收到了Q、K、V作为输入,并输出精炼后特征。SRA与MHA的区别在于:SRA会降低K和V的空间尺度,见下图。


Detailed settings of PVT series
实验

ImageNet数据集上的性能对比,结果见上表。从中可以看到:
相比CNN,在同等参数量与计算约束下,PVT-Small达到20.2%的误差率,优于ResNet50的21.5%;
相比其他Transformer(如ViT、DeiT),所提PVT以更少的计算量取得了相当的性能。


在语义分割中的性能对比,见上表。可以看到:不同参数配置下,PVT均可取得优于ResNet与ResNeXt的性能。这侧面说明:相比CNN,受益于全局注意力机制,PVT可以提取更好的特征用于语义分割。


THE END
转载请联系本公众号获得授权

计算机视觉研究院学习群等你加入!
计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!

扫码关注
计算机视觉研究院
公众号ID|ComputerVisionGzq
学习群|扫码在主页获取加入方式
往期推荐
边栏推荐
- 14. Users, groups, and permissions (14)
- js实现禁止网页缩放(Ctrl+鼠标、+、-缩放有效亲测)
- 2023年深圳市绿色低碳产业扶持计划申报指南
- No matter how busy you are, you can't forget safety
- 股票开户哪里好?网上客户经理开户安全吗
- A solution to PHP's inability to convert strings into JSON
- Autumn byte interviewer asked you any questions? In fact, you have stepped on thunder
- 深度学习 卷积神经网络(CNN)基础
- -v parameter of GST launch
- 手机股票开户安全吗?靠不靠谱啊?
猜你喜欢

leetcode刷题:二叉树15(找树左下角的值)

Force buckle 729 My schedule I

Redis cluster simulated message queue

leetcode刷题:二叉树12(二叉树的所有路径)

Fundamentals of deep learning convolutional neural network (CNN)

建立自己的网站(16)

B站UP搭建世界首个纯红石神经网络、基于深度学习动作识别的色情检测、陈天奇《机器学编译MLC》课程进展、AI前沿论文 | ShowMeAI资讯日报 #07.05

leetcode刷题:二叉树16(路径总和)

95后阿里P7晒出工资单:狠补了这个,真香...
![[C language] string function and Simulation Implementation strlen & strcpy & strcat & StrCmp](/img/32/738df44b6005fd84b4a9037464e61e.jpg)
[C language] string function and Simulation Implementation strlen & strcpy & strcat & StrCmp
随机推荐
Debezium series: modify the source code to support drop foreign key if exists FK
城链科技数字化创新战略峰会圆满召开
深度学习 卷积神经网络(CNN)基础
Leetcode skimming: binary tree 12 (all paths of binary tree)
S7-200smart uses V90 Modbus communication control library to control the specific methods and steps of V90 servo
Leetcode: binary tree 15 (find the value in the lower left corner of the tree)
Zhongang Mining: analysis of the current market supply situation of the global fluorite industry in 2022
[C language] merge sort
leetcode刷题:二叉树18(最大二叉树)
字节跳动Dev Better技术沙龙成功举办,携手华泰分享Web研发效能提升经验
MySql的root密码忘记该怎么找回
Float.floatToRawIntBits的返回值具体意思,将float转为byte数组
Is it safe for Guosen Securities to open an account online?
港股将迎“最牛十元店“,名创优品能借IPO突围?
leetcode刷题:二叉树12(二叉树的所有路径)
Go language learning tutorial (XV)
gst-launch的-v参数
Win10 x64环境下基于VS2017和cmake-gui配置使用zxing以及opencv,并实现data metrix码的简单检测
Let's talk about threadlocalinsecurerandom
Go language | 01 wsl+vscode environment construction pit avoidance Guide