[Video Transformer] Video Swin Transformer

代码: GitHub - SwinTransformer/Video-Swin-Transformer: This is an official implementation for "Video Swin Transformers".

论文: https://arxiv.org/pdf/2106.13230.pdf

代码解读: Swin-Transformer代码讲解-Video Swin-Transformer_ly59782的博客-CSDN博客

Swin Transformer

https://arxiv.org/abs/2103.14030v1?ref=hackernoon.com#

https://github.com/microsoft/Swin-Transformer

Swin Transformer的最大特点是类似于CNN中的conv+pooling结构,

在Swin Transformer中是Swin Transformer Block + Patch merging。

通过多个stage,token数越来越少,每个token的感受野也会越来越大。

同时,token数的递减以及window transformer计算使得计算量减少。

Swim Transformer主要包含三个阶段:image to token, model stages,head。

Image to token

类似于VIT,直接将输入图像划分为互不重叠大小为4*4的图像块,然后利用线性层对图像块进行embedding,再加上position embedding。

Model stages

类似于vgg或resnet结构,Model stages由多个重复的stage组成,每个model stage包括Swin Transformer Block 和 Patch merging组成。随着网络的加深,Swin Transformer 可以提取较VIT更好的高层特征。

1)Swin Transformer Block 由可以分为两部分,W-MSA and SW-MSA。

MSA即为transformer 中的MSA(Multihead self attention)。在Swin Transformer中加入了window和shift window。

2)Patch merging类似于max pooing,将4个patch合成一个新的patch,而后再利用线性层控制通道维度为2C。

Head

图像经过model stages 之后已经是可用的高层特征了,head部分就是根据任务进行计算就好,比如分类任务,可以直接用mlp进行分类。

——————————————————————————————————————

Video Swin Transformer

基本结构和Swin Transformer几乎完全一致,只是在计算时多了时间维度。

Video Swin Transformer由三个部分组成:video to token, model stages,head。

 

Video to token

在image to token中,是将4x4的图像块作为一组。

而在Video to token中,输入视频数据为T*H*W*3

首先通过3D Patch Partition得到T/2*H/4*W/4个尺寸为2 * 4 * 4 * 3 3D Patch

而后再进行线性embedding以及position embedding。

后续处理中时间维度是不变的。

 

Model stages

每个model stage包括Video Swin Transformer Block 和 Patch merging组成。

1)Video Swin Transformer Block

可以分为两部分,Video W-MSA 和 Video SW-MSA。这里相当于将Swin Transformer Block计算由二维拓展到三维。

滑动窗口是3D的。

对于输入8*8*8,窗口大小4*4*4,则第 l 层窗口数为2*2*2=8.

对于第 l + 1 层,窗口分区配置沿着来自上一层自注意模块的时间、高度和宽度方向分别移动

P/2、M/2、M/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) 个token的距离,因此窗口数量为3×3×3=27。

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

 

2)Patch merging

类似于max pooing,将相邻(2*2窗口内)token特征合并,而后再利用线性层降维。

例如second stage的线性层将每个token 4C维度的特征映射到 2C 维度。

这里每次进行patching merging,视频帧数是不变的。

 

3D Relative Position Bias

 

Head

在经过Model stages之后,得到了多帧数据的高维特征,

用于视频分类时需要进行简单的帧融合(average),作者代码中用的是I3D Head。

Human action recognition:Kinetics-400,Kinetics-600,Something-Something v2

Ablations

测试三种不同的时空注意力方式

joint表示在每个3D window-based MSA layer中同时进行时空注意力

split表示在spatial-only Swin Transformer后面加上两个temporal transformer层

factorized表示在每个spatial-only MSA layer后面都增加一个temporal-only MSA layer

从表4中可以看出joint版本实现了最佳速度精度折衷。

split版本在我们的场景中无法正常工作。虽然这个版本自然可以从预先训练的模型中获益,但是这个版本的时间建模并没有那么有效。

factorized版本产生相对较高的top-1精度,但需要比joint版本更多的参数。这是由于factorized版本在每个spatial-only注意层之后具有temporal-only注意层,而joint版本在相同的注意层中执行空间和时间注意。

 Temporal dimension和window size越大,效果越好,但计算代价也更高。

关于backbone和head学习率比率的实验结果如表7所示。backbone结构学习率相对于head学习率的比率较低时,可以提高精度。

由于在ImageNet-21K上预训练的模型更强,因此使用在ImageNet-21K上预训练的模型从该技术中受益更多。

因此,主干在拟合新的视频输入时会慢慢忘记预先训练的参数和数据,从而获得更好的泛化效果。

这一结果为进一步研究如何更好地利用预先训练的权重提供了方向。

从ViViT中得知,linear embedding layer的center初始化要远远优于inflate初始化。

在video swin transformer中,采用center初始化与采用inflate初始化具有相同的性能。

在本文中,我们默认采用传统的线性嵌入层inflate初始化。

对于3D relative position bias matrix,也有两种不同的初始化选择,duplicate或center初始化。

center初始化通过使用较小的负值屏蔽不同帧之间的相对位置偏差,使每个token从一开始就只聚焦在同一帧内。

如表9所示,两种初始化方法达到了相同的top-1精度。默认情况下,采用duplicate初始化。

  • 1
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Video Swin Transformer是对Swin Transformer在视频领域的应用进行改进的一种方法。根据引用中提到的资料,Video Swin Transformer在构建窗口和进行注意力计算时有一些不同之处。具体来说,Video Swin Transformer引入了时间的维度,以考虑视频中的时序信息。 关于Video Swin Transformer的改进,我找到了一些参考资料。引用提供了Swin-Transformer网络结构的详细解释,可以帮助进一步理解Video Swin Transformer的改进之处。引用提供了Swin Transformer论文的精读,可能包含一些关于Video Swin Transformer的改进信息。此外,引用中的文章也提供了从零开始详细解读Swin Transformer,可能包含相关的改进内容。 另外,引用是Video Swin Transformer的官方实现代码的GitHub链接,你可以进一步探索该代码以获取更多关于Video Swin Transformer的改进信息。 综上所述,Video Swin Transformer是对Swin Transformer在视频领域进行的改进,你可以通过参考的论文、资料和代码来了解更多有关其改进的内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [论文阅读 - Video Swin Transformer](https://blog.csdn.net/zjuPeco/article/details/122860198)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [[Video Transformer] Video Swin Transformer](https://blog.csdn.net/weixin_46746665/article/details/122567590)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值