Multiscale Vision Transformers

news2024/11/23 13:28:07

1、引言

        论文链接:https://arxiv.org/abs/2104.11227

        Haoqi Fan[1] 等通过在 ViT[2] 中引入多尺度特征层次结构,提出了一种用于视频和图像识别的 Multiscale Vision Transformers(MViT)[1]。在视频识别任务中,它优于依赖大规模外部预训练的视觉 Transformers,并且在计算和参数量方面减少了 5-10 倍[1]。在图像分类任务中其性能优于之前的视觉 Transformers。

2、模型结构       

        2.1  整体结构

图1 MViT-B整体结构

        接下来以 MViT-B  为例来介绍该模型的结构。如图 1   所示,首先由 Patch Partition(cube1)  模块对输入视频进行分块和 reshape;然后通过 Position Encodeing 模块拼接 CLS 并进行时空类别位置嵌入;后续的 scale 2、3、4  和 5  使用 Multi Head Pooling Attention (MHPA)[1] 逐步下采样时空分辨率,同时在 MLP 层中增加通道维度,每个阶段由 n 个 Transformer[3] 块 (MultiscaleBlock)组成,且只在  scale 2、3、4 阶段的最后一块中增加通道维度,在  scale 3、4、5 阶段的第一块中下采样时空分辨率,scale 2 中 MHPA 的头数 h=1(嵌入维度 d 较小),后面阶段的 h 均是前一阶段的 2 倍。
        2.2  data layer
        [1] 中的 data layer 是指对原始视频进行抽帧并将抽帧结果转换为 tensor,以得到 shape 为 (3,t,h,w) 的输入样本,其中 t 为输入视频片段的帧数、h 为视频帧的高度、w 为视频帧的宽度。
        2.3  Patch Partition
        这个模块在 [1] 中被称为 “cube1”, Patch Partition 和 ViT 的类似,只是这里的 patch_size 和嵌入维度较小,且采用重叠的 patch 划分方式,即划分卷积的 stride 比  patch_size 小
        2.4  Position Encoding
        这个模块用于拼接 CLS  并进行时空类别位置嵌入,同一帧的所有 token 共享一个空间位置嵌入,相同空间位置的所有 token 共享一个时间位置嵌入,空间位置嵌入和时间位置嵌入相加得到时空位置嵌入,再与类别位置嵌入拼接即得到时空类别位置嵌入。
        2.5  MultiscaleBlock
        n 个 MultiscaleBlock 构成一个 scale 阶段,每个 MultiscaleBlock 依次由一个具有残差结构的MHPA 和一个具有残差结构的 MLP 组成,并引入了随机深度。
        2.5.1  Pool
        Pool 的作用是下采样时空分辨率,核心是 3d pool 操作,CLS 不参与 pool ,故需先取出 CLS,然后将剩下部分 reshape为 shape = (D,T,H,W) 的 tensor,其中 D、T、H、W 依次为输入的嵌入维度、帧数、高度和宽度。pool 后将 shape 形式恢复并拼接上 CLS。
        2.5.2  MHPA
图2   Pooling Attention
        这里的 Pooling Attention 具有残差结构,本质上就是点乘缩放注意力机制[3],如图 2 所示。只是 q、k、v 在 Linear 层后要先经过 Pool。如上所述,MViT 只在  scale 3、4、5 阶段的第一块中下采样时空分辨率,故只在这些块中真正地对 q 执行 Pool,stride = (1,2,2),若对 q 执行了 Pool,分支中也应使用相应的 Pool。scale 2 中 k 和 v 的 Pool 的 stride = (1,8,8),为了使 k, v 张量在所有块中都具有一致的尺度,后面阶段中 k 和 v 的 Pool 的空间 stride 的每个元素都是前一阶段的一半。
        使用 h 个头来并行化计算,其中每个头都在 D 维输入张量 X 的 D/h 通道的非重叠子集上执行 Pooling Attention,即 MHPA。
        2.5.3  MLP
        这里使用的 MLP 与 ViT 的类似,如上所述,MViT 需要在  scale 2、3、4 阶段的最后一块中增加通道维度,故在这些块中 MLP 的输出维度为输入维度的两倍,且分支中也应使用一个 Linear 层。

3、总结

        [1] 中将多尺度特征层次结构的基本概念与 Transformer 模型结合从而提出 MViT,MViT 分阶段地降低视觉分辨率的同时扩展了特征复杂性。在视频和图像识别方面的实验评估中,MViT 表现得明显比单尺度视觉 Transformer 优秀。

参考文献

[1] Haoqi Fan, Bo Xiong, Karttikeya Mangalam , Yanghao Li, Zhicheng Yan , Jitendra Malik, and Christoph Feichtenhofer. Multiscale vision transformers. In ICCV, 2021.

[2] Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov,Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob Uszkoreit, and Neil Houlsby. An image is worth 16x16 words: Transformers for image recognition at scale. In International Conference on Learning Representations, 2021.

[3] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In Advances in Neural Information Processing Systems, 2017.

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

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

相关文章

react 基础学习笔记一

1、jsx语法过程 jsx使用react构造组件,通过bable进行编译成js对象,在用ReactDom.render()渲染成DOM元素,最后再插入页面的过程。 2、创建组件 组件的定义:将公用的代码组装成一个独立的文件,保持代码独立性&#xff0…

【QT学习】9.绘图,三种贴图,贴图的转换

一。绘图的解释 Qt 中提供了强大的 2D 绘图系统,可以使用相同的 API 在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。 QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage、QOpenGLPaintDev…

使用VPN后,浏览器访问不了国内地址解决办法

winR输入regedit 打开注册表 找到路径 计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings删除两个proxy代理

【Android】 四大组件详解之广播接收器、内容提供器

目录 前言广播机制简介系统广播动态注册实现监听网络变化静态注册实现开机自启动 自定义广播发送标准广播发送有序广播 本地广播 内容提供器简介运行时权限访问其他程序中的数据ContentResolver的基本用法读取系统联系人 创建自己的内容提供器创建内容提供器的步骤 跨程序数据共…

JavaSE:抽象

一,抽象是什么,抽象和面向对象有什么关系 抽象,个人理解,就是抽象的意思 我们都知道面向对象的四大特征:封装,继承,多态,抽象 为什么抽象是面向对象的特征之一,抽象和面…

Aigtek功率放大器电路的主要作用是什么

功率放大器是电子电路中的一个重要组成部分,它的主要作用是将输入信号的能量放大到更大的幅度,以便驱动负载或传输信号。功率放大器广泛应用于各种领域,如音频放大器、射频放大器、通信设备、无线电设备等。下面我们将详细介绍功率放大器电路…

【NOI】C++算法设计入门之深度优先搜索

文章目录 前言一、深度优先搜索1.引入2.概念3.迷宫问题中的DFS算法步骤4.特点5.时间、空间复杂度5.1 时间复杂度 (Time Complexity)5.2 空间复杂度 (Space Complexity)5.3 小结 二、例题讲解1.问题:1586 - 扫地机器人问题:1430 - 迷宫出口 三、总结四、感…

Rust 使用结构体组织相关联的数据

目录 结构体的定义和实例化 使用字段初始化简写语法使用结构体更新语法从其他实例创建实例使用没有命名字段的元组结构体来创建不同的类型没有任何字段的类单元结构体结构体示例程序 通过派生 trait 增加实用功能方法语法 定义方法带有更多参数的方法关联函数多个 impl 块本文有…

日志

日志服务管理 在现实生活中,记录日志也非常重要,比如银行的转账记录,飞机上的黑盒子,那么将系统和应用发生的事件记录至日志中,以助于排错和分析使用日志记录的内容包括: 历史事件:时间&#…

甘特图:如何制定一个有效的产品运营规划?

做好一个产品的运营规划是一个复杂且系统的过程,涉及多个方面和阶段。以下是一些关键步骤和考虑因素,帮助你制定一个有效的产品运营规划: 1、明确产品定位和目标用户: 确定产品的核心功能、特点和优势,明确产品在市…

向量的点积和叉积的几何意义

1. 点积 点积(dot product),又称标量积(scalar product)。结果等于。 可用于 判断的是否垂直求投影长度求向量是抑制作用还是促进作用计算两个向量的夹角 2. 叉积 叉积(cross product),又称为向量积(vector product)。模长等…

【C++类和对象】日期类的实现

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

【深度学习实战(21)】使用thop.profile计算模型的FLOPs和Params

一、 含义 FLOPs(计算量):注意s小写,是floating point operations的缩写(这里的小s则表示复数),表示浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。 Params&#xff08…

Dubbo应用可观测性升级指南与踩坑记录

应用从dubbo-3.1.*升级到dubbo-*:3.2.*最新稳定版本,提升应用的可观测性和度量数据准确性。 1. dubbo版本发布说明(可不关注) dubbo版本发布 https://github.com/apache/dubbo/releases 【升级兼容性】3.1 升级到 3.2 2. 应用修改点 应用一般只需要升级dubbo-s…

第53篇:算法的硬件实现<四>

Q:本期我们在DE2-115开发板上实现二进制搜索算法电路,查找数据A在数组中的位置。 A:使用SW[9]设定开始查找信号,数据A由SW[7:0]设定,KEY[0]设定为复位信号,板载50MHz时钟作为电路的时钟输入,确…

C语言—深度剖析函数指针,函数指针数组

我们先来看一段代码 #include <stdio.h> void test() {printf("hehe\n"); } int main() {printf("%p\n", test);printf("%p\n", &test);return 0; }输出的是两个地址&#xff0c;这两个地址是 test 函数的地址。 那我们的函数的地址…

【行为型模型】迭代器模式

一、迭代器模式概述 迭代器模式定义&#xff1a;提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而又不暴露其内部的表示。把游走的任务放在送代器上&#xff0c;而不是聚合上。这样简化了聚含的接口和实现,也让责任各得其所。(对象行为型) 迭代器模式的优缺点&…

第二届阿里巴巴大数据智能云上编程大赛亚军比赛攻略_北方的郎队

关联比赛: 第二届阿里巴巴大数据智能云上编程大赛-智联招聘人岗智能匹配 查看更多内容&#xff0c;欢迎访问天池技术圈官方地址&#xff1a;第二届阿里巴巴大数据智能云上编程大赛亚军比赛攻略_北方的郎队_天池技术圈-阿里云天池

[Windows] Bypass分流抢票 v1.16.25 五一黄金周自动抢票软件(2024.02.08更新)

五一黄金周要来了&#xff0c;火车票难买到&#xff0c;即便官网候选订票也要看运气&#xff0c;推荐使用这个靠谱的自动抢票软件&#xff0c; 该工具是目前市面上最好用口碑最好的电脑抢票软件&#xff0c;从13年到现在&#xff0c;作者依旧在更新&#xff0c;可以自动识别123…

Linux之 USB驱动框架-USB总线核心和主控驱动(4)

一、USB设备描述符 一个USB设备描述符中可以有多个配置描述符&#xff0c;即USB设备可以有多种配置&#xff1b;一个配置描述符中可以有多个接口描述符&#xff0c;即USB设备可以支持多种功能&#xff08;接口&#xff09;&#xff1b;一个接口描述符中可以有多个端点描述符。 …