MViTv2:Facebook出品,进一步优化的多尺度ViT | CVPR 2022

news2024/12/28 5:24:18

论文将Multiscale Vision Transformers (MViTv2) 作为图像和视频分类以及对象检测的统一架构进行研究,结合分解的相对位置编码和残差池化连接提出了MViT的改进版本

来源:晓飞的算法工程笔记 公众号

论文: MViTv2: Improved Multiscale Vision Transformers for Classification and Detection

  • 论文地址:https://arxiv.org/abs/2112.01526
  • 论文代码:https://github.com/facebookresearch/mvit

Introduction


  为不同的视觉识别任务设计架构一直很困难,而最广泛采用的架构是结合了简单性和有效性的架构,例如VGGNetResNet。最近,Vision Transformers(ViT) 已经显示出能够与卷积神经网络 (CNN) 相媲美的性能,涌现出大量将其应用于不同的视觉任务中的工作来。

  虽然ViT在图像分类中很流行,但在高分辨率目标检测和视频理解任务中的应用仍然具有挑战性。视觉信号的密度对计算和内存要求提出了严峻的挑战,主要因为基于Transformer的模型的自注意力块的复杂度与输入长度呈二次方增长。目前有大量的研究来解决这个问题,比较主要的两个为:

  • 使用窗口注意力,在一个窗口内进行局部注意力计算以及对象检测,主要用于目标检测任务。
  • 使用池化注意力,在计算自注意力之前先聚合局部特征的,主要用于视频任务。

  后者推动了Multiscale Vision Transformers(MViT)的研究,以简单的方式扩展ViT的架构。整个网络不再固定分辨率,而是构造从高分辨率到低分辨率的多个阶段的特征层次结构。

MViT专门为视频任务设计,具有最先进的性能。论文将MViT作为一个模型系列在图像分类、目标检测和视频分类中进行研究,从而了解它是否能够作为通用的视觉任务的主干网络。

  根据研究结果,论文提出了改进的架构 (MViTv2),并包含以下内容:

  • 从两个方面来大幅提升池化注意力的性能:
    • 使用坐标分离的位置距离构造相对位置编码,在Transformer块中注入平移不变的位置信息。
    • 使用残差池化连接来补偿注意力计算中池化缩放带来的影响。
  • 根据标准的密集预测框架Mask R-CNN with Feature Pyramid Networks(FPN)改进MViT结构,并将其应用于目标检测和实例分割。实验表明,池化注意力比窗口注意力机制(例如Swin)更有效。另外,论文进一步开发了一种简单的混合池化注意力和窗口注意力的方案,可以实现更好的准确性/计算权衡。
  • 论文提供了五种尺寸的MViT2架构,只需很少的修改就能作为图像分类、对象检测和视频分类的通用视觉架构。实验表明,MViTImageNet分类的准确率为88.8%,COCO对象检测的APbox准确率为58.7%,Kinetics-400视频分类的准确率为86.1%。其中,在视频分类任务上的准确率是非常出色的。

Revisiting Multiscale Vision Transformers


MViTv1的关键思想是为低级和高级视觉建模构建不同的阶段,而不是像ViT那样全是单尺度块。MViTv1缓慢地扩展通道宽度 D D D,同时降低网络输入到输出阶段的序列长度 L \boldsymbol{\mathit{L}} L,具体可以看之前的文章 【MViT:性能杠杠的多尺度ViT | ICCV 2021】。

  为了在Transformer块内执行下采样,MViT引入了池化注意力(Pooling Attention)。具体来说,对于输入序列 X ∈ R L × D X\in{\mathbb{R}}^{L\times D} XRL×D,分别对查询、键和值张量应用线性投影 W Q {W}_{Q} WQ W K {W}_{K} WK W V ∈ R D × D {W}_{V}\in\mathbb{R}^{D\times D} WVRD×D,以及池化运算符 ( P {\mathcal{P}} P):

$$
Q={\mathcal P}{Q}\left(X W{Q}\right),;K={\mathcal P}{K}\left(X W{K}\right),;V={\mathcal P}{V}\left(X W{V}\right)

\quad\quad(1)
$$

  其中, Q ∈ R L ~ × D {Q}\in\mathbb{R}^{\tilde{L}\times D} QRL~×D 的长度 L ~ \tilde{L} L~ 可减小 P Q {\mathcal{P}}_{Q} PQ 倍, K K K V V V 的长度则可减少 P K {\mathcal{P}}_{K} PK P V {\mathcal{P}}_{V} PV倍。

  随后,使用池化注意力计算任意长度 L ~ {\widetilde{L}} L 的输出序列 Z ∈ R L ~ × D Z\in\mathbb{R}^{{\tilde{L}}\times D} ZRL~×D 的输出序列:

$$
Z:=\mathrm{Attn}(Q,K,V)=\mathrm{Softmax}\left(Q K^{\textsf{T}}/\sqrt{D}\right)V

\quad\quad(2)
$$

  请注意,键和值张量的下采样因子 P K {\mathcal{P}}_{K} PK P V {\mathcal{P}}_{V} PV 可能与应用于查询序列的 P Q {\cal P}_{Q} PQ 不同。

  池化注意力通过池化查询张量 Q {Q} Q 来降低MViT不同阶段之间的分辨率,通过池化键 K K K 和值 V V V 张量来显着降低块内的计算和内存复杂性。

Improved Multiscale Vision Transformers


Improved Pooling Attention

  • Decomposed relative position embedding

  虽然MViT已经显示出其在token之间建模交互方面的能力,但它们关注的是内容,而不是结构。完全依赖于绝对位置编码来提供位置信息的时空结构建模,导致MViT忽略了视觉中平移不变性的基本原理。也就是说,即使相对位置保持不变,MViT对两个补丁之间的交互进行建模的方式也会根据token在图像中的绝对位置而改变。为了解决这个问题,论文将相对位置编码加入到自注意力计算中。

  论文将两个输入元素 i i i j j j 之间的相对位置表示为位置编码 R p ( i ) , p ( j ) ∈ R d R_{p(i),p(j)}{\in}\mathbb{R}^{d} Rp(i),p(j)Rd ,其中 p ( t ) p({t}) p(t) p ( j ) p({j}) p(j) 表示元素 i i i j j j 的空间位置,随后将相对位置编码嵌入到自注意力模块中:

$$
\begin{array}{c}
{{\mathrm{Attn}(Q,K,V)=\mathrm{Softmax}\left((Q K{\textsf{T}}+E{(\operatorname{rel})})/\sqrt{d}\right)V}}
\
{{\mathrm{where}}} \ \ \ \ E_{i j}^{\mathrm{(rel)}}=Q_{i}\cdot R_{p(i),p(j)}
\end{array}

\quad\quad(3)
$$

  但是,由于 R p ( i ) , p ( j ) R_{p(i),p(j)} Rp(i),p(j) 涉及时空坐标,存在的位置编码数量为 O ( T W H ) {\cal O}(T W H) O(TWH),计算起来很复杂。为了降低复杂性,论文沿时空轴对元素 i i i j j j 之间的距离进行分解计算:
$$
R_{p(i),p(i)}=R_{h(i),h(i)}{\mathrm{h}}+R_{u\iota(i),n\iota(i)}{\mathrm{w}}+R_{t(i),t(i)}^{\mathrm{t}}

\quad\quad(4)
$$

  其中 R h , R w , R t R^{\mathrm{h}},R^{\mathrm{w}},R^{\mathrm{t}} RhRwRt 是沿高度、宽度和时间轴的位置编码, h ( i ) h(i) h(i) w ( i ) w(i) w(i) t ( i ) t(i) t(i) 分别表示标记的垂直、水平和时间位置。需要注意的是, R t R^{t} Rt 是可选的,主要是为了支持视频任务中的时间维度。相比之下,论文的位置分解将学习编码的数量减少到 O ( H + W + H ) \mathcal{O}(H+W+H) O(H+W+H) ,这对早期的高分辨率特征图有很大的帮助。

  • Residual pooling connection

  正如MViTv1所描述的,池化注意力对于降低注意力块中的计算复杂度和内存消耗非常有效。 一般情况下,在 K K K V V V 张量的缩放因子要大于 Q Q Q 张量的缩放因子,而且 Q Q Q 张量仅在跨阶段的分辨率发生变化时才被下采样。为了避免特征信息因为较大的缩放因子而丢失,论文添加了与池化的 Q Q Q 张量的残差池化连接,增加信息流并促进MViT中池化注意力块的训练。

  如图 2 所示,论文在注意力块内引入了一个新的残差池化连接。具体来说,论文将池化查询张量添加到输出序列 Z Z Z 中:

$$
Z:=\operatorname{Attn}\left(Q,K,V\right)+Q

\quad\quad(5)
$$

  需要注意的是,输出序列 Z Z Z 与池化张量 Q Q Q 的长度相同。

  这里的残差连接和池化操作都是必须的,在非跨阶段的块中也要补一个步幅为 1 的池化操作对 Q Q Q 进行处理。由于这种改进的计算增加很少,所以仍能维持池化注意力的低计算复杂度。

MViT for Object Detection

  • FPN integration

MViT的层次结构分四个阶段生成多尺度特征图,可以自然地对接到目标检测的特征金字塔网络(FPN)中,如图 3 所示。通过将FPNMViT主干结合使用,论文将其应用于不同的检测架构(例如Mask R-CNN)。

  • Hybrid window attention

Transformer中的自注意力对token数量具有二次方复杂度,这个问题在高分辨率输入的目标检测中更加严重。

  池化注意力和窗口注意力都通过在计算自注意力时减少查询、键和值张量的大小来控制自注意力的复杂性,但它们的本质是不同的:

  • 池化注意力池通过局部聚合对特征进行下采样,但保持全局自注意力计算。
  • 窗口注意力保持张量的分辨率,将输入划分为非重叠窗口并在局部执行自注意力计算。

  默认窗口注意力仅在窗口内执行本地自注意力,因此缺乏跨窗口的连接。与使用滑动窗口来缓解此问题的Swin不同,论文提出了一种简单的混合窗口注意力(Hwin)来添加跨窗口连接。

HwinFPN的最后三个阶段的所有块输入(最后阶段的最后一个块外)计算窗口注意力得到局部特征,最后一个块则进行全局自注意力(或池化注意力)计算使得FPN的输入特征图包含全局信息。

  • Positional embeddings in detection

  与固定分辨率输入的ImageNet分类不同,目标检测的训练通常包含不同大小的输入。对MViT中的位置编码(绝对或相对),论文首先从ImageNet预训练权重初始化参数,对应 224 × 224 224\times224 224×224 输入的位置编码,然后将其插值到相应的大小以进行目标检测训练。

MViT for Video Recognition

  由于升级的池化注意力可以泛化到时空域,MViT可以很简单地应用于视频识别任务(例如Kinetics)。虽然MViTv1仅关注Kinetics数据集上的预训练,MViTv2也会研究从ImageNet数据集上预训练的效果。

  应用于图像的MViT与应用于视频的MViT对比有三个不同之处:

  • 1)主干中的映射层需要将输入投影到时空立方体而不是2D图像块。
  • 2)池化运算符需要池化时空特征图。
  • 3)相对位置编码加入时空位置。

  由于 1) 和 2) 中的投影层和池化运算符默认由卷积层实现,因此论文使用inflation初始化,即将预训练模型中2D卷积层的权值除以T再复制T份形成3D卷积层(文章描述的做法跟参考文献有出入)。对于 3),论文基于提出的分离相对位置编码进行计算,简单地用预训练权值初始化空间位置编码,然后将时空位置编码初始化为零。

MViT Architecture Variants

  如表 1 所示,论文构建了几个不同数量参数和计算量的MViT变体,以便与其他ViT模型进行比较。每个变体主要改变基础的通道尺寸、每个阶段的块数和块中的头数,一共有五个变体(TinySmallBaseLargeHuge)。需要注意,论文使用较少的头数量来改善运行时间,这对计算量和参数量是没有影响的。

  遵循MViT的池化注意力设计,论文默认在所有池化注意力块中使用键和值池化,并且池化步幅在第一阶段设置为 4,并根据阶段的分辨率自适应地衰减跨阶段的步幅。

Experiments: Image Recognition


  论文对ImageNet分类和COCO对象检测进行了实验。

Image Classification on ImageNet-1K

ImageNet-1K数据集上的性能如表 2 所示,论文改进的MViTv2具有更高的准确性,并且计算量和参数更少。

ImageNet-21K数据集上的性能如表 3 所示。

Object Detection on COCO

MViTv2作为不同检测框架的主干网络的性能如表 5 所示。默认采用Hwin注意力,窗口设置为 [ 56 , 28 , 14 , 7 ] [56, 28, 14, 7] [56,28,14,7],使用ImageNet-1k预训练。

Ablations on ImageNet and COCO

  不同注意力机制在图像分类和目标检测任务中的表现如表 4 所示。

  不同位置编码方式在图像分类和目标检测任务中的表现如表 6 所示。

  不同的残差池化策略在图像分类和目标检测任务中的表现如表 7 所示。

  模型运行耗时在图像分类和目标检测任务中的表现如表 8 所示。

  FPN对目标检测的影响如表 9 所示。

Experiments: Video Recognition


Main Results

  在不同量级的Kinetics数据集上的视频任务性能对比。

  在SSv2数据集上的视频任务性能对比。

Ablations on Kinetics

  在Kinetics-400数据集上对比不同预训练模型的性能。

Conclusion


  论文提出了改进的Multiscale Vision Transformer作为视觉识别的通用主干网络。通过实验表明,MViT在图像分类、目标检测、实例分割和视频识别等广泛使用的基准测试中达到了最很不错的精度。



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

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

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

相关文章

Fiddler抓包过滤host及js、css等地址

1、如上图所示 在Filter页面中勾选Hide if URL contains;输入框输入 REGEX:\.(js|css|png|google|favicon\?.*) 隐藏掉包含js、css、png、google等的地址: Hide if URL contains: REGEX:\.(js|css|png|google|favicon\?.*) 2、使Filters设置生效 A…

微软新版WSL 2.3.11子系统带来“数百个新内核模块“和新功能

微软今天发布了新版的 Windows Subsystem for Linux(WSL)。与当前的 WSL 2.2.4 稳定版相比,WSL 2.3.11 具有许多特性:它从旧版的 Linux 5.15 LTS 内核转到了 Linux 6.6LTS内核。今天的发布说明指出,WSL 2.3.11 基于 Linux 6.6.36.3&#xff0…

【C++刷题】[UVA 489]Hangman Judge 刽子手游戏

题目描述 题目解析 这一题看似简单其实有很多坑,我也被卡了好久才ac。首先题目的意思是,输入回合数,一个答案单词,和一个猜测单词,如果猜测的单词里存在答案单词里的所有字母则判定为赢,如果有一个字母是答…

力扣622.设计循环队列

力扣622.设计循环队列 通过数组索引构建一个虚拟的首尾相连的环当front rear时 队列为空当front rear 1时 队列为满 (最后一位不存) class MyCircularQueue {int front;int rear;int capacity;vector<int> elements;public:MyCircularQueue(int k) {//最后一位不存…

基于python的三次样条插值原理及代码

1 三次样条插值 1.1 三次样条插值的基本概念 三次样条插值是通过求解三弯矩方程组&#xff08;即三次样条方程组的特殊形式&#xff09;来得出曲线函数组的过程。在实际计算中&#xff0c;还需要引入边界条件来完成计算。样条插值的名称来源于早期工程师制图时使用的细长木条&…

【机器学习】--过采样原理及代码详解

过采样&#xff08;Oversampling&#xff09;是一个在多个领域都有应用的技术&#xff0c;其具体含义和应用方法会根据领域的不同而有所差异。以下是对过采样技术的详细解析&#xff0c;主要从机器学习和信号处理两个领域进行阐述。 一、机器学习中的过采样 在机器学习中&…

未来的社交标杆:如何通过AI让Facebook更加智能化?

在当今信息爆炸的时代&#xff0c;社交媒体平台的智能化已成为提高用户体验和互动质量的关键因素。Facebook&#xff0c;作为全球最大的社交平台之一&#xff0c;通过人工智能&#xff08;AI&#xff09;的广泛应用&#xff0c;正不断推进其智能化进程。本文将探讨Facebook如何…

Qt日志库QsLog使用教程

前言 最近项目中需要用到日志库。上一次项目中用到了log4qt库&#xff0c;这个库有个麻烦的点是要配置config文件&#xff0c;所以这次切换到了QsLog。用了后这个库的感受是&#xff0c;比较轻量级&#xff0c;嘎嘎好用&#xff0c;推荐一波。 下载QsLog库 https://github.c…

CSS技巧专栏:一日一例 7 - 纯CSS实现炫光边框按钮特效

CSS技巧专栏&#xff1a;一日一例 7 - 纯CSS实现炫光边框按钮特效 本例效果图 案例分析 相信你可能已经在网络见过类似这样的流光的按钮&#xff0c;在羡慕别人做的按钮这么酷的时候&#xff0c;你有没有扒一下它的源代码的冲动&#xff1f;或者你当时有点冲动&#xff0c;却…

在Oxygen中比较两个目录的差异,用于编写手册两个版本的变更说明

▲ 搜索“大龙谈智能内容”关注公众号▲ 当我们对手册进行改版的时候&#xff0c;我们通常需要编写变更说明&#xff0c;如下图&#xff1a; 改版通常会改动很多文件的很多地方&#xff0c;如何知道哪些地方更改了呢&#xff1f; Oxygen提供了比较两个目录的功能&#xff0c…

载均衡技术全解析:Pulsar 分布式系统的最佳实践

背景 Pulsar 有提供一个查询 Broker 负载的接口&#xff1a; /*** Get load for this broker.** return* throws PulsarAdminException*/ LoadManagerReport getLoadReport() throws PulsarAdminException;public interface LoadManagerReport extends ServiceLookupData { Re…

【devops】ttyd 一个web版本的shell工具 | web版本shell工具 | web shell

一、什么是 TTYD ttyd是在web端一个简单的服务器命令行工具 类似我们在云厂商上直接ssh链接我们的服务器输入指令一样 二、安装ttyd 1、macOS Install with Homebrew: brew install ttydInstall with MacPorts: sudo port install ttyd 2、linux Binary version (recommend…

将达梦数据库的JDBC驱动包 DmJdbcDriver18.jar 安装到本地 Maven 仓库

项目打包报错&#xff1a;Failure to find com.dameng:DmJdbcDriver18:jar:8.1.3.12 in http://maven.aliyun.com/nexus/content/groups/public 解决方式如下&#xff1a; 从 https://eco.dameng.com/download/ 中下载 达梦JDBC 驱动包&#xff0c;如下 JDK 1.8 对应的 JDBC…

镜像与容器

Docker Image (镜像) Docker 镜像概念 Docker iamge 本质上是一个 read-only 只读文件&#xff0c;这个文件包含了文件系统、源码、库文件、依赖、工具等一些运行 application 所必需的文件。 可以把 Docker image 理解成一个模板&#xff0c;可以通过这个模板实例化出来很多…

2024全球和国内最常用的弱密码,有没有你的?

密码管理器NordPass分析了来自公开来源的超过4.3TB 的密码数据&#xff0c;找出了当前为止&#xff08;2024年&#xff09;最常用&#xff08;最脆弱&#xff09;的密码。 这些密码主要有下面这些特征&#xff1a; 简单且常用&#xff0c;万年弱密码&#xff0c;比如123456、a…

Axure中继器入门:打造你的动态原型

前言 中继器 是 Axure 中的一个高级功能&#xff0c;它能够在静态页面上模拟后台数据交互的操作&#xff0c;如增加、删除、修改和查询数据&#xff0c;尽管它不具备真实数据存储能力。 中继器就像是一个临时的数据库&#xff0c;为我们在设计原型时提供动态数据管理的体验&a…

IntelliJ IDEA 使用maven构建项目时一直卡在Compiling 阶段

IntelliJ IDEA 使用maven构建项目时一直卡在Compiling 阶段 1. maven log [DEBUG] incrementalBuildHelper#beforeRebuildExecution [INFO] Compiling 56 source files to D:\code\short-url\target\classes...2. 增加日志级别 通过添加 -X 参数到 Maven 命令中&#xff08;例…

Ubuntu 24.04 LTS 桌面安装MT4或MT5 (MetaTrader)教程

运行脚本即可在 Ubuntu 24.04 LTS Noble Linux 上轻松安装 MetaTrader 5 或 4 应用程序&#xff0c;使用 WineHQ 进行外汇交易。 MetaTrader 4 (MT4) 或 MetaTrader 5 是用于交易外汇对和商品的流行平台。它支持各种外汇经纪商、内置价格分析工具以及通过专家顾问 (EA) 进行自…

曲轴自动平衡机:提升制造精度与效率的利器

在现代制造业中&#xff0c;曲轴作为发动机的核心部件之一&#xff0c;其质量和性能直接影响着整个发动机的运行效果。而曲轴自动平衡机的出现&#xff0c;为曲轴的生产制造带来了显著的优势。 一、高精度平衡校正 曲轴自动平衡机采用先进的传感技术和精密的测量系统&#xff0…

Qt 快速保存配置的方法

Qt 快速保存配置的方法 一、概述二、代码1. QFileHelper.cpp2. QSettingHelper.cpp 三、使用 一、概述 这里分享一下&#xff0c;Qt界面开发时&#xff0c;快速保存界面上一些参数配置的方法。 因为我在做实验的时候&#xff0c;界面上可能涉及到很多参数的配置&#xff0c;我…