[NeurIPS 2022] 消除视觉Transformer与卷积神经网络在小数据集上的差距

news2024/11/19 22:32:39

本文简要介绍NeurIPS 2022录用的论文“Bridging the Gap Between Vision Transformers and Convolutional Neural Networks on Small Datasets”的主要工作。该论文旨在通过增强视觉Transformer中的归纳偏置来提升其在小数据集上从随机初始化开始训练的识别性能。本文通过多种操作构建混合模型,增强视觉Transformer捕捉空间相关性的能力和其进行通道多样性表征的能力,弥补了Transformer在小数据集上从头训练的精度与传统的卷积神经网络之间的差距。目前该论文的代码处于待开源,在附录部分已有每个模块详细的伪代码展示。
在这里插入图片描述

  1. 研究背景

卷积神经网络 (Convolutional Neural Networks, CNN) 作为骨干网络 (Backbone) 已经在计算机视觉领域占据主导地位相当长的一段时间。而近三年来视觉Transformer (Vision Transformers, ViT) 逐渐成为另一种典型的Backbone模型,在计算机视觉各个任务上取得了令人满意的效果。原版的ViT [1]需要现在JFT-300M这样大规模的数据集上预训练,然后在ImageNet-1K上进行微调才能取得较好的效果。以往对于ViT的改进方法,例如DeiT [2],T2T-ViT [3], CvT [4], Swin Transformer [5]等方法已经可以在ImageNet-1K上从头训练取得较好的效果,但在更小的数据集例如CIFAR-100上,从头训练的精度与CNN仍有较大差距。

本文归纳了以往研究[6, 7, 8]的观点,指出“训练数据的不足使得ViT无法在网络的浅层关注到局部区域”,进而对深层语义信息的提取与加工造成影响。此外“训练数据的不足还会使得ViT学习到的物体表征不够充分”,因而难以进行精确识别。针对上述两个问题,本文指出训练数据的缺乏使得ViT自身难以获得“空间相关性”与“通道多样性表征”两种归纳偏置,进而提出了多个模块来将归纳偏置引入ViT,极大地提升了其在小数据集上的识别性能。

  1. 方法简述

(1)算法主框架:如图1所示,本文采用的是非金字塔型的Transformer结构,并使用class token进行分类。每个编码器层包含一个头交互的多头注意力 (Head-Interacted Multi-Head Self-Attention, HI-MHSA) 以及一个动态聚合前馈神经网络 (Dynamic Aggregation Feed Forward, DAFF). 在patch embedding部分采用了连续重叠的块嵌入模块 (Sequential Overlapped Patch Embedding, SOPE)。网络将最后一层输出的class token送入到线性分类头进行最后的识别。

在这里插入图片描述

图1: 整体架构

(2)连续重叠的块嵌入模块SOPE:同目前其他主流的ViT一样,本文同样采用了卷积操作进行patch embedding。同时本文还引入了额外的仿射变换操作,增加在小数据集上训练时的稳定性。

在这里插入图片描述

(3)动态聚合前馈神经网络DAFF:本文的在原版的前馈神经网络基础上进行改进,在两个线性层之间加入了深度卷积来进行领域信息的捕捉,弥补了ViT在空间上归纳偏置的不足。同时本文在卷积旁路采用了shortcut连接,维持了原有的全局信息。由于class token无法参与卷积计算,同时又希望对class token进行信息增强,因此作者引入了类似于通道注意力的操作,将卷积后的patch token进行全局平均池化与非线性映射,再逐通道对class token进行加权。

在这里插入图片描述

图2:DAFF结构

(4)头交互的多头注意力HI-MHSA:在ViT中,计算注意力时会将向量分成多个头,并在每个头中单独进行注意力的计算。由于数据量的不足,ViT所学习到的物体表征无法进行精确识别,每个头中所包含的物体表征相对较弱,因此本文额外引入了head token,旨在将各个头中较弱的物体表征融合形成足够强的表征。在数据送入多头注意力计算前,会先进行head token的提取。输入数据会根据设定的注意力头的数量,将数据划分成同等数量的分段,然后将每个分段重新映射成和原来一样的通道数。head token将会和其他所有token一起进行注意力的计算。此时每一个注意力头都会获得来自于其他注意力头的信息,将各个较弱的表征融合成了足以进行精确识别的物体表征。流程如图3所示。
在这里插入图片描述

图3:HI-MHSA结构

  1. 实验结果

本文在多个小数据集上进行“从头训练 (train from scratch)”,包含CIFAR-100以及多个DomainNet的数据集,同时还在ImageNet-1K上进行实验,证明本文方法在较大的数据集上同样有效。

(1)在CIFAR-100上与SOTA的对比如下表。可以看到本文方法不仅可以超越以往所有ViT和Hybrid系列方法,同时还能以较少的参数量超越CNN的精度。

在这里插入图片描述

(2)DomainNet数据集的统计信息,以及各个方法在DomainNet数据集上的效果如下,同样展现了本文方法在精度上的优越性。

在这里插入图片描述

(3)本文方法与SOTA方法在ImageNet-1K上的对比结果如下。可以看到本文方法超越了以往所有的非金字塔型ViT模型,同时还能超越同期的较多金字塔型ViT模型。

(4)消融实验部分同样展示了本文各个模块的有效性。

  1. 可视化结果

本文展示了注意力可视化结果。下图4展示了各个head token的注意力分布不同,表明了各个数据分段和注意力头对应不同的物体表征。

图4:head token的注意力可视化

本文还展示了在ImageNet-1K上训练出来的注意力分布,如图5所示。由于head token放在了其他token的后面,因此注意力图最右边的几列表示所有token对head token的注意力激活。

可以看到所有的token在网络的浅层时主要关注临近的token,提取局部信息。到了中间层,例如7-10层时,模型进行全局信息的交互,同时利用head token将各个head的表征融合在一起。到了最深层的11和12层,模型再次回归到全局信息的筛选,得到最终的分类信息表征。该图展示了一种可能的ViT信息提取方式,可能会对未来ViT模型的信息提取模式带来启发。

图5:DHVT-S在ImageNet-1K上的注意力可视化

  1. 总结

本文通过弥补ViT模型所缺失的两种归纳偏置,极大地提升了其在小数据集上的分类精度,达到了与传统CNN持平甚至更好的效果。同时本文所引入的注意力交互机制可能会对未来研究产生启发。但本文的方法同样存在缺陷,例如优良的精度是以巨大的计算代价带来的,期待未来的后续工作能够探索到在计算负担和精度直接进行良好折中的方法。

相关资源:

论文地址:https://arxiv.org/pdf/2210.05958.pdf

代码链接:https://github.com/ArieSeirack/DHVT (待补全开源)

参考文献

[1] Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020.

[2] Touvron H, Cord M, Douze M, et al. Training data-efficient image transformers & distillation through attention[C]//International Conference on Machine Learning. PMLR, 2021: 10347-10357.

[3] Yuan L, Chen Y, Wang T, et al. Tokens-to-token vit: Training vision transformers from scratch on imagenet[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021: 558-567.

[4] Wu H, Xiao B, Codella N, et al. Cvt: Introducing convolutions to vision transformers[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021: 22-31.

[5] Liu Z, Lin Y, Cao Y, et al. Swin transformer: Hierarchical vision transformer using shifted windows[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021: 10012-10022.

[6] Raghu M, Unterthiner T, Kornblith S, et al. Do vision transformers see like convolutional neural networks?[J]. Advances in Neural Information Processing Systems, 2021, 34: 12116-12128.

[7] Park N, Kim S. How Do Vision Transformers Work?[J]. arXiv preprint arXiv:2202.06709, 2022.

[8] d’Ascoli S, Touvron H, Leavitt M L, et al. Convit: Improving vision transformers with soft convolutional inductive biases[C]//International Conference on Machine Learning. PMLR, 2021: 2286-2296.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/159520.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

M1pro 下通过Docker 安装 Redis

Mac M1pro 下通过Docker 安装 Redis 1、Redis镜像拉取,最新版本的镜像 启动Docker,打开终端输入命令:docker pull redis:latest 耐心等待拉取完毕 2、查看本地镜像,Redis是否下载成功 命令:docker images 3、运行启…

又一重要进展发布!OpenMMLab算法仓支持昇腾AI训练加速

近日,上海人工智能实验室的浦视开源算法体系(OpenMMLab)团队基于昇腾AI发布了MMDeploy 0.10.0版本,该版本已支持OpenMMLab算法仓库在昇腾异构计算架构CANN上的推理部署。而在最新发布的MMCV 1.7.0和MMEngine 0.3.0版本中&#xff…

Vue3——第十二章(Props)

一、Props 声明 一个组件需要显式声明它所接受的 props&#xff0c;这样 Vue 才能知道外部传入的哪些是 props&#xff0c;哪些是透传 attribute在使用 <script setup> 的单文件组件中&#xff0c;props 可以使用 defineProps() 宏来声明&#xff1a; 在没有使用 <sc…

【寒假每日一题】DAY.5 调整奇数偶数顺序

题目内容&#xff1a; 调整数组使奇数全部都位于偶数前面。题目&#xff1a;输入一个整数数组&#xff0c;实现一个函数&#xff0c;来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分&#xff0c;所有偶数位于数组的后半部分。思路&#xff1a; 第一步&#xf…

【Java并发编程] 线程八锁问题

文章目录1.共享会出现什么问题2. 什么是临界区3. synchronized解决方案4 线程八锁1.共享会出现什么问题 首先&#xff0c;我们先了解对某一资源共享会出现什么问题&#xff0c;然后怎么解决这个问题。 两个线程对初始值为 0 的静态变量一个做自增&#xff0c;一个做自减&…

STM32单片机CAN总线汽车自动会车灯远近光切换

实践制作DIY- GC0121-汽车自动会车灯 一、功能说明&#xff1a; 基于51单片机设计-汽车自动会车灯 功能介绍&#xff1a; OLED主控板&#xff1a;STM32F103C系列最小系统OLED显示3个按键&#xff08;开关、自动/手动、近光/远光&#xff09;CAN通讯模块 光敏LED板&#xff1a…

房产管理系统架构分析

数图互通高校房产管理系统是基于公司自主研发的FMCenterV5.0平台&#xff0c;是针对中国高校房产的管理特点和管理要求&#xff0c;研发的一套标准产品&#xff1b;通过在中国100多所高校的成功实施和迭代&#xff0c;形成了一套成熟、完善、全生命周期的房屋资源管理解决方案。…

你的示波器只能抓到5%的波形?

采样时间、死区时间和捕获时间 数字示波器捕获信号的过程是典型的“采集-处理-采集-处理”&#xff0c;如图1所示为数字示波器的采集原理&#xff0c;一个捕获周期由采样时间和处理时间&#xff08;死区时间&#xff09;组成&#xff0c;如图2所示。 图1 示波器采集原理图 采…

Redis String 命令与实战

在前面的文章中&#xff0c;我们了解了 Redis 的基本功能&#xff0c;通过源码方式安装了 Redis&#xff0c;并搭建了 Redis 的源码运行环境。接下来将进入 “Redis 的实战应用篇”&#xff0c;在这部分我们将重点介绍 Redis 核心命令的使用&#xff0c;主要包括 Redis 中 Stri…

磨金石教育摄影技能干货分享|摄影师镜头下生活的色彩

在生活中也有很多亮丽的色彩&#xff0c;生活在我们看起来是平凡的&#xff0c;但其实每个地方每个人都会有不同的风景。不同的文化&#xff0c;不同的地域&#xff0c;这些都足以构造出不同的色彩。下面就让我们跟随镜头看看世界各地人民多姿多彩的生活。1 生活的色彩这是西孟…

ASP .Net Core内置 Identity 简介 使用

一、简介 1、概况 ASP.NET Core Identity是一个成员身份系统&#xff0c;可将用户注册和登录功能添加到 ASP.NET Core Web UI。 成员身份系统处理身份验证和授权问题。 身份验证涉及你的身份。 授权涉及允许你进行的操作。 因此&#xff0c;身份验证是授权的先决条件。 ASP .N…

js判断 数组中是否存在形同元素

上例子 flag true; //假设不重复&#xff1b; let arr [{ settingName: 渠道客户订单, settingCode: A1 },{ settingName: 户订单, settingCode: A1 },];for(let i 0;i < arr.length-1;i){ //循环开始元素 for(let j i 1;j < arr.length;j){ //循环后续所有元素 …

Pandoc 多Markdown转单PDF

文章目录Pandoc 简介Pandoc 安装pandoc-latex-template字体安装Powershell 脚本Ubuntu PandocMarkdown 合并Pandoc 简介 Pandoc, 免费的文档转换器, 支持常见的各种文件格式的相互转换, 如Markdown, HTML, EPUB, LaTeX, docx, RTF, PDF 等. 本篇以Windows下的多Markdown转单P…

个性化脑机接口及应用

脑机接口&#xff08;BCI&#xff09;是一种变革传统人机交互的新型技术&#xff0c;用户的大脑是直接的控制信号源。在BCI转化为实际应用时&#xff0c;由于用户个体之间的感觉、知觉、表象与认知思维活动、脑结构与功能具有一定的差异&#xff0c;通用BCI难以满足不同个体的需…

国产linux操作系统——麒麟操作系统的来龙去脉(有下载地址,亲测可用)

文章目录1、linux操作系统2、国产操作系统3、麒麟操作系统4、引用1、linux操作系统 目前市场主流的linux操作系统分类大致如此&#xff0c;国产操作系统的麒麟操作系统&#xff0c;底层比较杂&#xff0c;所以单独一类。 2、国产操作系统 排名日期截止到2022.6。 这里提一下排…

基于java SSM的房屋租赁系统设计和实现

基于java SSM的房屋租赁系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文…

ASO优化的两个渠道之推广+老用户维系

要想自己的APP在应用商城里获得较高的排名&#xff0c;提高用户的下载量&#xff0c;就要通过ASO优化来辅助完成。 &#xff08;一&#xff09;&#xff0c;ASO优化的排名因素——元数据的优化&#xff1a;1&#xff0c;icon图标。图片要直观和清晰地突出APP的内容&#xff0c…

力扣刷题记录——434. 字符串中的单词数、448. 找到所有数组中消失的数字、455. 分发饼干

本专栏主要记录力扣的刷题记录&#xff0c;备战蓝桥杯&#xff0c;供复盘和优化算法使用&#xff0c;也希望给大家带来帮助&#xff0c;博主是算法小白&#xff0c;希望各位大佬不要见笑&#xff0c;今天要分享的是——《434. 字符串中的单词数、448. 找到所有数组中消失的数字…

Google colab-思腾云

文章目录Google colab具体操作过程问题1问题2AutoDL问题1 无卡开机思腾云使用基础信息如何租用服务器&#xff1f;如何上传代码以及运行程序&#xff1f;操作服务器的方式&#xff1f;pycharm方式Xshell的形式问题1 libSM.so.6 和 libXrender.so.1问题2&#xff1a;运行代码出现…

Dubbo概述-快速入门

Dubbo概念 ●Dubbo是阿里巴巴公司开源的一个高性能、轻量级的Java RPC框架。 ●致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 ●官网: http://ubbo.apache.orgo 节点角色说明: . ●Provider: 暴露服务的服务提供方 ●Contahier: 服务运行容器 ●Co…