热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PyTorch深度学习(27)ShiftVisionTransformer

一、论文简介论文题目:WhenShiftOperationMeetsVisionTransformer:AnExtremelySimpleAlternativeto

一、论文简介

论文题目:When Shift Operation Meets Vision Transformer: An Extremely Simple Alternative to Attention Mechanism


https://doi.org/10.48550/arXiv.2201.10801

AlexNet的革命性进步,CNNs主导计算机视觉领域近10年

ViT的Backbone明显优于CNN的Backbone,迅速应用于目标检测、语义分割、动作识别等计算机视觉任务中。

ViT相比CNN,具有显著的优点:

1、提供了同时捕获短期和长期依赖的可能性,摆脱了卷积的局限限制

2、两个空间位置之间的相互作用动态地依赖于各自的特征,而不是一个固定的卷积核

但是,这两点是否是成功的关键:

对于第一点:Swin-Transformer和Local ViT引入局部注意力机制,将其注意力范围限制在一个小的局部区域内,结果表明系统性能没有由于局部限制而下降

对于第二点:MLP-Mixer提出用线性投影层代替注意力层,其中线性权值不是动态生成的,仍然在ImageNet数据集上达到领先的性能

既然全局特性和动态特性可能对ViT框架都不重要,那ViT成功的根本原因是什么?

没有全局范围、没有动态、没有参数、没有算数计算



二、网络结构

标准的ViT构建块包括:注意力层前馈网络(FFN)

作者用Shift操作取代前一个注意力层,保持后一个FFN部分不变。给定一个输入特征,构建块将首先沿着4个空间方向(左、右、上、下)移动一小部分通道,随后的FFN进行通道混合,以进一步融合来自相邻通道的信息。

基于shift building block构建了一个类似ViT的Backbone,即ShiftViT。这个Backbone很好地用于主流视觉识别任务,性能与Swin Transformer相当甚至更好。

在与Swin-T模型相同的计算预算内,ShiftViT在ImageNet数据集达到81.7%(相对于Swin-T的81.3%)。对于密集预测任务,在COCO检测数据集上平均精度(mAP)为45.7%(Swin-T的43.7%),在ADE20k分割数据集上平均精度(mloU)为46.3%(Swin-T的44.5%)。

因此,作者认为应该更多关注组成部分,而不是仅仅关注注意力机制。

现如今引发一波不断上升的关于视觉Transformer的研究浪潮,主要研究重点是改进注意力机制,使其能够满足视觉信号的内在特性。例如:MSViT构建层次注意力层以获得多尺度特征。Swin-Transformer在其注意力机制中引入了一种局部性约束。还有pyramid attention、local-global attention、cross attention等。

本文目的:注意力机制可能不是ViTs工作的关键部分,甚至可以被一个非常简单的Shift操作所取代,作者希望这些结果能够激励研究者重新思考注意力机制的作用。


MLP Variants

MLP-Mixer引入一个Token的混合MLP,以直接连接所有空间位置。消除了ViT的动态特性,但不是去准确性,后续工作研究了MLP更多设计,如空间门控单元或循环连接。

 红色框部分是token-mixing MLP,绿色框部分是channel-mixing MLP。

ShiftViT可归类为MLP架构,Shift操作可视为一个特殊的Token混合层,Shift操作简单(不包含参数、没有FLOP),由于具有固定的线性权值,普通的MLP变体不能处理可变的输入大小。Shift操作克服了这一障碍,使Backbone用于更多的视觉任务,如目标检测和语义分割。


Shift Operation

Shift操作在2017年被认为是空间卷积操作的一种有效的替代方案

论文题目:CVPR2018  Shift: A Zero FLOP, Zero Parameter Alternative to Spatial Convolutions

常规卷积

 Depthwise Separable Convolution


 pointwise Convolution

 Shift操作可看做是Depthwise Convolution的一种特殊情况

 通道域是空间域信息的层次化扩散

因此通过设置不同方向的shift卷积核,可以将输入张量不同通道进行平移,随后配合1x1卷积实现跨通道的信息融合,即可实现空间域和通道域的信息提取。

使用一个类似三明治的体系结构,2个1×1卷积核一个Shift操作,来近似一个K×K卷积

Shift操作进一步扩展到不同的变体:active Shift、sparse Shift、partial Shift


Shift-ViT

 总体结构

作者遵循Swim Transformer的体系结构,给定一个形状H×W×3的输入图像,首先将图像分割成不重叠的patches。patch-size为4×4像素,因此patch partition的输出值为H/4×W/4 token,其中每个token的通道大小为48。

之后模块分为四个stage,每个stage包括2个部分:嵌入生成堆叠shift块。 

对于第一阶段的嵌入生成,使用一个线性投影层将每个token映射成一个通道大小为c的嵌入。

对于其余阶段,通过kernel_size为2×2的卷积来合并相邻的patch。patch合并后,输出的空间大小是下采样的一半,而通道大小是输入的2倍,即从C到2C。

每个stage,shift块的数量可以是不同的,分别记为N1、N2、N3、N4。在out实现中,仔细选择了Ni的值,从而使整个模型与Baseline Swin Transformer模型共享相似数量的参数。


Shift Block

由三个顺序堆叠的组件组成:Shift操作、层归一化和MLP网络。

Shift操作在CNN中已经得到了很好的研究,可以由许多设计选择,如active Shift、sparse Shift。在本工作中遵循TSM中的partial Shift操作。

shift building block 

给定一个输入张量,一小部分的通道会沿着空间的四个方向移动,即左、右、上、下,而其余的通道保持不变。在Shift之后,超出范围的像素被简单地删除,空白像素被填充为0。本论文中,Shift步长设置为1。

形式上,假设输入特征z的形状为H×W×C,其中C为通道数,H和W分别为空间高度和宽度。输出特性z与输入特性具有相同的形状,可以写成:

其中γ是一个比率因子来控制通道的百分比。大多数实验中,γ的值设置为1/12。

Pytorch实现 

Shift操作不包含任务参数或算术计算,仅需内存复制。因此,Shift操作效率高,易于实现。与自注意力机制相比,Shift操作对TensorRT等深度学习推理库更干净、整洁、更友好。

Shift块的其余部分与ViT的标准构建块相同。MLP网络有2个线性层,第一个方法将输入将输入特征的通道增加到一个更高的维度,例如从C到τC。之后,第2个线性层将高维特征投影到c的原始通道大小中。在这两层之间,采用GELU作为非线性激活函数。


架构变体

为了与Baseline Swin Transformer进行比较,作者还构建了多个具有不同数量参数和计算复杂度的模型。

引入了Shift-T(iny)、Shift-S(mall)、Shift-B(ase)变种,分别对应swin-t、swin-s、swin-b。

Shift-T是最小的,与Swin-T和ResNet-50的大小相似,Shift-S和Shift-B大约比shifvit复杂2倍和4倍。

基本嵌入通道C的详细配置和块数{Ni}如下:

 除了模型尺寸之外,作者还仔细观察了模型的深度,在提出的模型中,几乎所有的参数都集中在MLP部分,因此可以控制MLP  τ的扩展比来获得更深的网络深度。如果未指定,则将展开比率τ设置为2。消融分析表明,更深层次的模型获得了更好的性能。



三、实验


消融实验

之前的实验证明了本文的设计原则,即大的模型深度可以弥补每个构件的不足。通常,在模型深度和构建块的复杂性之间存在一种权衡,有了固定的计算预算,轻量级的构建块可以享受更深层次的网络工作架构。

为了进一步研究这种权衡,作者提供了一些具有不同深度的Shift-ViT模型。对于ShiftViT,大多数参数存在于MLP部分。作者可以通过改变MLP τ的扩展比来控制模型深度。如表中选择Shift-T的扩展比来控制模型深度。选择Shift-T作为基线模型。研究了在1到4范围内的扩张比τ。指的注意的是不同条目的参数和FLOPs几乎是相同的。

从表中,可观察到一个趋势,即模型越深入,性能越好。当ShiftViT的深度增加到225时,在分类、检测、分割上分别比57层的分类、检测、分割的绝对增益提高了0.5%、1.2%、2.9%。在这种趋势支持了猜想,即强大而沉重的模块,如attention,可能不是Backbone的最佳选择。

1、Percentage of shifted channels

Shift操作只有一个超参数,即位移信道的百分比。缺省情况下,设置为33%。将移动通道的比例分别设置为20%、25%、33%和50%。

表明最终性能对这个超参数不是很敏感。与最佳设置相比,移动25%的通道指挥导致0.3%的绝对损失。在合理的范围内(25%~50%),所有的设置都达到了比Swin-T Baseline更好的精度。

2、Shifted pixels

在Shift操作中,一小部分通道沿4个方向移动一个像素。为了进行全面的探索,还尝试了不同的移动像素。当偏移的像素为0,即没有发生偏移时,ImageNet数据集的Top-1精度仅为72.9%,明显低于本文的Baseline(81.7%)。

没有移动意味着不同的空间位置之间没有相互作用,此外,如果在shift操作中移动两个像素,模型在ImageNet上达到80.2%的top-1精度,这也比默认设置略差。

3、ViT-style training scheme

Shift操作在cnn中得到很好的研究,但没有令人印象深刻。Shift-Res-Net-50在ImageNet上的准确率仅为75.6%,远低于81.7%,因此是什么对ViT有利?

作者怀疑原因可能在于虚拟现实式的训练计划。具体来说,大多数现有的ViT变体遵循DeiT中的设置,这与训练cnn的标准管道有很大不同。

例如:ViT-style方案采用AdamW优化器,在ImageNet上训练时长为300epoch.相比之下,cnn风格的方案更倾向于SGD优化器,训练计划通常只有90epoch。由于本文的模型继承了ViT-style训练方案,观察这些差异如何影响性能是很有趣的。

由于资源有限,不能完全对齐所有设置之间的ViT-style和CNN-style。因此选择4个任务可以来启示的重要因素:优化器、激活函数、规范化层、训练计划。表中可看到这些因素显著影响准确性,尤其是训练进度。这些结果表明,ShiftViT良好的性能部分是由ViT-style训练方案带来的。

同样,ViT的成功也可能与其特殊的训练计划有关。在今后的ViT研究中应该认真对待这一问题。


ImageNet and COCO

总的来说,本文的方法可以实现与最先进技术相媲美的性能。对于基于ViT和基于MLP的方法,其最佳性能约为83.5%,而本文模型达到了83.3%的精度。对于基于CNN的方法,本文模型略差,但是因为EfficientNet采用更大的输入大小,所以比较不完全公平。

与2个工作S^2-MLP和AS-MLP,这两部分的工作在移Shift操作上由相似的想法,但是在构建块中引入了一些辅助模块,例如投影前层和投影后层。本文的表现略好于这两项工作,证明了设计选择仅仅用一个简单的Shift操作就可以很好的搭建Backbone。

除了分类任务外,目标检测任务和语义分割任务也可以观察到相似的性能轨迹。值得注意的是,一些基于ViT和基于MLP的方法不容易扩展到如此密集的预测任务,因为高分辨率的输入产生了难以负担的计算负担。由于Shift操作的高效率,本文的方法不存在这种障碍。


推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 由中科院自动化所、中科院大学及南昌大学联合研究提出了一种新颖的双路径生成对抗网络(TP-GAN),该技术能通过单一侧面照片生成逼真的正面人脸图像,显著提升了不同姿态下的人脸识别效果。 ... [详细]
  • 本文介绍了Kettle资源库的基本概念、类型及其管理方法,同时探讨了Kettle的不同运行方式,包括图形界面、命令行以及API调用,并详细说明了日志记录的相关配置。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 本文介绍了如何在 C# 和 XNA 框架中实现一个自定义的 3x3 矩阵类(MMatrix33),旨在深入理解矩阵运算及其应用场景。该类参考了 AS3 Starling 和其他相关资源,以确保算法的准确性和高效性。 ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • 本文探讨了如何使用pg-promise库在PostgreSQL中高效地批量插入多条记录,包括通过事务和单一查询两种方法。 ... [详细]
  • 新手指南:在Windows 10上搭建深度学习与PyTorch开发环境
    本文详细记录了一名新手在Windows 10操作系统上搭建深度学习环境的过程,包括安装必要的软件和配置环境变量等步骤,旨在帮助同样初入该领域的读者避免常见的错误。 ... [详细]
  • iOS绘制就是采集点,贝塞尔曲线得到形状,绘图上下文去渲染出来AsanaDrawsana图形库,设计的挺好他可以画多种图形, ... [详细]
  • 浪潮AI服务器NF5488A5在MLPerf基准测试中刷新多项纪录
    近日,国际权威AI基准测试平台MLPerf发布了最新的推理测试结果,浪潮AI服务器NF5488A5在此次测试中创造了18项性能纪录,显著提升了数据中心AI推理性能。 ... [详细]
  • 强人工智能时代,区块链的角色与前景
    随着强人工智能的崛起,区块链技术在新的技术生态中扮演着怎样的角色?本文探讨了区块链与强人工智能之间的互补关系及其在未来技术发展中的重要性。 ... [详细]
author-avatar
小子少耍酷10
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有