©作者 |小欣

CNN广泛应用于计算机视觉的各种任务中,比如分类,检测,分割,CNN通过共享卷积核提取特征,减少网络参数数量,提高模型效率,另一方面CNN具有平移不变性,即无论特征被移动到图像的哪个位置,网络都能检测到这些特征。

尽管CNN存在很多优势,但是其感受野通常很小,不利于捕获全局特征。

视觉Transformer由于能够捕获一张图片的全局信息,因此在许多视觉任务中超越许多CNN结构。

ViT是第一个替代CNN,使用纯Transformer的结构,输入一张224×224×3的图片,ViT将其分成14×14=196个非重叠的patches,每个patch的大小是16×16×3,然后将这些patch输入到堆叠的多个transformer编码器中。

CNN的成功依赖于其两个固有的归纳偏置,即平移不变性和局部相关性,而视觉Transformer结构通常缺少这种特性,导致通常需要大量数据才能超越CNN的表现,CNN在小数据集上的表现通常比纯Transformer结构要好。

CNN感受野有限导致很难捕获全局信息,而Transformer可以捕获长距离依赖关系,因此ViT出现之后有许多工作尝试将CNN和Transformer结合,使得网络结构能够继承CNN和Transformer的优点,并且最大程度保留全局和局部特征。

Transformer是一种基于注意力的编码器-解码器结构,最初应用于自然语言处理领域,一些研究最近尝试将Transformer应用到计算机视觉领域。

在Transformer应用到视觉之前,卷积神经网络是主要研究内容。受到自注意力在NLP领域的影响,一些基于CNN的结构尝试通过加入自注意力层捕获长距离依赖关系,也有另外一些工作直接尝试用自注意力模块替代卷积,但是纯注意力模块结构仍然没有最先进的CNN结构表现好。

01 卷积中引入Transformer

Transformer中有两个主要部分,多头自注意力层和全连接层,最近,Cordonnier et al.在研究中表明卷积可以通过使用多头自注意力层达到同样的效果。

Transformer 理论上比CNN能得到更好的模型表现,但是因为计算全局注意力导致巨大的计算损失,特别是在浅层网络中,特征图越大,计算复杂度越高,因此一些方法提出将Transformer插入到CNN主干网络中,或者使用一个Transformer模块替代某一个卷积模块。

BoTNet.[1] 通过使用Multi-Head Self-Attention(MHSA)替代ResNet Bottleneck中的3×3卷积,其他没有任何改变,形成新的网络结构,称为Bottleneck Transformer,相比于ResNet等网络提高了在分类,目标检测等任务中的表现,在ImageNet分类任务中达到84.7%的准确率,并且比EfficientNet快1.64倍。

BoTNet中使用的MHSA和Transformer中的MHSA有一定的区别,首先,BoTNet中使用Batch Normalization,而Transformer中使用Layer Normalization,其次,Transformer中使用一个在全连接层中使用一个非线性激活,BoT(Bottleneck Transformer)模块中使用三个非线性激活,最后Transformer中的MHSA模块包含一个输出映射,而BoT中的MHSA没有。

02 Transformer中引入CNN

CNN有局部性和平移不变性,局部性关注特征图中相邻的点,平移不变性就是对于不同区域使用相同的匹配规则,虽然CNN的归纳偏差使得网络在少量数据上表现较好,但是这也限制了在充分数据上的表现,因此有一些工作尝试将CNN的归纳偏差引入Transformer加速网络收敛。

DeiT.[2] 为了减小ViT对于大量数据的依赖,Touvron et al.提出了Data-efficient image Transformer(Deit),提高网络在小量数据上的表现,通过使用数据增强和正则化技术,与此同时还引入了蒸馏策略,即使用一个教师网络去指导学生网络,通常来说使用CNN要比Transformer作为教师模型效果要好,CNN模型可以将其归纳偏置引入到Transformer。

作者使用两种蒸馏方式,一种是硬蒸馏,一种是软蒸馏,软蒸馏通过计算学生模型和教师模型分别经过softmax之后的KL散度,硬蒸馏通过使用教师模型的预测作为真实标签。

DeiT中引入了一个新的distillation token,和class token的作用类似,和其他token之间通过自注意力交互,作者发现class token和distillation token会收敛于不同的向量,余弦距离为0.06,说明这两个token希望得到相似但不相同的目标,为了证明distillation token的有效性是由于知识蒸馏的作用,通过对比实验将distillation token换成class token,就是使用两个class token,最终效果不如加入distillation token。

对比卷积神经网络和Transformer在Imagenet上的分类表现:

ConViT.[3] 通过引入gated positional self-attention(GPSA)层模仿卷积层带来的局部性,将GPSA替代一部分 self-attention层,然后每一个注意力头通过调整可学习的门控参数来调整对于位置信息和上下文信息的关注程度。GPSA层的输出可以表示为:

其中,

是一个可学习的向量去模仿卷积,

是一个固定的相对位置编码,

是一个可学习门控参数去调整对上下文和位置信息的关注程度。

Cordonnier et al.[4] 在论文中证明多头自注意机制可通过调整头的数量和可学习的位置编码来近似达到卷积层的效果。

对比ConViT和DeiT在Imagenet-1k上的表现,以及不同大小训练集对结果的影响

CeiT.[5] 改变了patch到token的方式,先将图片通过卷积和最大池化再切分成patch,最开始对图片使用卷积操作可以捕获图片的低级特征,即I2

并且使用了Layer-wise class token Attention(LCA)去结合多层特征,提出了Locally-Enhanced Feed-Forward Netword(LeFF),将最开始的全连接层(Feed-forward network)替换成了LeFF层,MSA(Multi-head self-attention)层保持不变,用于捕获全局信息,LeFF层用于捕获局部信息,最终的效果要比DeiT好。

Early Conv.[6] Xiao et al.通过使用多个步长为2的3×3卷积核替代ViT中最初的stem(步长为16的16×16卷积),使得网络在ImageNet-1k上取得1-2%的提高,并且稳定性和泛化能力在下游任务中都有所提高,对于学习率的选择和优化器的选择没有那么敏感,并且收敛速度也更快。

这篇文章表面在ViT模型中使用一个小的卷积核相比于最初的ViT使得模型有更好的泛化能力。

CoAtNet.[7] Dai et al. 提出a Convolution and Attention NetWord(CoAtNet),通过引入深度卷积到注意力模块中,深度卷积中一个卷积核负责一个通道,一个通道只被一个卷积核计算,相比于正常卷积,其参数和运算成本相对比较低,在浅层网络中堆叠卷积层,比较了不同的堆叠方式,比如C-C-C-T,C-T-T-T,C-C-C-T,其中C代表卷积模块,T代表Transformer模块。

通过综合考虑模型泛化能力,迁移能力,模型在训练集上的表现,最后使用C-C-T-T 这种堆叠方式。在没有额外训练数据的情况下,CoAtNet达到了86%的准确率,在ImageNet-21K上预训练时,达到了88.56%的准确率。

参考文献

[1] A. Srinivas, T.-Y. Lin, N. Parmar, J. Shlens, P. Abbeel, and A. Vaswani, “Bottleneck transformers for visual recognition.” in Proc. CVPR, 2021.

[2] H. Touvron, M. Cord, D. Matthijs, F. Massa, A. Sablayrolles, and H. Jegou, “Training data-effificient image transformers & distillation through attention,” in Proc. ICLR, 2021.

[3] S. d’Ascoli, H. Touvron, M. Leavitt, A. Morcos, G. Biroli, and L. Sa gun, “Convit: Improving vision transformers with soft convolutional inductive biases,” in Proc. ICLR, 2021.

[4] Cordonnier, J.-B., Loukas, A., and Jaggi, M. On the relationship between self-attention and convolutional layers. arXiv preprint arXiv:1911.03584, 2019.

[5] K. Yuan, S. Guo, Z. Liu, A. Zhou, F. Yu, and W. Wu, “Incorporating convolution designs into visual transformers,” in Proc. ICCV, 2021.

[6] T. Xiao, M. Singh, E. Mintun, T. Darrell, P. Dollar, and R. B. Girshick, “Early convolutions help transformers see better,” ArXiv, vol. abs/2106.14881, 2021.

[7] Z. Dai, H. Liu, Q. V. Le, and M. Tan, “Coatnet: Marrying convolution and attention for all data sizes,” arXiv preprint arXiv:2106.04803, 2021.

私信我领取目标检测与R-CNN/数据分析的应用/电商数据分析/数据分析在医疗领域的应用/NLP学员项目展示/中文NLP的介绍与实际应用/NLP系列直播课/NLP前沿模型训练营等干货学习资源。

CNN和Transformer相结合的模型相关推荐

  1. 华为诺亚ViG架构媲美CNN、Transformer,图神经网络也能用作CV骨干模型

    华为诺亚实验室的研究员发现图神经网络(GNN)也能做视觉骨干网络.将图像表示为图结构,通过简洁高效的适配,提出一种新型视觉网络架构 ViG,表现优于传统的卷积网络和 Transformer.在 Ima ...

  2. 图神经网络也能用作CV骨干模型,华为诺亚ViG架构媲美CNN、Transformer

    来源丨机器之心 华为诺亚实验室的研究员发现图神经网络(GNN)也能做视觉骨干网络.将图像表示为图结构,通过简洁高效的适配,提出一种新型视觉网络架构 ViG,表现优于传统的卷积网络和 Transform ...

  3. NeurIPS2021 港大腾讯AI Lab牛津提出:CARE,让CNN和Transformer能在对比学习中“互帮互助”!...

    关注公众号,发现CV技术之美 本文分享NeurIPS 2021 论文『Revitalizing CNN Attentions via Transformers in Self-Supervised V ...

  4. 深度学习基础笔记(MLP+CNN+RNN+Transformer等等)

    提示:本人还在学习当中,所作笔记仅供大家参考,若有问题欢迎大家指出! 目录 专业词汇 基础神经网络 感知机 多层感知机MLP 卷积神经网络CNN 激活函数 正则化 最优化方法 生成模型GAN 自然语言 ...

  5. 从Transformer到BERT模型

    目录: ELMo与Transformer的简单回顾 DAE与Masked Language Model BERT模型详解 BERT模型的不同训练方法 如何把BERT模型应用在实际项目中 如何对BERT ...

  6. ICCV 2021 | 国科大提出首个CNN和Transformer双体主干网络!Conformer准确率高达84.1%!...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 转载自:新智元 | 来源:arxiv 编辑:好困 Priscilla ...

  7. 正面刚CNN,Transformer居然连犯错都像人类

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 水木番 发自 凹非寺 量子位 报道 | 公众号 QbitAI ...

  8. CNN、Transformer、MLP架构的经验性分析

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨pprp 来源丨GiantPandaCV 编辑丨极市平台 导读 ViT的兴起挑战了CNN的地位, ...

  9. 一文总结微软研究院Transformer霸榜模型三部曲!

    [导读]本文将主要介绍微软研究院提出的三大Transformer霸榜模型,分别是:开创Transforer新时代的Swin Transformer, 进阶版的Swin Transformer -- C ...

最新文章

  1. 推荐一个XNA的学习站点
  2. Flutter之Widget、Element、renderObject
  3. 中科大博士写外挂被抓,非法牟利300多万!
  4. 安装openssl-devel命令
  5. java 多线程日志_多线程 打印的日志出现重复行
  6. 使用 Windows 7 VHD启动计算机
  7. 计算机键盘驱动,修改键盘驱动程序_基本计算机知识_IT /计算机_信息
  8. MP4Box获取MP4媒体文件的播放时长
  9. JAVA在线考试系统毕业设计 开题报告
  10. ImportError: cannot import name '_validate_lengths'
  11. 流量分析和强制执行ntopng
  12. zt 李鸿章听过《彩云追月》?
  13. php偷单,最简单的PHP小偷源码
  14. 数据分析之《我不是药神》
  15. 20岁以后增高方法大全
  16. Uncaught (in promise)Error: ### Error updating database. Cause :java.sql.SQLException:
  17. python爬取百度标题_Python爬取百度热搜和数据处理
  18. LTE - NAS 驻网流程概括
  19. 最新Cfree5.0免费版下载
  20. html 中广告怎么弄,html广告代码添加教程

热门文章

  1. 详解如何批量采集58同城二手房数据及中介联系方式
  2. RK3399平台开发系列讲解(内核驱动外设篇)6.3、RK3399平台增加红外接收功能
  3. java中acquire()_Java高并发系列之AQS中acquire源码解析
  4. 一个令人赞不绝口的代码 Debug 神器
  5. dellR720服务器设置光盘引导流程安装cenos7
  6. 前端基础CSS3-(3D动画)
  7. # PyTorch学习笔记(15)--神经网络模型训练实战
  8. 前端网页背景与文字配色方案
  9. [从头学数学] 第188节 千军阅尽还复来(全)
  10. 在PE下用诺顿GHOST32v11恢复安装系统