【Paper Note】Video Swin Transformer

news2025/1/18 4:46:01

Video Swin Transformer

  • 介绍
  • 架构
    • 3.2 3D Shifted Window based MSA Module
      • 3.2.1 在不重叠的三维窗口上的MSA
      • 3.2.2 3D Shifted Windows
      • 3.2.3. 3D Relative Position Bias
    • 3.3 Architecture Variants
    • 3.4 Initialization from Pre-trained Model
  • 总结

文章链接:https://arxiv.org/abs/2106.13230

代码链接:https://github.com/SwinTransformer/Video-Swin-Transformer

介绍

本文提出的Video Swin Transformer,严格遵循原始Swin Transformer的层次结构,但将局部注意力计算的范围从空间域扩展到时空域。由于局部注意力是在非重叠窗口上计算的,因此原始Swin Transformer的滑动窗口机制也被重新定义了,以适应时间和空间两个域的信息。

在时空距离上更接近的像素更有可能相关 ,作者在网络结构中利用了这个假设偏置,所以达到了更高的建模效率。

架构

在这里插入图片描述
Video Swin Transformer的总体结构如上图所示。输入的视频数据为 T × H × W × 3 T×H×W×3 T×H×W×3
的张量,由T帧的 H × W × 3 H×W×3 H×W×3的图片组成。在Video Swin Transformer中,作者用的3D patch的大小为$ 2×4×4×3$,因此就可以得到 T / 2 × H / 4 × W / 4 × 3 T/2×H/4×W/4×3 T/2×H/4×W/4×3个 3D Patch,然后用线性embedding层将特征映射到维度为C的token embedding。

为了能够严格遵循Swin Transformer的层次结构,作者在时间维度上没有进行降采样,每个stage只在空间维度上进行了 2 × 2 2×2 2×2的降采样。Patch合并层连接每组2×2个空间相邻patch的特征,并应用一个线性层将连接的特征投影到原来通道尺寸的一半。例如,第二阶段中的线性层将每个通道维度为4C的token映射为2C。

该体系结构的主要组件是 Video Swin Transformer block,这个模块就是将Transformer中 multi-head self-attention (MSA)替换成了基于3D滑动窗口的MSA模块。具体地说,一个 Video Transformer block由一个基于3D滑动窗口的MSA模块和一个前馈网络(FFN)组成,其中FFN由两层的MLP和激活函数GELU组成Layer Normalization(LN)被用在每个MSA和FFN模块之前,残差连接被用在了每个模块之后

3.2 3D Shifted Window based MSA Module

与图像相比,视频需要更多的输入token来表示它们,因为视频另外有一个时间维度。因此,一个全局的自注意模块将不适合视频任务,因为这将导致巨大的计算和内存成本。在这里,作者遵循Swin Transformer的方法,在自注意模块中引入了一个局部感应偏置。

3.2.1 在不重叠的三维窗口上的MSA

在每个不重叠的二维窗口上的MSA机制已被证明对图像识别是有效并且高效的。在这里,作者直接扩展了这种设计到处理视频输入中。给定一个由 T ’ × H ′ × W ′ T’×H'×W' T×H×W个3D token组成的视频,3D窗口大小为 P × M × M P×M×M P×M×M,这些窗口以不重叠的方式均匀地分割视频输入。这些token被分成了多个不重叠的3D窗口。

在这里插入图片描述

如上图(中)所示,对于输入大小为8×8×8的token和窗口大小为4×4×4,第
层中的窗口数将为2×2×2=8。

3.2.2 3D Shifted Windows

由于在每个不重叠的三维窗口中都应用了多头自注意机制,因此缺乏跨不同窗口的关系建模,这可能会限制特征的表示能力。因此,作者将Swin Transformer的移位二维窗口(shifted 2D window)机制扩展到3D窗口,以引入跨窗口连接,同时保持基于非重叠自注意的高效窗口计算。
对于Self-Attention模块的第一层,就如上面所示采用均匀分块的方式。对于第二层,窗口分区配置沿着来自上一层自注意模块的时间、高度和宽度方向分别移动 P / 2 、 M / 2 、 M / 2 P/2、M/2、M/2 P/2M/2M/2个token的距离。

在这里插入图片描述
如上图(右)所示,输入大小为8×8×8,窗口大小为4×4×4。由于l层采用常规的窗口划分,l层中的窗口数为2×2×2=8。对于第l+1
层,当窗口会在三个方向上分别移动 ( P / 2 , M / 2 , M / 2 ) = ( 2 , 2 , 2 ) (P/2,M/2,M/2) = (2,2,2) P/2M/2M/2=2,2,2个token的距离,因此窗口数量为3×3×3=27。

采用滑动窗口划分的方法,两个连续的Video Swin Transformer块计算如下所示:

在这里插入图片描述

在这里插入图片描述

3.2.3. 3D Relative Position Bias

先前的工作已经表明,在自注意计算中包含相对位置编码对于performance的提升是有用的。因此作者在Video Swin Transformer也引入了3D相对位置编码,计算方式如下:

Attention ( Q , K , V ) = SoftMax ( Q K T / d + B ) V \text{Attention}(Q,K,V)=\text{SoftMax}(QK^T/\sqrt{d}+B)V Attention(Q,K,V)=SoftMax(QKT/d +B)V

3.3 Architecture Variants

基于上面的设计,作者提出了下面四种不同参数量和计算量的网络结构:

在这里插入图片描述

3.4 Initialization from Pre-trained Model

由于Video Swin Transformer改编于Swin Transformer,因此Video Swin Transformer可以用在大型图像数据集上预训练的模型参数进行初始化。与Swin Transformer相比,Video Swin Transformer中只有两个模块具有不同的形状,分别为:线性embedding层和相对位置编码。

输入token在时间维度上变成了2,因此线性embedding层的形状从Swin Transformer的48×C变为96×C。在这里,作者直接复制预训练过的模型中的参数两次,然后将整个矩阵乘以0.5,以保持输出的均值和方差不变。

相对位置编码矩阵的形状为 ( 2 P − 1 , 2 M − 1 , 2 M − 1 ) (2P-1,2M-1,2M-1) (2P1,2M1,2M1),而原始Swin Transformer中的形状为 ( 2 M − 1 , 2 M − 1 ) (2M-1,2M-1) (2M1,2M1)。为了使相对位置编码的矩阵一样,作者将原来的 ( 2 M − 1 , 2 M − 1 ) (2M-1,2M-1) (2M1,2M1)相对位置编码矩阵复制了 2 P − 1 2P-1 2P1次。

总结

在本文中,作者提出了一种基于时空局部感应偏置的视频识别纯Transformer的结构。该模型从用于图像识别的Swin Transformer改变而来,因此它可以利用预训练的Swin Transformer模型进行参数的初始化。该方法在三个广泛使用的视频基准数据集上(Kinetics-400, Kinetics-600, Something-Something v2)测试,并且实现了SOTA的性能,

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

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

相关文章

zabbix自动发现和自动注册部署

目录 zabbix自动发现 确保客户端上的zabbix-agent2服务状态正常 在web页面删除原有的客户端主机 在服务端和客户端上配置 hosts 解析 在 Web 页面配置自动发现 zabbix自动注册 环境准备 修改 zabbix-agent2 配置文件 在 Web 页面配置自动注册 zabbix自动发现 对于agen…

如何使用Git将本地代码上传GitHub仓库?

如何使用Git将本地代码上传GitHub仓库呢? 前提 要上传本地代码到GitHub仓库,那必然要先在GitHub上建立一个存储代码的仓库,这里我在仓库新建了一个名为5blog的仓库。 备注:本文章将以默认分支main为例来讲解上传步骤 接着我们打…

学习经验分享【26】论文写作画图方法(持续更新)

写作前面:论文投稿能否成功,图表作为比较直观的展现,起着关键的作用,图表丰富规范好看,一定程度上能够吸引编辑和审稿人的眼球,提升录用概率。就跟人的形象一样,形象好第一印象就会好&#xff0…

简单的重装系统教程

郁闷,最近电脑一直蓝屏重启,用 2 分钟就蓝屏一次,遂产生重装系统的想法。 准备 U盘(8G或以上) PE 工具: 微PE工具箱快速指引 | 微PE优盘使用说明书 (wepe.com.cn) 系统镜像: 官网 Windows 10 官网 Windows 11 M…

送给程序员的一份养生指南

本文是 Joe Kutner 的《程序员健康指南》的干货记录。时刻提醒自己要有一个健康的工作和生活方式。身体是革命的本钱,年轻的时候拿身体换钱,老了可能就要拿钱换身体。当你有被程序员职业困扰的健康问题时,希望这篇干货记录可以给予你一定的帮…

mybatis代码生成器模板配置

1.mybatis代码生成器的介绍 代码生成器的目标就是简化单表的增删改查操作,这些标准化的流程工作,交给机器来实现,不需要程序员自己去完成。一般对一张表的操作有,根据主键查询,根据map集合查询,单条数据插…

追踪行人和车辆,并使用deep-person-reid训练自定义追踪模型(行人和车辆两类)

deep-person-reid训练自定义模型 1. 准备代码2. market1501格式3 转换格式代码4. 训练5 追踪测试 仅供参考,目前实现的格式转化还是存在一定的问题,导致训练后的模型精度很高,分配上还是没有完全符合market1501的格式。依照这样训练的模型&am…

UG NX二次开发(C#)-建模-求解两条样条曲线的最大距离

文章目录 1、前言2、最大距离示例3、NXOpen代码实现1、前言 在UG NX中计算两条样条曲线的最小距离是我们常用的,但是计算最大距离却很少用,但是UG NX二次开发为我们提供了这个计算方法,我们只需要调用即可。本小节是用于计算两条样条曲线的最大距离的二次开发讲解。 2、最…

封装通用el-form表单(2种方式)

1、序言 项目地址:git clone form-demo: 封装通用el-form 一个后台管理系统最常见的是表单,表单最常见的是输入框、下拉选择、日期选择、单选、复选框等等, 系统添加若干模块,就复制粘贴若干个el-form、el-form-item,有…

Ubuntu下好用的截图工具flameshot

在Linux环境下截图也是十分重要的东西,flameshot则是一款十分好用的工具 sudo apt-get install flameshot 即可安装 安装完成后打开设置(settings) -> 设备(Devices) -> 键盘快捷键(keyboard Shortcuts),滑到最底下,找到一个加号 点击加号填入以…

300块买什么蓝牙耳机好?无线蓝牙耳机300左右推荐

不管你的手机是否被保留3.5mm的音频接口,蓝牙耳机必定是可以入手的,无束缚的听歌方式对我们中的大多数人都有着很强的吸引力。大多数都定价在几十几百几千不等,但是在300左右的价位更受大众欢迎,说明了中端市场是该类产品竞争最激…

如何把Ai绘画工具放到我们的App中

Scribble Diffusion 是一个简单的在线服务,它使用 AI 将粗略的草图转换为精致的图像,每一张图像都是不同的(而且没有版权困扰)。简单来说,我们只需要「用画笔描绘一张草图,在输入描述后稍等片刻」&#xff…

【Linux】1、操作系统、计算机硬件和软件、Linux 介绍

目录 一、计算机的硬件和软件(1) 硬件(2) 软件 二、操作系统(1) OS 作用(2) OS 举例 三、Linux 内核(1) 介绍(2) Linux 发行版 四、虚拟机 一、计算机的硬件和软件 (1) 硬件 🖥️ 计算机由硬件和软件组成 🖥️ 硬件:计算机中由电子、机械和…

pandas汇总和描述性统计

本文介绍pandas中汇总和描述性统计中的基本内容,仅供参考。 目录 1描述和汇总统计 1.1sum方法 1.2idxmin和idxmax方法 1.3describe方法 1.4描述和汇总统计的常用方法 2相关系数和协方差 3唯一值、值计数以及成员资格 3.1唯一值 3.2值计数 3.3成员资格 1…

【区块链】走进web3的世界-获取Token价格

1、通过预言机获取Token价格(需要部署合约) 在以太坊区块链上,由于智能合约本身无法获取外部数据,因此需要使用预言机 (Oracle) 来获取外部数据。 以下是一个获取代币价格的示例: 选择预言机:首先需要选…

ThreadLocal小记

1、ThreadLocal介绍 1.1、官方介绍 /*** This class provides thread-local variables. These variables differ from* their normal counterparts in that each thread that accesses one (via its* {code get} or {code set} method) has its own, independently initiali…

PPOCR - 命令行训练模型基本流程和常用命令+visualdl可视化

前言 本文记录实践中用paddleocr训练自己的模型的基本步骤和常用命令,以detection为例 更详细内容请参考官方文档https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.6/doc/doc_ch 〇、环境准备 0.1 paddlepaddle环境安装 paddle环境安装链接 根据自己的…

H.264 编码中, I 帧、B 帧、P 帧、IDR 帧的区别

在H.264协议里定义了三种帧,完整编码的帧叫 I 帧,参考之前的 I 帧生成的只包含差异部分编码的帧叫 P 帧,还有一种参考前后的帧编码的帧叫 B 帧。 H.264采用的核心算法是帧内压缩和帧间压缩,帧内压缩是生成 I 帧的算法&#xff0c…

【镜像取证篇】DD和E01镜像格式区别(简)

【镜像取证篇】DD和E01镜像格式区别(简) ​ 简单总结下—【蘇小沐】 文章目录 【镜像取证篇】DD和E01镜像格式区别(简)1、实验环境 (一)DD镜像-原始镜像(和源盘大小一致)&#xff0…

C#基础学习--事件

目录 发布者和订阅者 源代码组件概览 声明事件 事件是成员 订阅事件 触发事件 标准事件的用法 通过扩展EventArgs来传递数据 泛型委托 移除事件处理程序 - 事件访问器 发布者和订阅者 发布者/订阅者模式中,发布者类 定义了一系列程序的其他部分可能感兴趣的事件…