当前位置: 首页 > news >正文

MViT(ICCV 2021, Meta)论文解读

paper:Multiscale Vision Transformers

official implementation:https://github.com/facebookresearch/SlowFast

背景和出发点

这篇文章提出了多尺度视觉Transformer(Multiscale Vision Transformers, MViT)的概念,用于视频和图像识别。作者从多尺度特征层次结构的核心思想出发,结合Transformer模型,提出了一种新的架构。

解决了什么问题

MViT解决了现有视觉Transformer依赖大量外部预训练数据且计算和参数消耗大的问题。该模型在无需大规模外部预训练数据的情况下,显著提升了视频识别任务的性能。

创新点

  1. 多尺度特征层次结构:MViT通过多个通道-分辨率缩放阶段来实现多尺度特征金字塔。这些阶段从输入分辨率和较小的通道维度开始,逐步扩大通道容量,同时减少空间分辨率,从而创建了一个从高空间分辨率到低空间分辨率的多尺度特征金字塔。
  2. 有效的时空建模:MViT在视频识别任务中表现出色,利用时空信息来提高识别准确性。相比之下,其他视觉Transformer在帧序打乱的视频上表现较差,表明MViT更好地利用了时间信息。
  3. 计算效率高:与当前其他视频变压器模型相比,MViT在计算和参数消耗方面更加高效,能够在相同的准确性下显著减少计算量和参数数量。

方法介绍

这里的逐阶段降低分辨率增大通道数其实就是普通的ConvNets的做法,作者将其引入到Transformer结构中。作者首先提出了Multi Head Pooling Attention(MHPA)如图3所示,通过MHPA可以在Transformer block中实现灵活的分辨率建模,与分辨率和通道数都保持不变的原始的Multi Head Attention不同,MHPA通过池化操作减小 \(Q,K,V\) 的序列长度(即分辨率)实现对原始输入分辨率的降低。

通道数的增加是通过MLP实现的,当从一个stage过渡到下一个stage时,通过增加前一个stage最后一个MLP的输出来扩展通道维度。具体和卷积网络一样,当分辨率降低4倍时,通道数增加2倍。

作者通道MHPA构建了Multiscale Vision Transformer(MViT)如表2所示。

 

在MHPA中,分辨率的降维具体是通过对 \(Q\) 池化实现的,因此我们在每个stage的第一个pooling attention中设置pooling query的步长>1,其它的所有步长都设置=1。

和query pooling不同,改变key、value张量的sequence length不会影响输出的序列长度,即空间分辨率。但它们对池化注意力整体的计算量起着关键作用。因此作者解耦了 \(Q,K,V\) pooling的使用,只在每个stage的第一层使用query pooling,而在所有其它的层中使用key pooling和value pooling。

由于存在skip connection,当分辨率发生变化时,我们对residual path也进行池化来匹配维度的变化,如图3所示。当通道数发生变化时,我们通过一个额外的线性层来对齐通道维度。

实验结果

这篇文章主要是应用于视频分析的,因此除了空间分辨率外还有一个temporal维度,不过我们这里只关注2D图像识别。

在ImageNet上和其它模型的对比如下表所示

相关文章:

  • 阶段三:项目开发---大数据系统基础环境准备:任务1:准备系统运行的先决条件
  • vue项目创建+eslint+Prettier+git提交规范(commitizen+hooks+husk)
  • React
  • 开始尝试从0写一个项目--后端(一)
  • 6.8应用进程跨网络通信
  • Airflow: 大数据调度工具详解
  • 0/1背包问题总结
  • 【Python机器学习】处理文本数据——将文本数据表示为词袋
  • 顶级5款有用的免费IntelliJ插件,提升你作为Java开发者的旅程
  • Redis 的过期策略
  • Node.js的下载、安装和配置
  • 房屋租赁管理小程序的设计
  • 【GD32F303红枫派使用手册】第三十节 CAN -CAN通信实验
  • 完全理解C语言函数
  • Linux 查看修改系统时间| date -s
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • Fabric架构演变之路
  • happypack两次报错的问题
  • js数组之filter
  • linux安装openssl、swoole等扩展的具体步骤
  • Redis在Web项目中的应用与实践
  • Redux系列x:源码分析
  • Webpack 4x 之路 ( 四 )
  • 程序员最讨厌的9句话,你可有补充?
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 聊聊sentinel的DegradeSlot
  • 实现菜单下拉伸展折叠效果demo
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 智能合约Solidity教程-事件和日志(一)
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 数据可视化之下发图实践
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • (ZT)薛涌:谈贫说富
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转) Face-Resources
  • (转)关于多人操作数据的处理策略
  • . Flume面试题
  • ./configure,make,make install的作用
  • .dwp和.webpart的区别
  • .NET 8.0 发布到 IIS
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET NPOI导出Excel详解
  • .net 后台导出excel ,word
  • .net 简单实现MD5
  • .net 无限分类
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET企业级应用架构设计系列之结尾篇
  • @AliasFor注解
  • @JSONField或@JsonProperty注解使用