51-17 视频理解串讲— MViT 论文精读

继TimeSformer模型之后,咱们再介绍两篇来自Facebook AI的论文,即Multiscale Vision Transformers以及改进版MViTv2: Improved Multiscale Vision Transformers for Classification and Detection。

由于本司大模型组最近组织阅读的论文较多,为理清相互之间的脉络,画草图如下 <->

MViT,Multiscale Vision Transformers

MViT就是Transformer和多尺度分层建模相融合的产物。

Abstract

通过将多尺度、层次性特征的开创性思想与transformer模型联系起来,我们提出了用于视频和图像识别的多尺度视觉transformer,MViT。多尺度transformer有几个channel-resolution扩展过程。从输入分辨率和一个小的通道维度开始,每个stage分层地扩展通道容量,同时降低空间分辨率。这创建了一个多尺度的特征金字塔,其中早期的层以高空间分辨率运行,以模拟简单的低层次视觉信息,而更深的层则有空间粗糙但复杂的高维特征。我们评估了先前基础架构,它们为密集性质的视觉信号建模,用于各种视频识别任务。在这些任务中,并发vision-transformer依赖大规模外部预训练,并且在计算和参数方面成本高出MViT 5-10倍。我们进一步消除了时间维度,并将我们的模型应用于图像分类,它优于先前在视觉transformer上的工作。代码可在:https: //github.com/facebookresearch/SlowFast获得。

Introduction

我们从计算机视觉神经网络模型的智力历史开始。基于对猫和猴子视觉皮层的研究,Hubel和 Wiesel开发了一种视觉通路的分层模型,其神经元位于较低区域,例如 V1 响应定向边缘和条形等特征,而在较高区域响应更具体的刺激。Fukushima提出了Neocogniztron,这是一种由Hubel和 Wiesel层次结构明确驱动的模式识别神经网络架构。他的模型具有交替的简单细胞和复杂细胞层,从而结合了下采样和平移不变性,从而结合了卷积结构。LeCun等人采取了使用反向传播来训练该网络权重的额外步骤。通过这些核心工作,层次结构的视觉处理主要方面已经建立起来:(i)随着处理层次的上升,空间分辨率降低(ii)增加不同“通道”的数量,每个通道对应着越来越专一的功能。

同时,计算机视觉社区开发了多尺度处理,有时被称为“金字塔”策略。有两个动机:(i)采用较低分辨率,减少计算需求;(ii)在较低分辨率下更好地感知“上下文”,然后可以指导在较高分辨率下的工作。

Transformer架构允许学习在集合上定义的任意函数,并且在语言理解和机器翻译等序列任务中获得了可扩展的成功。基本上,Transformer使用具有两个基本操作的块。首先是对元素间关系建模的attention操作。其次是多层感知器multi-layer perceptron,MLP,它对元素内部的关系进行建模。将这些操作与归一化、残差连接交织在一起,可以使Transformer推广到各种各样的任务。

最近,Transformer被应用于关键的计算机视觉任务,如图像分类。在架构普遍主义的精神下,vision Transformer在各种数据和计算机制下接近卷积模型的性能。vision Transformer的第一层以2D卷积的方式对输入进行“拼接”,然后是一堆Transformer块,目的是在归纳偏置很小的情况下展示Transformer架构的强大功能。

在本文中,我们的目的是将多尺度、层次结构的基本思想与Transformer模型联系起来。我们假设分辨率和通道缩放的基本视觉原理有利于Transformer模型在各种视觉识别任务中。我们提出了多尺度vision transformer models(MViT),这是一种用于建模视觉数据(如图像和视频)的Transformer架构。考虑一个输入图像,如图1所示。与传统的Transformer在整个网络中保持恒定的信道容量和分辨率不同,多尺度Transformer有几个channel-resolution “scale”阶段。从图像分辨率和小通道维度开始,每个stage在降低空间分辨率的同时分层扩展通道容量。这在Transformer网络内部创建了一个多尺度的特征激活金字塔,有效地将Transformer的原理与多尺度、层次结构连接起来。

(参照ViT,模型基于纯Transformer架构,所以采用了Patch操作。图中的1,2,3,4是patch的大小,随着模型深入,patch是变大的,但是空间分辨(Patch分辨率)是降低的。)

由于前面网络层信道容量小,模型可以在高空间分辨率下运行,以模拟简单的低级视觉信息。反过来,更深的网络层可以有效地专注于空间粗略但有复杂的高级特征,以对视觉语义进行建模。MViT基本优势来自于视觉信号的极其密集的性质,这种现象在视频中捕获的时空视觉信号更加明显。同时,这种video multiscale models存在强烈的隐式时间偏差。

Related Work

Convolutional networks (ConvNets)

ConvNets融合了下采样、移位不变性和共享权重,是图像和视频计算机视觉任务的事实上的标准骨干。

Self-attention in ConvNets

自注意机制已被用于图像理解、无监督对象识别以及视觉和语言。自注意运算和卷积网络的混合也被应用于图像理解和视频识别。

Vision Transformers

目前,人们对将变换器应用于视觉任务的热情大多始于vision transformer(ViT)和detection transformer。我们直接建立在允许通道扩展和分辨率下采样的分阶段模型的基础上。DeiT提出了一种数据高效的方法来训练ViT。我们的训练配方建立在相同设置下的DeiT之上,并将我们的图像分类模型与之进行比较。

Efficient Transformers

最近的工作降低了二次注意力的复杂性,使转换器在自然语言处理应用程序中更高效,这是对我们方法的补充。还有几项并行工作提出了一种基于ViT的视频架构。然而,这些方法依赖于对大量外部数据(如ImageNet21K)进行预训练,因此使用了适应性最小的普通ViT。相比之下,我们的MViT为transformer引入了多尺度、层次特征,允许在没有大规模外部数据的情况下对密集的视觉输入进行有效建模。

Multiscale Vision Transformer,MViT

通用多尺度Transformer架构建立在stage的核心概念之上。每个stage由多个具有特定时空分辨率和通道维度的Transformer block组成。多尺度Transformer的主要思想是逐步扩展信道容量,同时从输入到输出网络池化分辨率。

Multi Head Pooling Attention

我们首先描述了Multi Head Pooling Attention(MHPA),这是一种自注意算子,它能够在transformer块中进行灵活的分辨率建模,允许多尺度transformer以逐渐变化的时空分辨率进行操作。与原始的多头注意(MHA)算子不同,其中通道维度和时空分辨率保持固定,MHPA池化潜在张量序列,以减少参与输入的序列长度(分辨率)。

Multiscale Transformer Networks

MViT是仅使用 MHPA 和 MLP 层进行视觉表示学习的多尺度Transformer模型。

Preliminaries: Vision Transformer (ViT)

Vision Transformer (ViT) 架构首先对分辨率为 T ×H×W 的输入视频进行切割,其中 T 是帧的数量 ,H代表高度和W代表宽度,每个大小为 1×16×16 的非重叠块,然后在展平的图像块上进行线性层逐点应用,将它们投影到transformer的潜在维度 D 中。这相当于核大小为1×16×16的卷积,如表1中模型定义中的patch1阶段。

接下来,将位置嵌入E∈R添加到具有维度D、长度为L的投影序列的每个元素,以编码位置信息并打破排列不变性。将可学习类嵌入附加到投影的图像patch。

然后将得到的长度为 L + 1 的序列由 N 个transformer块的堆栈顺序处理,每个块执行注意力 MHA、多层感知器MLP和层归一化LN操作。将X视为块的输入,单个transformer块的输出Block(X) 由下式计算

N个连续块之后的结果序列被层归一化,类嵌入class embedding被提取并通过线性层来预测所需的输出(例如类)。默认情况下,MLP 的隐藏维度为 4D。

值得注意的是,ViT在所有块中保持恒定的信道容量和空间分辨率。

Multiscale Vision Transformers (MViT)

我们的关键概念是逐步增长通道分辨率(即维度),同时降低整个网络的时空分辨率(即序列长度)。通过设计,我们的 MViT 架构在早期层中具有精细的时空(和粗通道)分辨率,在后期层中上采样/下采样到粗时空(和细通道)分辨率。

Scale stages

一个scale stage被定义为一组N个transformer块,它们在同一尺度上操作,在通道和空间时间维度D×T ×H×W上具有相同的分辨率。在输入(表 2 中的 cube1),我们将patch(或立方体,如果它们具有时间范围)投影到更小的通道维度(例如,比典型的 ViT 模型小 8 倍),但更长序列(例如 4×4 = 16 倍比典型的 ViT 模型密集;参见表 1)。

在stage转换(例如 scale1 到 scale2 ,表 2)中,对处理后的序列的通道维度进行上采样,同时对序列的长度进行下采样。这有效地降低了底层视觉数据的时空分辨率,同时允许网络在更复杂的特征中吸收处理后的信息。

Channel expansion

当从一个stage过渡到下一个stage时,我们通过将前一阶段最终 MLP 层的输出增加一个相对于阶段引入的分辨率变化的因素来扩展通道维度。具体来说,如果我们将时空分辨率下采样 4 倍,我们将通道维度增加 2 倍。

提高通道数就是通过简单的全连接层对向量维度D进行映射。

Query pooling

池化操作不仅提供了K和V向量的长度的灵活性,而且也提供了Q的长度的灵活性,从而输出序列。以内核s池化q向量 P(Q; k; p; s)  ,会导致序列变短。我们的目的是在stage开始时降低分辨率,然后在每个stage保持这种分辨率,只有每个stage的第一个池化注意力算子在非退化查询步幅 sQ > 1 下运行,所有其他算子都被限制为 sQ≡(1,1,1)。

PS:降低空间分辨率=降低序列长度=降低Q向量长度。

Key-Value pooling

与q pooling不同,改变K和V张量的序列长度不会改变输出序列长度、时空分辨率。然而,它们在池化注意算子的整体计算需求中起着关键作用。

我们将 K、V 和 Q 池化解耦,在每个阶段的第一层使用 Q 池化,并在所有其他层中使用 K、V 池化。由于K和V张量的序列长度需要与允许注意力权重计算相同,因此 K 和 V 张量上使用的池化步幅需要相同。在我们的默认设置中,我们将所有池化参数 (k; p; s) 约束为相同的,即stage内的 ΘK ≡ ΘV,但跨stage自适应地将 w.r.t 更改为尺度。

Skip connections

由于残差块内的通道维度和序列长度变化,我们跳跃连接以适应其两端之间的维度不匹配。MHPA 通过将查询池运算符 P(·; ΘQ) 添加到残差路径中来处理这种不匹配。如下图,我们不是直接将 MHPA 的输入 X 添加到输出中,而是将池化的输入 X 添加到输出中,从而将分辨率与参与查询 Q 匹配。为了处理阶段变化之间的通道维度不匹配,我们采用了一个额外的线性层,它对MHPA操作的层归一化输出进行操作。请注意,这与在非归一化信号上运行的其他(保留分辨率)跳跃连接不同。

(这一步,必须保证L k = L v,即图中THW ,所以要降低空间分辨率,需要改变Q向量的序列长度。我们知道要改变序列长度,一个很好的办法是pooling操作。现在对Q进行pooling操作,同时实验证明K,V向量pooling会提高相应指标,所以对K,V向量也进行了pooling操作,但是不会影响空间分辨率的大小。为了保证残差connection成立,需要对输入X同样进行和Q向量一样的pooling操作。)

同样证明,降低空间分辨率=降低序列长度=降低Q向量长度。

Experiments

请查看原文。MViT主要是用来处理视频序列,作者做了大量的实验来处理视频任务,同时也在图片任务上进行了测试,都取得了不错的结果。另外,该论文消融实验还是做的蛮多的,建议多读读,也许可以学到一些东西。

ViT-B/ MViT-B/ MViT-S

ViT-B框架,即原版ViT中没有分层结构,输出和输入形状是一样。MViT采用MHPA,引入了分层结构,提出了两个不同大小的模型MViT-B/ MViT-S。值得注意的是,两个模型的体量都比较小,不到7G的显存就可以运行MViT-B。

同其他模型相比,可以看到MViT性能还是比较优秀。

Conclusion

我们提出了MViT,旨在将多尺度、层次结构的基本概念与transformer模型连接起来。MViT 在降低视觉分辨率的同时分层扩展了特征复杂性。在实证评估中,MViT 在视频和图像识别方面都比单尺度模型显示出有根本的优势。

本文由深圳季连科技有限公司AIgraphX自动驾驶大模型团队整理编辑。如有错误,欢迎在评论区指正,原文链接如下:

Multiscale Vision Transformers https://arxiv.org/abs/2104.11227.

MViTv2: Improved Multiscale Vision Transformers for Classification and Detection,

https://arxiv.org/abs/2112.01526.

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

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

相关文章

解锁一些SQL注入的姿势

昨天课堂上布置了要去看一些sql注入的案例&#xff0c;以下是我的心得&#xff1a; ​​​​​​​ ​​​​​​​ ​​​​​​​ 1.新方法 打了sqli的前十关&#xff0c;我发现一般都是联合查询&#xff0c;但是有没有不是联合查询的方法呢&#xf…

go 实现暴力破解数独

一切罪恶的来源是昨晚睡前玩了一把数独&#xff0c;找虐的选了个最难的模式&#xff0c;做了一个多小时才做完&#xff0c;然后就睡不着了..........程序员不能受这委屈&#xff0c;今天咋样也得把这玩意儿破解了 破解思路&#xff08;暴力破解加深度遍历&#xff09; 把数独…

企业计算机中了360后缀勒索病毒怎么办,360后缀勒索病毒解密流程

企业计算机服务器在生产运营过程中发挥着巨大作用&#xff0c;为企业带来极大便利&#xff0c;存储着企业的重要核心数据&#xff0c;但同时也成为众多勒索病毒攻击的目标。近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机服务器遭到了360后缀勒索…

大数据学习之Redis、从零基础到入门(一)

目录 一、Redis入门概述 1. 是什么&#xff1f; 官方解释&#xff1a; 2. 能干嘛&#xff1f; 2.1 主流功能与应用 2.1.1分布式缓存 2.1.2内存存储和持久化(RDBAOF) 2.1.3高可用架构搭建 2.1.4缓存穿透、击穿、雪崩 2.1.5分布式锁 2.1.6队列 2.2 总体功能概括 2.3…

【C++干货铺】C++中的IO流和文件操作

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 C语言的输入输出 流是什么&#xff1f; C的IO流 C标准IO流 C文件IO流 文本文件读写 二进制文件的读写 stringstream的简单介绍 将数值类型数据格式化为字…

【GitHub项目推荐--GitHub开源项目排行榜】【转载】

GitHub Ranking GitHub Ranking 是最近 Star 陡增的开源项目&#xff0c;这是一个 GitHub Stars 和 Forks 的排行榜&#xff0c;包含 Github Top 100 Star 的开源项目&#xff0c;根据不同编程语言进行分类&#xff0c;会每天更新。 开源地址&#xff1a;https://github.com/…

【排序算法】C语言实现归并排序,包括递归和迭代两个版本

文章目录 &#x1f680;前言&#x1f680;归并排序介绍及其思想&#x1f680;递归实现&#x1f680;迭代实现 &#x1f680;前言 大家好啊&#xff01;阿辉接着更新排序算法&#xff0c;今天要讲的是归并排序&#xff0c;这里阿辉将讲到归并排序的递归实现和迭代实现&#xff…

LLM之llm-viz:llm-viz(3D可视化GPT风格LLM)的简介、安装和使用方法、案例应用之详细攻略

LLM之llm-viz&#xff1a;llm-viz(3D可视化GPT风格LLM)的简介、安装和使用方法、案例应用之详细攻略 目录 llm-viz的简介 1、LLM可视化 2、CPU模拟&#xff08;WIP&#xff1b;尚未公开&#xff01;&#xff09; llm-viz的安装和使用方法 llm-viz的案例应用 1、三维可视化…

智慧文旅:未来旅游业的数字化转型

随着科技的快速发展&#xff0c;数字化转型已经成为各行各业的必然趋势。旅游业作为全球经济的重要组成部分&#xff0c;也正经历着前所未有的变革。智慧文旅作为数字化转型的重要领域&#xff0c;正逐渐改变着旅游业的传统模式&#xff0c;为游客带来更加便捷、个性化的旅游体…

使用signal中止阻塞的socket函数的应用实例

在 socket 编程中&#xff0c;有一些函数是阻塞的&#xff0c;为了使程序高效运行&#xff0c;有一些办法可以把这些阻塞函数变成非阻塞的&#xff0c;本文介绍一种使用定时器信号中断阻塞函数的方法&#xff0c;同时介绍了一些信号处理和定时器设置的编程方法&#xff0c;本文…

【IM】如何保证消息可用性(一)

目录 1. 基本概念1.1 长连接 和 短连接1.2 PUSH模式和PULL模式 2. 背景介绍2.1 理解端到端的思想 3. 方案选型3.1 技术挑战3.2 技术目标 1. 基本概念 在讲解消息可用性之前&#xff0c;需要理解几个通信领域的基本概念。 1.1 长连接 和 短连接 什么是长连接&#xff0c;短连接…

MQ面试题之Kafka

前言 前文介绍了消息队列相关知识&#xff0c;并未针对某个具体的产品&#xff0c;所以略显抽象。本人毕业到现在使用的都是公司内部产品&#xff0c;对于通用产品无实际经验&#xff0c;但是各种消息中间件大差不差&#xff0c;故而本次选择一个相对较熟悉的Kafka进行详细介绍…

YoloV8改进策略:BackBone改进|DCNv4最新实践|高效涨点|多种改进教程|完整论文翻译

摘要 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.993,mAP50-95由0.737涨到0.77,涨点明显! DCNv4是可变形卷积的第四版,速度和v3相比有了大幅度的提升,但是环境搭建有一定的难度,对新手不太友好。如果在使用过程遇到编译的问题,请严格按照我写的环境配置。 …

RBD —— Fracture SOP

目录 Assemble —— 清理破碎操作并生成碎片 Boolean Fracture —— 使用切割面破碎输入的几何体 Convex Decomposition —— 将输入几何体分解为凸线段 Glue Cluster —— 构建cluster值想glue约束添加强度 RBD Material Fracture —— 基于材质类型预破碎 Concrete Gl…

C++ 之LeetCode刷题记录(二十)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 110. 平衡二叉树 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二…

RK3588平台开发系列讲解(视频篇)RKMedia框架

文章目录 一、 RKMedia框架介绍二、 RKMedia框架API三、 视频处理流程四、venc 测试案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输出、音视频编解码等功能。 一、 RKMedia框架介绍 功能: VI(输…

【牛客刷题】笔试选择题整理(day1-day2)

每天都在进步呀 文章目录 1. 小数求模运算2. 进程的分区&#xff0c;这里说的不是JVM的分区。进程中&#xff0c;方法存放在方法区。3. 访问权限控制4. 继承与多态5. 与equals()6. 类加载顺序7. super()与this()7.1 super7.1.1 super调用父类构造方法7.1.2 super调用父类属性和…

私人漫画图书馆:分类管理,一目了然 | 开源日报 No.157

tachiyomiorg/tachiyomi Stars: 26.9k License: Apache-2.0 tachiyomi 是一个免费开源的安卓漫画阅读器。 该项目的主要功能、关键特性、核心优势包括&#xff1a; 从多种来源在线阅读本地阅读已下载内容可配置的阅读器&#xff0c;具有多个查看器、翻页方向和其他设置支持追…

什么叫高斯分布?

高斯分布&#xff0c;也称为正态分布&#xff0c;是统计学中最常见的概率分布之一。它具有钟形曲线的形态&#xff0c;对称分布在均值周围&#xff0c;且由均值和标准差两个参数完全描述。 高斯分布的概率密度函数&#xff08;Probability Density Function, PDF&#xff09;可…

[设计模式Java实现附plantuml源码~创建型] 复杂对象的组装与创建——建造者模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…