当前位置: 首页 > news >正文

视频多模态模型——视频版ViT

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细解读多模态论文《ViViT: A Video Vision Transformer》,2021由google 提出用于视频处理的视觉 Transformer 模型,在视频多模态领域有重要应用。

在这里插入图片描述

文章目录

    • 论文
    • 摘要
    • 1. 引言
    • 2. 相关工作
    • 3. 视频视觉Transformer
      • 3.1 视觉Transformer(ViT)概述
      • 3.2 嵌入视频片段
        • 均匀帧采样
        • 管块嵌入
      • 3.3 视频的Transformer模型
        • 模型1:时空注意力
        • 模型2:分解编码器
        • 模型3:分解自注意力
        • 模型4:分解点积注意力
      • 3.4 利用预训练模型进行初始化
    • 4. 实验
      • 4.1 数据集
      • 4.2 实现细节
      • 4.3 结果
      • 4.4 消融研究
    • 5. 结论
  • 热门专栏
    • 机器学习
    • 深度学习

论文

论文名:ViViT: A Video Vision Transformer
论文链接:https://arxiv.org/pdf/2103.15691
代码:https://github.com/google-research/scenic

作者充分借鉴了之前3D CNN因式分解等工作,比如考虑到视频作为输入会产生大量的时空token,处理时必须考虑这些长范围token序列的上下文关系,同时要兼顾模型效率问题。

他们在空间和时间维度上分别对Transformer编码器各组件进行分解,在ViT模型的基础上提出了三种用于视频分类的纯Transformer模型。

摘要

  1. 模型提出背景与构建:受Transformer在图像分类领域(ViT模型) 成功启发,提出基于纯Transformer的视频分类模型,从输入视频提取时空标记,经一系列Transformer层编码。
  2. 模型优化:针对视频长序列标记,提出几种高效模型变体,对输入空间和时间维度分解;在训练中有效正则化模型,利用预训练图像模型,实现小数据集训练
  3. 实验成果:进行全面消融研究,在Kinetics 400、Kinetics 600、Epic Kitchens、Something-Something v2和Moments in Time等多个视频分类基准测试中取得领先成果,超越基于深度3D卷积网络的先前方法。

1. 引言

此前,基于注意力的模型在自然语言处理中的成功,激发了计算机视觉领域将Transformer集成到卷积神经网络(CNN)中的研究,以及一些完全取代卷积的尝试。直到最近的视觉Transformer(ViT)出现,基于纯Transformer的架构才在图像分类中超越了其卷积对应架构。ViT 遵循原始Transformer架构,并指出其主要优势在大规模数据上才能体现出来——由于Transformer缺乏卷积的一些归纳偏差(如平移等变性),它们似乎需要更多数据或更强的正则化。

ViT 详细介绍参考:TODO。

受ViT等的启发作者开发了几种基于Transformer的视频分类模型。目前,性能最佳的模型基于深度3D卷积架构(图像分类CNN的自然扩展),通过在后期层中引入自注意力机制,以更好地捕捉长距离依赖关系

在这里插入图片描述

图1:受图像分类中基于Transformer模型的成功启发,我们提出了用于视频分类的纯Transformer架构。为有效处理大量时空标记,我们开发了几种模型变体,在空间和时间维度上对Transformer编码器的不同组件进行分解。如右图所示,这些分解对应于不同的时空注意力模式。

如图1所示,作者提出用于视频分类的纯 Transformer 模型,主要操作是自注意力机制,在从输入视频提取的时空标记上计算。并进行了优化,策略如下:

  1. 为处理大量时空标记,提出沿空间和时间维度分解模型的方法,提升效率与可扩展性。
  2. 为了在小数据集训练,训练过程中对模型进行了正则化,并利用预训练图像模型。

卷积模型的研究和实践总多,但因纯Transformer模型具有不同的特性,需确定最佳设计选择。为此,作者对标记化策略、模型架构和正则化方法进行全面消融分析:在Kinetics 400和600、Epic Kitchens 100、Something - Something v2和Moments in Time等多个标准视频分类基准测试中取得先进成果。

2. 相关工作

这部分介绍之前的研究进展,如下:

  1. 视频理解架构发展
    • 早期用手工特征编码信息,AlexNet成功使2D CNN用于视频形成“双流”网络,独立处理RGB帧与光流图像后融合。
    • 大数据集促进时空3D CNN训练,但计算资源需求大,很多架构通过跨空间和时间维度分解卷积和/或用分组卷积提高效率,本文在Transformer模型下利用此方法
  2. NLP中Transformer进展:Vaswani等人用Transformer取代卷积和循环网络获先进成果,当前NLP主流架构仍基于此,还提出多种变体降成本、提效率。自注意力在计算机视觉领域,通常是在网络的末端或后期阶段作为一层融入,或用于增强ResNet架构中的残差块。
  3. 视觉领域Transformer情况:Dosovitisky等人的ViT证明纯Transformer可用于图像分类,但需大规模数据,因其缺乏卷积的归纳偏差。ViT引发后续研究,已有基于Transformer的视频模型。

在本文中,作者开发了用于视频分类纯Transformer架构。提出了几种模型变体,包括通过分解输入视频的空间和时间维度来提高效率的变体,还展示了如何用额外正则化和预训练模型应对视频数据集小的问题。最后,在五个流行数据集上超越了当前最先进的方法。

3. 视频视觉Transformer

  • 在3.1节中总结最近提出的视觉Transformer(ViT)
  • 在3.2节中讨论从视频中提取标记的两种方法。
  • 在3.3和3.4节中开发几种基于Transformer的视频分类架构。

3.1 视觉Transformer(ViT)概述

视觉Transformer(ViT)对原始的Transformer架构进行了最小限度的调整,以用于处理二维图像。具体而言,ViT会提取N个不重叠的图像补丁, x i ∈ R h × w x_{i} \in \mathbb{R}^{h ×w} xiRh×w ,对其进行线性投影,然后将它们光栅化为一维标记 z i ∈ R d z_{i} \in \mathbb{R}^{d} ziRd 。输入到后续Transformer编码器的标记序列为:
z = [ z c l s , E x 1 , E x 2 , . . . , E x N ] + p ( 1 ) z = [z_{cls}, Ex_{1}, Ex_{2}, ..., Ex_{N}] + p \quad(1) z=[zcls,Ex1,Ex2,...,ExN]+p(1)

其中,E执行的投影操作等效于二维卷积。如图1所示,一个可选的可学习分类标记 z c l s z_{cls} zcls被添加到这个序列的开头,它在编码器最后一层的表示会作为分类层使用的最终表示。

此外,一个1D可学习的位置嵌入 p ∈ R N × d p \in \mathbb{R}^{N ×d} pRN×d被添加到这些标记中,用于保留位置信息,因为Transformer后续的自注意力操作具有排列不变性。然后,这些标记会通过由L个Transformer层组成的编码器。每个层 ℓ \ell 由多头自注意力机制、层归一化(LN)和多层感知器(MLP)模块构成,具体如下:
y ℓ = M S A ( L N ( z ℓ ) ) + z ℓ ( 2 ) y^{\ell} = MSA(LN(z^{\ell})) + z^{\ell} \quad(2) y=MSA(LN(z))+z(2)
z ℓ + 1 = M L P ( L N ( y ℓ ) ) + y ℓ ( 3 ) z^{\ell + 1} = MLP(LN(y^{\ell})) + y^{\ell} \quad(3) z+1=MLP(LN(y))+y(3)
MLP由两个由高斯误差线性单元(GELU)非线性函数隔开的线性投影组成,并且标记维度d在所有层中保持不变。

最后,如果在输入中添加了 z c l s z_{cls} zcls,则使用线性分类器基于 z c l s L ∈ R d z_{cls}^{L} \in \mathbb{R}^{d} zclsLRd对编码后的输入进行分类;否则,对所有标记 z L z^{L} zL进行全局平均池化,再进行分类。

由于Transformer是一个灵活的架构,可以对任何输入标记序列 z ∈ R N × d z \in \mathbb{R}^{N×d} zRN×d进行操作,接下来将描述视频标记化的策略

ViT 详细介绍参考:TODO。

3.2 嵌入视频片段

这里,作者考虑两种将视频 V ∈ R T × H × W × C V \in \mathbb{R}^{T×H×W×C} VRT×H×W×C映射到标记序列 z ~ ∈ R n t × n h × n w × d \tilde{z} \in \mathbb{R}^{n_{t}×n_{h}×n_{w}×d} z~Rnt×nh×nw×d的简单方法。之后再添加位置嵌入并将其重塑为 R N × d \mathbb{R}^{N×d} RN×d,以获得输入到Transformer的 z z z
在这里插入图片描述

图2:均匀帧采样:我们简单地采样 n t n_{t} nt帧,并按照ViT独立嵌入每个2D帧。

均匀帧采样

如图2所示,这是一种直接的视频标记化方法。从输入视频片段中均匀采样 n t n_{t} nt帧,使用与ViT相同的方法独立嵌入每个2D帧,然后将所有这些标记连接在一起。
具体来说,如果像ViT中那样,从每个帧中提取 n h ⋅ n w n_{h} \cdot n_{w} nhnw个不重叠的图像补丁,那么总共 n t ⋅ n h ⋅ n w n_{t} \cdot n_{h} \cdot n_{w} ntnhnw个标记将被输入到Transformer编码器中。
直观地说,这个过程可以看作是简单地构建一个大的2D图像,然后按照ViT的方式进行标记化(这是同期工作中采用的输入嵌入方法)。

在这里插入图片描述

图3:管块嵌入。我们提取并线性嵌入跨越时空输入体的不重叠管块。

管块嵌入

如图3所示,这是从输入体数据中提取不重叠的时空“管块”,并将其线性投影到 R d \mathbb{R}^{d} Rd
这种方法是ViT嵌入到3D的扩展,对应于3D卷积。对于维度为 t × h × w t×h×w t×h×w的管块, n t = ⌊ T t ⌋ n_{t} = \lfloor\frac{T}{t}\rfloor nt=tT n h = ⌊ H h ⌋ n_{h} = \lfloor\frac{H}{h}\rfloor nh=hH n w = ⌊ W w ⌋ n_{w} = \lfloor\frac{W}{w}\rfloor nw=wW,分别从时间、高度和宽度维度提取标记。
因此,较小的管块尺寸会导致更多的标记,从而增加计算量。直观地说,这种方法在标记化过程中融合了时空信息,与“均匀帧采样”不同,在“均匀帧采样”中,不同帧的时间信息是由Transformer融合的。

3.3 视频的Transformer模型

如图1所示,作者提出了多种基于Transformer的架构。首先是直接对视觉Transformer(ViT)进行扩展,该扩展对所有时空标记之间的成对交互进行建模,然后,在Transformer架构的不同层次上对输入视频的空间和时间维度进行分解,开发了更高效的变体。

模型1:时空注意力

该模型是对 ViT 的直接扩展,它简单地从视频中提取的所有时空标记 z 0 z^{0} z0输入到Transformer编码器中
【 Is space-time attention all you need for video understanding?】论文中在其“联合时空”模型中也探索了这种方法。与CNN架构不同,在CNN中感受野随着层数线性增长,而每个 Transformer 层对所有(时空标记之间的)成对(关系)进行建模,因此从第一层开始就可以对视频中的长距离交互进行建模

然而,由于它对所有成对交互进行建模,多头自注意力(MSA)的计算复杂度与标记数量呈二次关系。这种复杂度在视频处理中很关键,因为标记数量随着输入帧数线性增加,所以作者开发了下面的更高效的架构

模型2:分解编码器

在这里插入图片描述

图4:分解编码器(模型2)。该模型由两个串联的Transformer编码器组成:第一个对从同一时间索引提取的标记之间的交互进行建模,以生成每个时间索引的潜在表示。第二个Transformer对时间步之间的交互进行建模。因此,它对应于空间和时间信息的“后期融合”。

如图4所示,这个模型由两个独立的Transformer编码器组成。如下:

  1. 第一个是空间编码器,仅对从同一时间索引提取的标记之间的交互进行建模。经过 L s L_{s} Ls层后,得到每个时间索引的表示 h i ∈ R d h_{i} \in \mathbb{R}^{d} hiRd:如果在输入中添加了分类标记 z c l s z_{cls} zcls(公式1),这就是编码后的分类标记 z c l s L s z_{cls}^{L_{s}} zclsLs;否则,是空间编码器输出的标记的全局平均池化结果 z L s z^{L_{s}} zLs
  2. 帧级表示 h i h_{i} hi被连接成 H ∈ R n t × d H \in \mathbb{R}^{n_{t}×d} HRnt×d,然后通过由 L t L_{t} Lt个Transformer层组成的时间编码器,对来自不同时间索引的标记之间的交互进行建模。最后对这个编码器的输出标记进行分类。

这种架构对应于时间信息的“后期融合”,并且初始的空间编码器与用于图像分类的编码器相同。因此,它类似于之前工作中所采用的卷积神经网络(CNN)架构,这些架构首先提取每帧的特征,然后在对其进行分类之前将这些特征聚合为最终的表示形式。
尽管该模型的Transformer层比模型1更多(因此参数也更多),但它所需的浮点运算(FLOPs)更少,因为两个独立的Transformer模块的计算复杂度为 O ( ( n h ⋅ n w ) 2 + n t 2 ) O((n_{h} \cdot n_{w})^{2}+n_{t}^{2}) O((nhnw)2+nt2),而模型1的计算复杂度为 O ( ( n t ⋅ n h ⋅ n w ) 2 ) O((n_{t} \cdot n_{h} \cdot n_{w})^{2}) O((ntnhnw)2)

模型3:分解自注意力

在这里插入图片描述

图5:分解自注意力(模型3)。在每个Transformer块内,多头自注意力操作被分解为两个操作(用条纹框表示),首先仅在空间上计算自注意力,然后在时间上计算。

该模型包含的Transformer层数模型1相同。但是有如下不同:

  • 在第 ℓ \ell 层,这里并不像模型1那样计算所有标记对 z ℓ z^{\ell} z之间的多头自注意力,而是将操作进行分解(如图5所示):

    • 首先仅在空间上计算自注意力(即在从同一时间索引提取的所有标记之间);
    • 然后在时间上计算自注意力(即在从同一空间索引提取的所有标记之间)。
  • Transformer中的每个自注意力模块都对时空交互进行建模,但通过在两个较小的元素集上分解操作,其效率比模型1更高,从而实现了与模型2相同的计算复杂度。

通过将标记 z z z R 1 × n t ⋅ n h ⋅ n w ⋅ d \mathbb{R}^{1×n_t·n_h·n_w·d} R1×ntnhnwd重塑为 R n t × n h ⋅ n w ⋅ d \mathbb{R}^{n_t×n_h·n_w·d} Rnt×nhnwd(表示为 z s z_s zs)来计算空间自注意力,这样可以高效地执行此操作。类似地,时间自注意力的输入 z t z_t zt被重塑为 R n h ⋅ n w × n t ⋅ d \mathbb{R}^{n_h·n_w×n_t·d} Rnhnw×ntd(假设最前面的维度是“批量维度”)。作者在此定义的分解式自注意力如下:
y s ℓ = M S A ( L N ( z s ℓ ) ) + z s ℓ ( 4 ) y^{\ell}_{s} = MSA(LN(z^{\ell}_{s})) + z^{\ell}_{s} \quad(4) ys=MSA(LN(zs))+zs(4)
y t ℓ = M S A ( L N ( y s ℓ ) ) + y s ℓ ( 5 ) y^{\ell}_{t} = MSA(LN(y^{\ell}_{s})) + y^{\ell}_{s} \quad(5) yt=MSA(LN(ys))+ys(5)
z ℓ + 1 = M L P ( L N ( y t ℓ ) ) + y t ℓ ( 6 ) z^{\ell + 1} = MLP(LN(y^{\ell}_{t})) + y^{\ell}_{t} \quad(6) z+1=MLP(LN(yt))+yt(6)

作者指出,只要按照后面3.4节中描述的方式初始化模型参数,先进行空间自注意力再进行时间自注意力,或者先进行时间自注意力再进行空间自注意力,这两种顺序并不会产生差异。需要注意的是,与模型1相比,参数数量会增加,因为存在一个额外的自注意力层(参见公式7)。在这个模型中不使用分类标记,以避免在重塑操作时出现歧义。

模型4:分解点积注意力

在这里插入图片描述

图6:分解点积注意力(模型4)。对于一半的头,我们仅在空间轴上计算点积注意力,对于另一半头,仅在时间轴上计算。

模型4具有与模型2和模型3相同的计算复杂度,同时保持与未分解的模型1相同的参数数量。空间和时间维度的分解思路与模型3类似,但分解的是多头点积注意力操作(如图6所示)。具体来说,就是使用不同的头分别在空间和时间维度上为每个标记计算注意力权重

  • 首先,每个头的注意力操作定义为:
    Attention ( Q , K , V ) = Softmax ( Q K T d k ) V ( 7 ) \text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V \quad (7) Attention(Q,K,V)=Softmax(dk QKT)V(7)
    在自注意力中,查询 Q = X W q Q = XW_q Q=XWq,键 K = X W k K = XW_k K=XWk,值 V = X W v V = XW_v V=XWv 是输入 X X X 的线性投影,其中 X , Q , K , V ∈ R N × d X, Q, K, V \in \mathbb{R}^{N \times d} X,Q,K,VRN×d。请注意,在未分解的情况下(模型1),空间和时间维度合并为 N = n t ⋅ n h ⋅ n w N = n_t \cdot n_h \cdot n_w N=ntnhnw
    这里的主要思路是,通过构造 空间维度的 K s , V s ∈ R n h ⋅ n w × d K_s, V_s \in \mathbb{R}^{n_h \cdot n_w \times d} Ks,VsRnhnw×d 和时间维度的 K t , V t ∈ R n t × d K_t, V_t \in \mathbb{R}^{n_t \times d} Kt,VtRnt×d,也就是对应这些维度的键和值,来修改每个查询的键和值,使其仅关注来自相同空间和时间索引的标记。

  • 然后,对于一半的注意力头,通过计算 Y s = Attention ( Q , K s , V s ) Y_s = \text{Attention}(Q, K_s, V_s) Ys=Attention(Q,Ks,Vs) 来关注空间维度的标记,对于另一半头,我们通过计算 Y t = Attention ( Q , K t , V t ) Y_t = \text{Attention}(Q, K_t, V_t) Yt=Attention(Q,Kt,Vt) 来关注时间维度的标记。由于这里只是改变了每个查询的注意力范围,所以注意力操作的维度与未分解的情况相同,即 Y s , Y t ∈ R N × d Y_s, Y_t \in \mathbb{R}^{N \times d} Ys,YtRN×d

  • 最后,通过连接多个头的输出并使用线性投影来组合它们的输出,即 Y = Concat ( Y s , Y t ) W O Y = \text{Concat}(Y_s, Y_t)W_O Y=Concat(Ys,Yt)WO

3.4 利用预训练模型进行初始化

ViT需在大规模数据集上训练才有效,因其缺乏卷积网络的某些归纳偏置。最大的视频数据集(如Kinetics)标注样本比图像数据集少几个数量级,从零训练大型模型达到高精度极具挑战。为高效训练,用预训练图像模型初始化视频模型,但引发参数初始化问题。下面讨论几种有效的策略来初始化这些大规模视频分类模型

  1. 位置嵌入
    将位置嵌入 p p p添加到每个输入标记中(公式1)。由于视频模型的标记数量是预训练图像模型的 n t n_t nt倍,可以通过在时间维度上“重复”位置嵌入,将其从 R n w ⋅ n h × d \mathbb{R}^{n_w \cdot n_h×d} Rnwnh×d扩展到 R n t ⋅ n h ⋅ n w × d \mathbb{R}^{n_t·n_h·n_w ×d} Rntnhnw×d来进行初始化。所以,在初始化时,所有具有相同空间索引的标记都具有相同的嵌入,然后再进行微调
  2. 嵌入权重, E E E
    当使用“管块嵌入”标记化方法(3.2节)时,与预训练模型中的二维张量 E i m a g e E_{image} Eimage 相比,嵌入滤波器 E E E是一个三维张量。在视频分类模型中,从二维滤波器(预训练的图像模型)出发,初始化三维卷积滤波器(视频模型)的一种常见方法是:通过在时间维度上复制滤波器并对其求平均值来“膨胀”它们,其公式如下:
    E = 1 t [ E i m a g e , … , E i m a g e , … , E i m a g e ] ( 8 ) E = \frac{1}{t} [E_{image}, \ldots, E_{image}, \ldots, E_{image}] \quad (8) E=t1[Eimage,,Eimage,,Eimage](8)
    作者还考虑了另一种策略,称之为“中心帧初始化”,其中除了在中心位置 ⌊ t 2 ⌋ \lfloor\frac{t}{2}\rfloor 2t处, E E E在所有时间位置都初始化为零,即:
    E = [ 0 , … , E i m a g e , … , 0 ] ( 9 ) E = [0, \ldots, E_{image}, \ldots, 0] \quad (9) E=[0,,Eimage,,0](9)
    因此,在初始化时,三维卷积滤波器的效果类似于“均匀帧采样”(3.2节),同时也使模型能够在训练过程中学习从多个帧中聚合时间信息。
  3. 模型3的Transformer权重
    模型3中的Transformer模块(图5)与预训练的ViT模型不同,它包含两个多头自注意力(MSA)模块。在这种情况下,作者使用预训练的模块来初始化空间MSA模块,并将时间MSA的所有权重初始化为零,这样在初始化时,公式5就相当于一个残差连接。

4. 实验

在本节中,作者对提出的模型进行实验评估,包括在多个标准视频分类基准测试中的性能测试,以及对不同组件和设计选择的消融研究。这里只做简要介绍,详细内容请参考原论文:

4.1 数据集

  1. 在多个流行视频分类基准测试数据集上评估模型。
  2. Kinetics 400/600:含大量动作视频,有400或600种动作类别,视频短、来源广,为模型训练与评估提供丰富数据。
  3. Epic Kitchens 100:聚焦厨房场景动作,动作序列复杂,时空信息丰富,元数据多样,为动作理解评估提供更具挑战场景。
  4. Something-Something v2:含诸多日常动作,动作定义基于物体功能与意图,需模型深入理解动作语义。
  5. Moments in Time:含各类视频,类别广泛,涵盖事件、动作与场景,要求模型具备良好的时间事件分类能力。

4.2 实现细节

  1. 基于PyTorch框架实现模型。
  2. 训练时使用Adam或SGD等标准优化器,采用余弦退火学习率调度器(cosine learning rate schedule)等学习率调度策略。
  3. 运用裁剪、翻转、缩放、时间扭曲等常见图像和视频增强技术进行数据增强,提升模型泛化能力。
  4. 针对视频长序列,依据不同实验需求,使用不同帧采样策略选取合适数量的帧。
  5. 对Transformer层数量、标记维度、头数量及不同分解模型参数等超参数进行调整。
  6. 实验表明,不同数据集的最优参数设置各异,受数据集大小、类别数量和动作复杂性等因素影响。

4.3 结果

  1. Kinetics 400/600:在Kinetics 400和600数据集上,纯Transformer架构模型表现出色,模型3和4分解时空维度,处理长视频序列优势明显,捕捉时空依赖,降计算复杂度提分类性能,Kinetics 400上最佳模型top - 1准确率比先前最佳方法提升[X]%,Kinetics 600上提升[Y]%。
  2. Epic Kitchens 100:模型在该挑战性数据集上性能良好,凭借强大时空建模能力,捕捉动作语义与上下文信息,动作分类准确率领先,证明在复杂场景下有效。
  3. Something - Something v2:模型在该数据集表现突出,基于Transformer架构能更好处理动作功能和意图信息,不依赖外观特征,经不同标记化和分解模型实验,特定变体在top - 1准确率上超先前方法[Z]%。
  4. Moments in Time:模型在该数据集取得领先成果,灵活运用不同时空注意力模式,处理各类时间事件,在不同类别性能平衡佳,整体准确率和F1分数达新高度。

4.4 消融研究

为了解模型组件对性能的影响,开展广泛消融研究。

  1. 标记化方法:比较均匀帧采样和管块嵌入,不同数据集二者优劣有别。简单动作、短时间序列数据集,均匀帧采样表现可能更好;复杂动作、长序列数据集,管块嵌入融合时空信息,更能捕捉动作时空演变,提升性能。
  2. 模型架构:对比模型1至模型4。模型1虽全面交互建模时空标记,但计算成本高,处理长视频序列时并非最优。模型2至模型4分解时空维度各有优势,模型2后期融合时空信息,在部分数据集表现良好;模型3和4分解自注意力或点积注意力,降低计算成本,捕捉时空依赖,不同数据集性能提升潜力各异,取决于数据集特点。
  3. 预训练:研究使用预训练图像模型初始化的效果,实验表明预训练可显著提升模型性能,尤其在数据量较小的情况下,验证利用预训练归纳偏差能助模型在少量数据上更好收敛和泛化。

5. 结论

作者提出一系列基于纯Transformer的视频分类模型,从输入视频提取时空标记并以不同架构处理。开发了多种高效模型变体,通过分解空间和时间维度提升计算效率与性能,以应对长序列标记。同时,利用预训练图像模型初始化模型,在较小视频数据集上进行有效训练,并开展多种策略实验。经多个标准视频分类数据集的评估与消融研究,模型在不同数据集上性能出色,超越3D卷积网络方法,达当前领先水平。

他们的工作为基于Transformer的视频理解提供新思路与方法,奠定未来研究基础。未来研究方向包括优化模型架构、探索复杂时空分解方法、将模型拓展至其他视频理解任务,以及更好结合预训练信息、提升不同规模数据集的数据效率。

热门专栏

机器学习

机器学习笔记合集

深度学习

深度学习笔记合集

相关文章:

视频多模态模型——视频版ViT

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细解读多模态论文《ViViT: A Video Vision Transformer》,2021由google 提出用于视频处理的视觉 Transformer 模型,在视频多模态领域有…...

w179基于Java Web的流浪宠物管理系统的设计与实现

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...

MyBatis框架基础学习(1)

目录 一、MyBatis框架介绍。 (1)简化开发。 (2)持久层? (3)框架的解释! 二、JDBC开发缺点。 (1)硬编码。 (2)操作繁琐。 三、MyBatis框…...

arm-linux平台、rk3288 SDL移植

一、所需环境资源 1、arm-linux交叉编译器,这里使用的是gcc-linaro-6.3.1 2、linux交叉编译环境,这里使用的是Ubuntu 20.04 3、sdl2源码 https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.11.tar.gz 二、代码编译 1、解压sdl2源码…...

51单片机入门_01_单片机(MCU)概述(使用STC89C52芯片)

文章目录 1. 什么是单片机1.1 微型计算机的组成1.2 微型计算机的应用形态1.3 单板微型计算机1.4 单片机(MCU)1.4.1 单片机内部结构1.4.2 单片机应用系统的组成 1.5 80C51单片机系列1.5.1 STC公司的51单片机1.5.1 STC公司单片机的命名规则 2. 单片机的特点及应用领域2.1 单片机的…...

基础项目——扫雷(c++)

目录 前言一、环境配置二、基础框架三、关闭事件四、资源加载五、初始地图六、常量定义七、地图随机八、点击排雷九、格子类化十、 地图类化十一、 接口优化十二、 文件拆分十三、游戏重开 前言 各位小伙伴们,这期我们一起学习出贪吃蛇以外另一个基础的项目——扫雷…...

docker安装elk6.7.1-搜集java日志

docker安装elk6.7.1-搜集java日志 如果对运维课程感兴趣,可以在b站上、A站或csdn上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频 0.规划 192.168.171.130 tomcat日志filebeat 192.168.171.131 …...

自然语言处理(NLP)入门:基础概念与应用场景

什么是自然语言处理(NLP)? 自然语言处理(Natural Language Processing, NLP)是人工智能(AI)的一个重要分支,研究如何让计算机理解、生成、分析和与人类语言进行交互。换句话说&…...

AI News(1/21/2025):OpenAI 安全疏忽:ChatGPT漏洞引发DDoS风险/OpenAI 代理工具即将发布

1、OpenAI 的安全疏忽:ChatGPT API 漏洞引发DDoS风险 德国安全研究员 Benjamin Flesch 发现了一个严重的安全漏洞:攻击者可以通过向 ChatGPT API 发送一个 HTTP 请求,利用 ChatGPT 的爬虫对目标网站发起 DDoS 攻击。该漏洞源于 OpenAI 在处理…...

Linux——包源管理工具

一、概要 Linux下的包/源管理命令:主要任务就是完成在Linux环境下的安装/卸载/维护软件。 1.rpm 是最基础的rpm包的安装命令,需要提前下载相关安装包和依赖包。 2.yum/dnf (最好用)是基于rpm包的自动安装命令,可以自动…...

C++解决走迷宫问题:DFS、BFS算法应用

文章目录 思路:DFSBFSBFS和DFS的特点BFS 与 DFS 的区别BFS 的优点BFS 时间复杂度深度优先搜索(DFS)的优点深度优先搜索(DFS)的时间复杂度解释:空间复杂度总结:例如下面的迷宫: // 迷宫的表示:0表示可以走,1表示障碍 vector<vector<int>> maze = {{0, 0,…...

机器学习09-Pytorch功能拆解

机器学习09-Pytorch功能拆解 我个人是Java程序员&#xff0c;关于Python代码的使用过程中的相关代码事项&#xff0c;在此进行记录 文章目录 机器学习09-Pytorch功能拆解1-核心逻辑脉络2-个人备注3-Pytorch软件包拆解1-Python有参和无参构造构造方法的基本语法示例解释注意事项…...

BLE透传方案,IoT短距无线通信的“中坚力量”

在物联网&#xff08;IoT&#xff09;短距无线通信生态系统中&#xff0c;低功耗蓝牙&#xff08;BLE&#xff09;数据透传是一种无需任何网络或基础设施即可完成双向通信的技术。其主要通过简单操作串口的方式进行无线数据传输&#xff0c;最高能满足2Mbps的数据传输速率&…...

Linux 中的poll、select和epoll有什么区别?

poll 和 select 是Linux 系统中用于多路复用 I/O 的系统调用&#xff0c;它们允许一个程序同时监视多个文件描述符&#xff0c;以便在任何一个文件描述符准备好进行 I/O 操作时得到通知。 一、select select 是一种较早的 I/O 多路复用机制&#xff0c;具有以下特点&#xff…...

单片机-STM32 WIFI模块--ESP8266 (十二)

1.WIFI模块--ESP8266 名字由来&#xff1a; Wi-Fi这个术语被人们普遍误以为是指无线保真&#xff08;Wireless Fidelity&#xff09;&#xff0c;并且即便是Wi-Fi联盟本身也经常在新闻稿和文件中使用“Wireless Fidelity”这个词&#xff0c;Wi-Fi还出现在ITAA的一个论文中。…...

linux日志排查相关命令

实时查看日志 tail -f -n 100 文件名 -f:实时查看 -n:查看多少行 直接查看日志文件 .log文件 cat 文件名 .gz文件 zgcat 文件名 在日志文件搜索指定内容 .log文件 grep -A 3 “呀1” 文件名 -A&#xff1a;向后查看 3&#xff1a;向后查看行数 “呀1”&#xff1a;搜…...

每日一题-二叉搜索树与双向链表

将二叉搜索树转化为排序双向链表 问题描述 输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的双向链表&#xff0c;要求空间复杂度为 O(1)&#xff0c;时间复杂度为 O(n)&#xff0c;并且不能创建新的结点&#xff0c;只能调整树中结点的指针指向。 数据范围 …...

【多视图学习】Self-Weighted Contrastive Fusion for Deep Multi-View Clustering

Self-Weighted Contrastive Fusion for Deep Multi-View Clustering 用于深度多视图聚类的自加权对比融合 TMM 2024 代码链接 论文链接 0.摘要 多视图聚类可以从多个视图中探索共识信息&#xff0c;在过去二十年中越来越受到关注。然而&#xff0c;现有的工作面临两个主要挑…...

ASK-HAR:多尺度特征提取的深度学习模型

一、探索多尺度特征提取方法 在近年来&#xff0c;随着智能家居智能系统和传感技术的快速发展&#xff0c;人类活动识别&#xff08;HAR&#xff09;技术已经成为一个备受瞩目的研究领域。HAR技术的核心在于通过各种跟踪设备和测量手段&#xff0c;如传感器和摄像头&#xff0…...

C语言:数据的存储

本文重点&#xff1a; 1. 数据类型详细介绍 2. 整形在内存中的存储&#xff1a;原码、反码、补码 3. 大小端字节序介绍及判断 4. 浮点型在内存中的存储解析 数据类型结构的介绍&#xff1a; 类型的基本归类&#xff1a; 整型家族 浮点家族 构造类型&#xff1a; 指针类型&…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...