关注公众号,发现CV技术之美

 写在前面

目前,将基于视觉任务的Transformer结构正在快速发展。虽然一些研究人员已经证明了基于Transformer的模型具有良好的数据拟合能力,但仍有越来越多的证据表明这些模型存在过拟合,特别是在训练数据有限的情况下。

本文通过逐步改变模型结构,将基于Transformer的模型逐步过渡到基于卷积的模型。在过渡过程中获得的结果,为提高视觉识别能力提供了有用的信息。

基于这些观察结果,作者提出了一种名为Visformer(Vision-friendly Transformer)的新架构 。在相同的计算复杂度下,Visformer在ImageNet分类精度方面,优于基于Transformer和基于卷积的模型,当模型复杂度较低或训练集较小时,优势变得更加显著。

 1. 论文和代码地址

Visformer: The Vision-friendly Transformer

论文:https://arxiv.org/abs/2104.12533v4

代码:https://github.com/danczs/Visformer

 2. Motivation

在过去的十年里,卷积在视觉识别的深度学习模型中起着核心作用。当源自自然语言处理的Transformer被应用到视觉场景中时,这种情况就开始发生改变。ViT模型表明,一张图像可以被分割成多个patch网格,Transformer直接应用在网格上,每个patch都可以看做是一个视觉单词。

ViT需要大量的训练数据(ImageNet-21K或JFT-300M数据集),因为Transformer建模了长距离的注意和交互,因此容易发生过拟合。后面也有一些工作基于ViT继续做改进,但是效果依旧不佳,特别是在训练数据有限的情况下。

另一方面,在大量数据训练下,视觉Transformer可以获得比基于卷积的模型更好的性能。也就是说,视觉Transformer具有更高的性能“上限”,而基于卷积的模型性能“下界”更好。上界和下界都是神经网络的重要特性。上界是实现更高性能的潜力,下界使网络在有限数据训练或扩展到不同复杂性时表现更好。

基于对Transformer-based和基于卷积的网络的下界和上界的观察,本文的主要目的是探究差异背后的原因,从而设计出具有较高下界和上界的网络。基于Transformer的网络和基于卷积的网络之间的差距可以在ImageNet上通过两种不同的训练设置来揭示。

第一个是基本设置(base setting) 。它是基于卷积的模型的标准设置,即训练周期更短,数据增强只包含基本的操作,如random-size cropping、 flipping。将此设置下的性能称为基本性能(base performance)

另一个设置是精英设置(elite setting) ,它对基于Transformer的模型进行了专门的调整,即训练周期更长,数据增强更强( RandAugment、CutMix等)。将此设置下的性能称为精英性能(elite performance)

在本文中,作者以DeiT-S和ResNet-50作为基于Transformer和基于卷积的模型的代表。在不同数量训练数据和训练设置下的两个模型结果如上表所示。可以看出,Deit-S和ResNet-50采用了相近的FLOPs和参数。

然而,在这两种设置下,它们在完整数据上的表现非常不同。Deit-S具有更高的精英性能,但从精英到基础会导致DeiT-S的精度下降10%以上。ResNet-50在基础设置下表现得要好得多,但对精英设置的提升仅为1.3%。这促使作者去研究这些模型之间的区别。

在这两种设置下,可以大致估计模型的下界和上界。作者使用的方法是执行一步一步的过渡操作,以逐步将一个模型变成另一个模型,这样就可以进一步认知这两个网络中的模块和设计的特性。作者将转换的过程分为8个步骤。

具体来说,从DeiT-S到ResNet-50,应

(i)使用全局平均池化 (非分类token)

(ii)引入逐步的patch embedding

(iii)采用多阶段 的主干网络设计

(iv)使用Batch Norm (非Layer Norm)

(v)利用3×3卷积

(vi)放弃position encoding 方案

(vii)用卷积替换Self-Attention

(viii)调整网络形状 (如深度、宽度等)

在深入分析了结果背后的原因后,作者采用了所有有助于视觉识别的因素,并提出Visformer(Vision-friendly Transformer)。

如上表所示,在ImageNet分类评估上,Visformer比DeiT和ResNet的性能更好。在精英设置下,在类似的模型复杂度下,Visformer-S模型分别比DeiT-S和ResNet-50高出2.12%和3.46%。

当使用10%的类和数据训练时,Visformer-S甚至表现优于ResNet-50,这揭示了Visformer-S的高性能下界。此外,对于tiny模型,Visformer-ti的性能超过Deit-Ti 6%以上。

 3. 方法

3.1.  基于Transformer和基于卷积的视觉识别模型

识别是计算机视觉中的基本任务。本文主要考虑图像分类,其中输入图像通过深度网络传播,得到输出类标签。大多数深度网络都是以分层的方式设计的。

在本文中,作者考虑了两种结构:Transformer和卷积。卷积用于捕获可重复的局部特征,它使用许多可学习的卷积核来计算输入对不同模式的响应。在本文中,作者将研究限制在残差块(卷积+残差)内,并在相邻的卷积层之间插入非线函数(激活函数、normalization)。

另一方面,Transformer起源于自然语言处理,其目的是捕获任何两个token之间的关系,即使它们彼此相距很远。这是通过为每个token生成三个特征来实现的,分别称为query、key和value。

然后,将每个token的响应计算为所有value的加权和,其中权重由其query与相应key之间的相似性决定。这个操作被称为多头自注意(MHSA)。Transformer Block中还包含其他操作,包括归一化和线性映射。

在本文中,作者考虑DeiT-S和ResNet-50分别作为基于Transformer和基于卷积的模型的代表。除了基础架构之外,这两个网络在设计上也有一些不同,比如ResNet-50有一些向下采样层,将模型划分为多个阶段,但在整个DeiT-S中,token的数量保持不变。

3.2.基础(base)和精英(elite)设置

虽然DeiT-S的准确率为80.1%,高于ResNet-50的78.7%,但我们可以注意到DeiT-S显著改变了训练策略,例如,训练周期的数量增加了3×以上,数据增强变得更强。

有趣的是,DeiT-S似乎严重依赖于精心调整的训练策略,其他基于Transformer的模型,包括ViT和PIT,也说明了它们对其他因素的依赖性,例如,大规模的训练集。接下来,作者对这一现象进行了全面的研究。

作者在ImageNet数据集上评估了所有的分类模型,该数据集有1K类、1.28万训练图像和50K测试图像。每个类的训练图像的数量大致相同。

对每个识别模型的优化都有两个设置。

第一个为基础设置 ,并被基于卷积的网络广泛采用。使用SGD优化器进行90个epoch的训练。batch大小为512的学习速率从0.2开始,然后随着余弦退火函数逐渐衰减到0.00001。采用随机裁剪和翻转等简单的数据增强策略。

第二种为精英设置 ,它已被验证可以有效地改进基于Transformer的模型。batch大小为512,优化器为初始学习率为0.0005的Adamw优化器。为了避免过拟合,采用了更强的数据增强策略:Mixup、Mixup、 Random Erasing、Repeated Augmentation等等。相应地,训练持续300个epoch,比基础设置的时间要长得多。

模型在这两个设置下得到的分类精度分别称为基础性能精英性能

3.3.从DeiT-S到ResNet-50的过渡

本节显示了从DeiT-S到ResNet-50转换的分解过程,共有八个步骤。关键步骤如上图所示。

分解过程中得到的网络性能如上表所示。

3.3.1使用全局平均池化来替换分类token

转换的第一步是删除分类token,并向基于Transformer的模型添加全局平均池化。与基于卷积的模型不同,Transformer通常会在输入中添加一个分类token,并利用相应的输出token来执行分类。相比之下,基于卷积的模型通过空间维度的全局平均池化获得分类特征。

通过删除分类token,Transformer可以等价地转换为卷积版本。patch embedding操作等价于其卷积核大小和步长是patch大小的卷积。MHSA和MLP块中的线性层等价于1×1卷积。(如上图所示)

通过这些操作得到Net1,这个结构的performance如上表所示。可以看出,这种转变可以极大地提高基础性能。作者进一步的实验表明,添加全局池化本身可以将基础性能从64.17%提高到69.44%。此外,这种转变可以略微提高精英性能。

3.3.2用 step-wise patch embedding替换patch flattening

DeiT和ViT模型直接用patch embedding层对图像进行编码,这相当于核大小和步幅等于patch size的卷积。然而,patch flatten操作会损害每个patch内的位置信息,使得提取patch内的信息变得更加困难。为了解决这一问题,现有的方法通常在patch embedding之前附加一个预处理模块。这个预处理模块可以使用卷积网络或者Transformer。

作者采用有一个相当简单的解决方案,即将大patch embedding分解为逐步的小patch embedding。具体来说,作者首先将ResNet中的stem层添加到Transformer上,这是一个7×7的卷积层,步幅为2。

由于原始DeiT模型中的patch大小为16,所以还需要在stem层后embed 8×8的patch。作者将8 × 8 patch embedding分成了4 × 4 embedding和 2 × 2 embedding,由4×4和2×2的卷积层实现。

此外,作者还添加了一个额外的2×2卷积,以便在分类前进一步将patch大小从16×16进一步升级到32×32。这些patch embedding层也可以看作是下采样层,在每次下采样的时候,作者将通道数增加了一倍。

通过利用step-wise patch embedding,patch内的先验位置被编码到特征中。从上表可以看出,Net2可以显著提高网络的基础性能和精英性能。这表明,在基于Transformer的模型中,step-wise patch embedding是比更大的patch embedding更好的选择。此外,这种转换具有计算效率,只引入了大约4%的额外FLOPs。

3.3.3多阶段设计

在本节中,作者将网络分成了多阶段。同一阶段的block具有相同的特征分辨率。由于step-wise patch embedding已经在embedding的时候将网络分成了不同的阶段,因此本节中的转换是将Transformer Block重新分配到不同的阶段,如上图所示(中)。

在这种转变下,基础性能得到了进一步的提高。这种设计利用了图像局部先验,因此在轻量的数据增强下模型能表现得更好。然而,该网络的精英性能明显下降。为了研究原因,作者进行了消融实验,发现 self-attention在很大的分辨率下不能很好地工作。作者推测大分辨率特征包含太多的token,而self-attention很难学习它们之间的关系。

3.3.4用LayerNorm替换BatchNorm

与BatchNorm相比,LayerNorm与Batch大小无关,对特定任务更友好,而BatchNorm在适当的Batch大小下通常可以获得更好的性能。作者用BatchNorm替换所有的LayerNorm,结果表明BatchNorm的性能优于LayerNorm。它可以提高网络的基础性能和精英性能。

此外,作者还尝试在Net2中添加BatchNorm,以进一步提高精英性能。然而,该Net2-BN网络存在收敛性问题。这就解释了为什么BatchNorm在纯Self-Attention模型中没有得到广泛的应用。但对于本文的混合模型,BatchNorm是提高性能的可靠方法。

3.3.5引入3×3卷积

由于网络的token以特征图的形式存在,因此引入核大小大于1×1的卷积是很自然的。大核卷积的具体含义如上图的右下角所示。全局 self-attention试图建立所有token之间的关系时,而卷积将局部邻域内的token联系起来。

因此,作者选择在feed-forward中的1×1卷积之间插入3×3卷积,从而将MLP块转换为bottleneck块,如上图的右上角所示。所获得的bottleneck块与ResNet-50中的bottleneck块相似,但它们的bottleneck比例不同。作者在所有三个阶段中都用bottleneck块替换MLP块。

3×3卷积可以利用图像中的局部先验,进一步提高了网络的基础性能。基础性能(77.37%)与ResNet-50(77.43%)相当。但精英性能下降了0.82%。作者进行了更多的实验来研究其原因——没有向所有阶段添加3×3卷积,而是分别向不同阶段插入3×3卷积。

作者观察到3×3卷积只在高分辨率特征上有效。作者推测,利用局部关系对于自然图像中的高分辨率特征是很重要的。然而,对于低分辨率的特征,在配备了全局self-attention时,局部卷积是不重要。

3.3.6移除position embedding

在基于Transformer的模型中,position embedding对token间的位置信息进行了编码。在本节的过渡网络中,作者删除了position embedding。

结果如上表所示,基础性能几乎没有变化,精英性能略有下降(0.29%)。作为比较,作者测试删除了DeiT-S的position embedding,精英性能显著下降了3.95%。

结果表明,position embedding在过渡模型中的作用不如基于纯Transformer的模型重要。因为过渡模型中的卷积操作已经利用了位置信息,这也解释了为什么基于卷积的模型不需要position embedding。

3.3.7用feed-forward来代替self-attention

在本节中,作者删除每个阶段的self-attention,而使用feed-forward层,使网络成为一个纯基于卷积的网络。所得网络(Net7)的性能如上表所示。基于纯卷积的网络在基础性能和精英性能都要差得多。

这表明,self-attention能够驱动神经网络获得更高的精英性能,并且不是导致ViT或DeiT的基础性能差的原因。因此可以设计一个具有高基础性能和精英性能的self-attention网络。

3.3.8调整网络的形状

Net7和ResNet-50之间仍有许多区别。但是,这两个网络都是基于卷积的网络。这两种网络之间的性能差距可以归因于网络架构设计策略。

上表的结果表明,ResNet-50具有更好的网络架构,并且可以在更少的FLOPs下表现得更好。然而,ResNet-50的精英表现更差。这表明,基本性能和精英性能之间的不一致性不仅存在于self-attention模型中,而且也存在于基于纯卷积的网络中。

3.4. Visformer

作者的目标是建立一个具有高基础性能和精英性能的网络。过渡研究表明,基础性能和精英性能之间存在一定的不一致性。

第一个问题是阶段性设计,它提高了基本性能,但降低了精英性能 。为了研究其原因,作者将Net5的每个阶段的bottleneck块分别替换为Self-Attention块,从而估计不同阶段的Self-Attention的重要性。

结果如上表所示,在所有三个阶段中,Self-Attention的取代都降低了基础性能和精英性能。此外,取代第一阶段的Self-Attention几乎对网络性能没有影响。更大的分辨率包含更多的token,作者推测Self-Attention要学习它们之间的关系更困难,因此低分辨率的Self-Attention比高分辨率的Self-Attention发挥着更重要的作用。

第二个问题是在前馈块中添加3×3卷积,这使精英性能降低了0.82% 。基于Net4,作者在每个阶段分别用bottleneck块替换MLP块。如上表所示,尽管所有阶段都在基础性能上得到了改进,但只有第一阶段精英性能得到提升。

当Self-Attention在这些位置上已经有了一个全局视图时,3×3卷积对于其他两个低分辨率的阶段是不必要的。在高分辨率阶段,Self-Attention难以处理所有的token,3×3卷积可以提供改进。

结合上述观察结果,作者提出了Visformer,结构如上表所示。

 4.实验

4.1. Comparison to the state-of-the-arts

上表比较了Visformer和DeiT的性能,在基础设置和精英设置下,Visformer都优于DeiT,并且在基础设置下优势更显著。

上表比较了Visformer和其他Transformer-based模型性能。

上表比较了Visformer和CNN模型性能。

4.2. Training with limited data

上表比较了在有限数据集下,三种模型的对比,可以看出Visformer都取得了不错的结果。

 5. 总结

本文提出了一种的有利于视觉识别Transformer模型——Visformer。作者使用两个设置,基础和精英设置,来评估每个模型的性能。为了研究基于Transformer的模型和基于卷积的模型表现不同的原因,作者分解了这些模型之间的差距,并设计了一个八步过渡步骤,以研究DeiT-S和ResNet-50之间的差距。

通过吸收优点并丢弃缺点,作者得到了同时优于DeiT-S和ResNet-50的Visformer-S模型。当被转移到一个紧凑的模型和在小数据集上进行评估时,Visformer也展现出了不错的性能。

▊ 作者简介

研究领域:FightingCV公众号运营者,研究方向为多模态内容理解,专注于解决视觉模态和语言模态相结合的任务,促进Vision-Language模型的实地应用。

知乎/公众号:FightingCV

END,入群????备注:Transformer

对视觉任务更友好的Transformer,北航团队开源Visformer!相关推荐

  1. NIPS'22 | USB: 统一、任务多样化、对学术界更友好的半监督学习算法库

    每天给你送来NLP技术干货! 来自:王晋东不在家 当使用监督学习(Supervised Learning)对大量高质量的标记数据(Labeled Data)进行训练时,神经网络模型会产生有竞争力的结果 ...

  2. 更深、更轻量级的Transformer!Facebook提出:DeLighT

    点击上方"CVer",选择加"星标"置顶 重磅干货,第一时间送达 本文转载自:AI人工智能初学者 DELIGHT: DEEP AND LIGHT-WEIGHT ...

  3. 栅格布局一般怎么用_合理设置栅格化与比例 让版式布局更友好

    合理设置栅格化与比例 让版式布局更友好 十二月 31, 2015 评论 (3) Sponsor 本文不适合采用天才设计(Genius Design)方法的人士. 有一种"奇怪的"现 ...

  4. 调整ViewState的位置,让你的asp.net页面对搜索引擎更友好

    在asp.net页面中经常会出现一些ViewState的html标记,也许某些时候你会禁用ViewState,但是某些情况下你不得不使用它--因为它的便捷性,但是由于在默认情况下,ViewState的 ...

  5. 网络推广外包浅析为什么网络推广外包中网站优化比百度竞价更友好?

    在当前互联网营销市场竞争中,企业网站想要获取自然排名非常不易,大部分网站都是通过网站优化技术或百度竞价等方式实现企业网站中的排名.随着互联网市场中关键词检索竞争日趋激烈,导致网站排名出现两种结果,一是 ...

  6. ACL 2020 | 基于不同硬件搜索更好的Transformer结构

    论文标题: HAT: Hardware-Aware Transformers for Efficient Natural Language Processing 论文作者: Hanrui Wang ( ...

  7. Google | 突破瓶颈,打造更强大的Transformer

    一只小狐狸带你解锁炼丹术&NLP秘籍 作者:苏剑林 (来自追一科技,人称"苏神") 前言 <Attention is All You Need>一文发布后,基于 ...

  8. mysql mongodb 事务_MySQL PK MongoDB:多文档事务支持,谁更友好?

    原标题:MySQL PK MongoDB:多文档事务支持,谁更友好? 作者介绍 贺春旸,凡普金科DBA团队负责人,<MySQL管理之道:性能调优.高可用与监控>第一.二版作者,曾任职于中国 ...

  9. 《更友好的网站url设计》

    url重写是将web请求重定向到指定url的过程,比如:用户输入:/message/page/5 重定向到 message.aspx?page=5,这样的好处是方便记忆,也更有利于SEO优化等,通过使 ...

最新文章

  1. 【蓝桥java】递归基础之输出连续数字
  2. Ubuntu18.04安装g2o,及问题解决_HyperZhu的博客-CSDN博客_ubuntu18.04安装g2o
  3. BC547 晶体管初步测试
  4. 广州网络推广介绍有关单页面的优化技巧!
  5. What?Java这么神奇的lambda表达式
  6. dll动态库调用约定
  7. mysql dba管理_Mysql DBA 高级运维学习之路-mysql数据库常用管理应用
  8. VC++ 6.0 C8051F340 USB PC侧通信 Demo
  9. python大神交流网站_学习Python必去的8个网站
  10. 好云推荐官丨飞天加速之星怎样选择云服务器ECS?
  11. 去哪儿-13-city-vuex
  12. 大数据_Flink_数据处理_资源的分配和并行度测试---Flink工作笔记0013
  13. java jdk1.8 API
  14. CentOS 7服务器上使用Nginx+phpMyAdmin
  15. python ttk.notebook_python – 无法在ttk.Notebook中看到所有选项卡
  16. Theano学习笔记:Theano的艰辛安装体验
  17. 安全方面的文章+VC知识库
  18. windows 中获取字体文件名
  19. OpenG数组讲解之Filter 1D Array。
  20. 【PS图像处理】修改图层中文字图形的颜色

热门文章

  1. 网络爬虫模拟登陆获取数据并解析实战(二)
  2. gstreamer读取USB摄像头H264帧并用rtmp推流
  3. 摄影测量--点位精度评定
  4. Goalng小demo二:客户信息关系系统
  5. IntelliJ IDEA常用快捷键——基于Eclipse
  6. STM32 - 定时器的设定 - 基础- 0D - Timer synchronization chaining - 主从模式下 - 定时器同步和级联控制 - 级联启动定时器
  7. 数组翻转_LeetCode刷题实战151:翻转字符串里的单词
  8. 产品经理必懂的技术那点事儿 pdf_产品经理10大基础技能(5):读透神经网络和机器学习...
  9. 小米bl未解锁变砖了如何刷机_如何安装MIUI 10
  10. c#求三角形面积周长公式_C#源代码—三角形面积、圆的面积