多模态论文笔记——ViViT
大家好,这里是好评笔记,公主号: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模型。
摘要
- 模型提出背景与构建:受Transformer在图像分类领域(ViT模型) 成功启发,提出基于纯Transformer的视频分类模型,从输入视频提取时空标记,经一系列Transformer层编码。
- 模型优化:针对视频长序列标记,提出几种高效模型变体,对输入空间和时间维度分解;在训练中有效正则化模型,利用预训练图像模型,实现小数据集训练。
- 实验成果:进行全面消融研究,在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 模型,主要操作是自注意力机制,在从输入视频提取的时空标记上计算。并进行了优化,策略如下:
- 为处理大量时空标记,提出沿空间和时间维度分解模型的方法,提升效率与可扩展性。
- 为了在小数据集训练,训练过程中对模型进行了正则化,并利用预训练图像模型。
卷积模型的研究和实践总多,但因纯Transformer模型具有不同的特性,需确定最佳设计选择。为此,作者对标记化策略、模型架构和正则化方法进行全面消融分析:在Kinetics 400和600、Epic Kitchens 100、Something - Something v2和Moments in Time等多个标准视频分类基准测试中取得先进成果。
2. 相关工作
这部分介绍之前的研究进展,如下:
- 视频理解架构发展
- 早期用手工特征编码信息,AlexNet成功使2D CNN用于视频形成“双流”网络,独立处理RGB帧与光流图像后融合。
- 大数据集促进时空3D CNN训练,但计算资源需求大,很多架构通过跨空间和时间维度分解卷积和/或用分组卷积提高效率,本文在Transformer模型下利用此方法。
- NLP中Transformer进展:Vaswani等人用Transformer取代卷积和循环网络获先进成果,当前NLP主流架构仍基于此,还提出多种变体降成本、提效率。自注意力在计算机视觉领域,通常是在网络的末端或后期阶段作为一层融入,或用于增强ResNet架构中的残差块。
- 视觉领域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} xi∈Rh×w ,对其进行线性投影,然后将它们光栅化为一维标记 z i ∈ R d z_{i} \in \mathbb{R}^{d} zi∈Rd 。输入到后续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} p∈RN×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} zclsL∈Rd对编码后的输入进行分类;否则,对所有标记 z L z^{L} zL进行全局平均池化,再进行分类。
由于Transformer是一个灵活的架构,可以对任何输入标记序列 z ∈ R N × d z \in \mathbb{R}^{N×d} z∈RN×d进行操作,接下来将描述视频标记化的策略。
ViT 详细介绍参考:TODO。
3.2 嵌入视频片段
这里,作者考虑两种将视频 V ∈ R T × H × W × C V \in \mathbb{R}^{T×H×W×C} V∈RT×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} nh⋅nw个不重叠的图像补丁,那么总共 n t ⋅ n h ⋅ n w n_{t} \cdot n_{h} \cdot n_{w} nt⋅nh⋅nw个标记将被输入到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编码器组成。如下:
- 第一个是空间编码器,仅对从同一时间索引提取的标记之间的交互进行建模。经过 L s L_{s} Ls层后,得到每个时间索引的表示 h i ∈ R d h_{i} \in \mathbb{R}^{d} hi∈Rd:如果在输入中添加了分类标记 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。
- 帧级表示 h i h_{i} hi被连接成 H ∈ R n t × d H \in \mathbb{R}^{n_{t}×d} H∈Rnt×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((nh⋅nw)2+nt2),而模型1的计算复杂度为 O ( ( n t ⋅ n h ⋅ n w ) 2 ) O((n_{t} \cdot n_{h} \cdot n_{w})^{2}) O((nt⋅nh⋅nw)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×nt⋅nh⋅nw⋅d重塑为 R n t × n h ⋅ n w ⋅ d \mathbb{R}^{n_t×n_h·n_w·d} Rnt×nh⋅nw⋅d(表示为 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} Rnh⋅nw×nt⋅d(假设最前面的维度是“批量维度”)。作者在此定义的分解式自注意力如下:
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(dkQKT)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,V∈RN×d。请注意,在未分解的情况下(模型1),空间和时间维度合并为 N = n t ⋅ n h ⋅ n w N = n_t \cdot n_h \cdot n_w N=nt⋅nh⋅nw。
这里的主要思路是,通过构造 空间维度的 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,Vs∈Rnh⋅nw×d 和时间维度的 K t , V t ∈ R n t × d K_t, V_t \in \mathbb{R}^{n_t \times d} Kt,Vt∈Rnt×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,Yt∈RN×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)标注样本比图像数据集少几个数量级,从零训练大型模型达到高精度极具挑战。为高效训练,用预训练图像模型初始化视频模型,但引发参数初始化问题。下面讨论几种有效的策略来初始化这些大规模视频分类模型。
- 位置嵌入
将位置嵌入 p p p添加到每个输入标记中(公式1)。由于视频模型的标记数量是预训练图像模型的 n t n_t nt倍,可以通过在时间维度上“重复”位置嵌入,将其从 R n w ⋅ n h × d \mathbb{R}^{n_w \cdot n_h×d} Rnw⋅nh×d扩展到 R n t ⋅ n h ⋅ n w × d \mathbb{R}^{n_t·n_h·n_w ×d} Rnt⋅nh⋅nw×d来进行初始化。所以,在初始化时,所有具有相同空间索引的标记都具有相同的嵌入,然后再进行微调。 - 嵌入权重, 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的Transformer权重
模型3中的Transformer模块(图5)与预训练的ViT模型不同,它包含两个多头自注意力(MSA)模块。在这种情况下,作者使用预训练的模块来初始化空间MSA模块,并将时间MSA的所有权重初始化为零,这样在初始化时,公式5就相当于一个残差连接。
4. 实验
在本节中,作者对提出的模型进行实验评估,包括在多个标准视频分类基准测试中的性能测试,以及对不同组件和设计选择的消融研究。这里只做简要介绍,详细内容请参考原论文:
4.1 数据集
- 在多个流行视频分类基准测试数据集上评估模型。
- Kinetics 400/600:含大量动作视频,有400或600种动作类别,视频短、来源广,为模型训练与评估提供丰富数据。
- Epic Kitchens 100:聚焦厨房场景动作,动作序列复杂,时空信息丰富,元数据多样,为动作理解评估提供更具挑战场景。
- Something-Something v2:含诸多日常动作,动作定义基于物体功能与意图,需模型深入理解动作语义。
- Moments in Time:含各类视频,类别广泛,涵盖事件、动作与场景,要求模型具备良好的时间事件分类能力。
4.2 实现细节
- 基于PyTorch框架实现模型。
- 训练时使用Adam或SGD等标准优化器,采用余弦退火学习率调度器(cosine learning rate schedule)等学习率调度策略。
- 运用裁剪、翻转、缩放、时间扭曲等常见图像和视频增强技术进行数据增强,提升模型泛化能力。
- 针对视频长序列,依据不同实验需求,使用不同帧采样策略选取合适数量的帧。
- 对Transformer层数量、标记维度、头数量及不同分解模型参数等超参数进行调整。
- 实验表明,不同数据集的最优参数设置各异,受数据集大小、类别数量和动作复杂性等因素影响。
4.3 结果
- Kinetics 400/600:在Kinetics 400和600数据集上,纯Transformer架构模型表现出色,模型3和4分解时空维度,处理长视频序列优势明显,捕捉时空依赖,降计算复杂度提分类性能,Kinetics 400上最佳模型top - 1准确率比先前最佳方法提升[X]%,Kinetics 600上提升[Y]%。
- Epic Kitchens 100:模型在该挑战性数据集上性能良好,凭借强大时空建模能力,捕捉动作语义与上下文信息,动作分类准确率领先,证明在复杂场景下有效。
- Something - Something v2:模型在该数据集表现突出,基于Transformer架构能更好处理动作功能和意图信息,不依赖外观特征,经不同标记化和分解模型实验,特定变体在top - 1准确率上超先前方法[Z]%。
- Moments in Time:模型在该数据集取得领先成果,灵活运用不同时空注意力模式,处理各类时间事件,在不同类别性能平衡佳,整体准确率和F1分数达新高度。
4.4 消融研究
为了解模型组件对性能的影响,开展广泛消融研究。
- 标记化方法:比较均匀帧采样和管块嵌入,不同数据集二者优劣有别。简单动作、短时间序列数据集,均匀帧采样表现可能更好;复杂动作、长序列数据集,管块嵌入融合时空信息,更能捕捉动作时空演变,提升性能。
- 模型架构:对比模型1至模型4。模型1虽全面交互建模时空标记,但计算成本高,处理长视频序列时并非最优。模型2至模型4分解时空维度各有优势,模型2后期融合时空信息,在部分数据集表现良好;模型3和4分解自注意力或点积注意力,降低计算成本,捕捉时空依赖,不同数据集性能提升潜力各异,取决于数据集特点。
- 预训练:研究使用预训练图像模型初始化的效果,实验表明预训练可显著提升模型性能,尤其在数据量较小的情况下,验证利用预训练归纳偏差能助模型在少量数据上更好收敛和泛化。
5. 结论
作者提出一系列基于纯Transformer的视频分类模型,从输入视频提取时空标记并以不同架构处理。开发了多种高效模型变体,通过分解空间和时间维度提升计算效率与性能,以应对长序列标记。同时,利用预训练图像模型初始化模型,在较小视频数据集上进行有效训练,并开展多种策略实验。经多个标准视频分类数据集的评估与消融研究,模型在不同数据集上性能出色,超越3D卷积网络方法,达当前领先水平。
他们的工作为基于Transformer的视频理解提供新思路与方法,奠定未来研究基础。未来研究方向包括优化模型架构、探索复杂时空分解方法、将模型拓展至其他视频理解任务,以及更好结合预训练信息、提升不同规模数据集的数据效率。
热门专栏
机器学习
机器学习笔记合集
深度学习
深度学习笔记合集
相关文章:
多模态论文笔记——ViViT
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细解读多模态论文《ViViT: A Video Vision Transformer》,2021由google 提出用于视频处理的视觉 Transformer 模型,在视频多模态领域有…...
Flink2支持提交StreamGraph到Flink集群
最近研究Flink源码的时候,发现Flink已经支持提交StreamGraph到集群了,替换掉了原来的提交JobGraph。 新增ExecutionPlan接口,将JobGraph和StreamGraph作为实现。 Flink集群Dispatcher也进行了修改,从JobGraph改成了接口Executio…...
机器学习优化算法:从梯度下降到Adam及其变种
机器学习优化算法:从梯度下降到Adam及其变种 引言 最近deepseek的爆火已然说明,在机器学习领域,优化算法是模型训练的核心驱动力。无论是简单的线性回归还是复杂的深度神经网络,优化算法的选择直接影响模型的收敛速度、泛化性能…...
2024具身智能模型汇总:从训练数据、动作预测、训练方法到Robotics VLM、VLA
前言 本文一开始是属于此文《GRAPE——RLAIF微调VLA模型:通过偏好对齐提升机器人策略的泛化能力》的前言内容之一(该文发布于23年12月底),但考虑到其重要性,加之那么大一张表格 看下来 阅读体验较差,故抽出取来独立成文且拆分之 …...
基于Spring Security 6的OAuth2 系列之七 - 授权服务器--自定义数据库客户端信息
之所以想写这一系列,是因为之前工作过程中使用Spring Security OAuth2搭建了网关和授权服务器,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级…...
当WebGIS遇到智慧文旅-以长沙市不绕路旅游攻略为例
目录 前言 一、旅游数据组织 1、旅游景点信息 2、路线时间推荐 二、WebGIS可视化实现 1、态势标绘实现 2、相关位置展示 三、成果展示 1、第一天旅游路线 2、第二天旅游路线 3、第三天旅游路线 4、交通、订票、住宿指南 四、总结 前言 随着信息技术的飞速发展&…...
浅析CDN安全策略防范
CDN(内容分发网络)信息安全策略是保障内容分发网络在提供高效服务的同时,确保数据传输安全、防止恶意攻击和保护用户隐私的重要手段。以下从多个方面详细介绍CDN的信息安全策略: 1. 数据加密 数据加密是CDN信息安全策略的核心之…...
Python安居客二手小区数据爬取(2025年)
目录 2025年安居客二手小区数据爬取观察目标网页观察详情页数据准备工作:安装装备就像打游戏代码详解:每行代码都是你的小兵完整代码大放送爬取结果 2025年安居客二手小区数据爬取 这段时间需要爬取安居客二手小区数据,看了一下相关教程基本…...
Python爬虫获取custom-1688自定义API操作接口
一、引言 在电子商务领域,1688作为国内领先的B2B平台,提供了丰富的API接口,允许开发者获取商品信息、店铺信息等。其中,custom接口允许开发者进行自定义操作,获取特定的数据。本文将详细介绍如何使用Python调用1688的…...
CAPL与外部接口
CAPL与外部接口 目录 CAPL与外部接口1. 引言2. CAPL与C/C++交互2.1 CAPL与C/C++交互简介2.2 CAPL与C/C++交互实现3. CAPL与Python交互3.1 CAPL与Python交互简介3.2 CAPL与Python交互实现4. CAPL与MATLAB交互4.1 CAPL与MATLAB交互简介4.2 CAPL与MATLAB交互实现5. 案例说明5.1 案…...
解析与使用 Apache HttpClient 进行网络请求和数据抓取
目录 1. 什么是 HttpClient? 2. 基本使用 3. 使用 HttpClient 爬取腾讯天气的数据 4. 爬取拉勾招聘网站的职位信息 5. 总结 前言 Apache HttpClient 是 Apache 提供的一个用于处理 HTTP 请求和响应的工具类库。它提供了一种便捷、功能强大的方式来发送 HTTP 请…...
【go语言】结构体
一、type 关键字的用法 在 go 语言中,type 关键字用于定义新的类型,他可以用来定义基础类型、结构体类型、接口类型、函数类型等。通过 type 关键字,我们可以为现有类型创建新的类型别名或者自定义新的类型。 1.1 类型别名 使用 type 可以为…...
Kotlin 委托详解
Kotlin 委托详解 引言 Kotlin 作为一种现代化的编程语言,在 Android 开发等领域得到了广泛的应用。在 Kotlin 中,委托(Delegation)是一种强大的特性,它可以让我们以更简洁的方式实现代码的复用和扩展。本文将详细解析…...
用QT做一个网络调试助手
文章目录 前言一、TCP网络调试助手介绍1. 项目概述2. 开发流程3. TCP服务器的关键流程4. TCP客户端的关键流程 二、实现UI界面1. 服务器界面2. 客户端界面 三、实现代码框架1. 服务器代码1.1 初始化服务器地址1.2 开始监听1.3 与客户端连接1.4 接收客户端信息1.5 判断客户端状态…...
Qt 5.14.2 学习记录 —— 이십이 QSS
文章目录 1、概念2、基本语法3、给控件应用QSS设置4、选择器1、子控件选择器2、伪类选择器 5、样式属性box model 6、实例7、登录界面 1、概念 参考了CSS,都是对界面的样式进行设置,不过功能不如CSS强大。 可通过QSS设置样式,也可通过C代码…...
HTML 符号详解
HTML 符号详解 引言 HTML(超文本标记语言)符号是HTML文档中用来表示特殊字符的标记。这些符号在日常网页设计和开发中扮演着重要角色,特别是在需要显示版权、商标、货币符号等特殊字符时。本文将详细介绍HTML符号的用法、类型以及如何在HTML文档中插入这些符号。 HTML符号…...
第十二章 I 开头的术语
文章目录 第十二章 I 开头的术语以 I 开头的术语被识别 (identified by)识别关系 (identifying relationship)身份 (identity)idkey隐式全局引用 (implicit global reference)隐含命名空间 (implied namespace)包含文件 (include file)传入锁 (incoming lock) 索引 (index)索引…...
用XAMPP安装PHP环境(Window系统)
视频教程 BV1jA411v791 进入XAMPP官网 Download XAMPP 找到最新版本,64位的下载,一路安装,语言只有英语德语两个(不会德语) 安装好以后启动软件,点Apache,MySql,start 在C:\xampp\…...
02.01 生产者消费者
请使用条件变量实现2生产者2消费者模型,注意1个生产者在生产的时候,另外一个生产者不能生产。 1>程序代码 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h>…...
区块链项目孵化与包装设计:从概念到市场的全流程指南
区块链技术的快速发展催生了大量创新项目,但如何将一个区块链项目从概念孵化成市场认可的产品,是许多团队面临的挑战。本文将从孵化策略、包装设计和市场落地三个维度,为你解析区块链项目成功的关键步骤。 一、区块链项目孵化的核心要素 明确…...
Redis|前言
文章目录 什么是 Redis?Redis 主流功能与应用 什么是 Redis? Redis,Remote Dictionary Server(远程字典服务器)。Redis 是完全开源的,使用 ANSIC 语言编写,遵守 BSD 协议,是一个高性…...
电脑优化大师-解决电脑卡顿问题
我们常常会遇到电脑运行缓慢、网速卡顿的情况,但又不知道是哪个程序在占用过多资源。这时候,一款能够实时监控网络和系统状态的工具就显得尤为重要了。今天,就来给大家介绍一款小巧实用的监控工具「TrafficMonitor」。 「TrafficMonitor 」是…...
Linux篇——权限
在生活中我们知道,一个人能够从事的工作或任务,不是取决于你是谁,而是取决于你的身份是什么,就比如同一个人,如果他是校长,那就可以说放假就放假,如果是学生,就没有这个决定的权力。…...
Python 梯度下降法(六):Nadam Optimize
文章目录 Python 梯度下降法(六):Nadam Optimize一、数学原理1.1 介绍1.2 符号定义1.3 实现流程 二、代码实现2.1 函数代码2.2 总代码 三、优缺点3.1 优点3.2 缺点 四、相关链接 Python 梯度下降法(六):Nad…...
大模型培训讲师老师叶梓分享:DeepSeek多模态大模型janus初探
以下视频内容为叶梓分享DeepSeek多模态大模型janus的部署,并验证其实际效果,包括图生文和文生图两部分。 叶梓老师人工智能培训分享DeepSeek多模态大模型janus初探 DeepSeek 的多模态大模型 Janus 是一款强大的 AI 模型,专注于图像和文本的多…...
2025最新源支付V7全套开源版+Mac云端+五合一云端
2025最新源支付V7全套开源版Mac云端五合一云端 官方1999元, 最新非网上那种功能不全带BUG开源版,可以自己增加授权或二开 拥有卓越的性能和丰富的功能。它采用全新轻量化的界面UI,让您能更方便快捷地解决知识付费和运营赞助的难题 它基于…...
Linux系统上安装与配置 MySQL( CentOS 7 )
目录 1. 下载并安装 MySQL 官方 Yum Repository 2. 启动 MySQL 并查看运行状态 3. 找到 root 用户的初始密码 4. 修改 root 用户密码 5. 设置允许远程登录 6. 在云服务器配置 MySQL 端口 7. 关闭防火墙 8. 解决密码错误的问题 前言 在 Linux 服务器上安装并配置 MySQL …...
计算机网络——流量控制
流量控制的基本方法是确保发送方不会以超过接收方处理能力的速度发送数据包。 通常的做法是接收方会向发送方提供某种反馈,如: (1)停止&等待 在任何时候只有一个数据包在传输,发送方发送一个数据包,…...
[Java基础]开发工具Idea
安装工具 IDE: 称为集成开发环境, 把代码编写,编译,执行等功能综合在一起的工具 卸载 控制面板->卸载程序->卸载->勾选清空配置->确认卸载 下载/安装 官网下载: IntelliJ IDEA – the Leading Java and Kotlin IDE 默认安装: 旗舰版安装无需任何勾选, 傻瓜安装…...
Java线程池
专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 理解线程池运行原理 线程的各种属性参数关闭问题异常处理拒绝策略常见的线程池 可以分析下自身工作中用的各种线程池和参数设定 工作中用到的有 普通的 Th…...
2025年01月27日Github流行趋势
项目名称:onlook项目地址url:https://github.com/onlook-dev/onlook项目语言:TypeScript历史star数:5340今日star数:211项目维护者:Kitenite, drfarrell, iNerdStack, abhiroopc84, apps/dependabot项目简介…...
C# 数组和列表的基本知识及 LINQ 查询
数组和列表的基本知识及 LINQ 查询 一、基本知识二、引用命名空间声明三、数组3.1、一维数组3.2、二维数组3.3、不规则数组 Jagged Array 四、列表 List4.1、一维列表4.2、二维列表 五、数组和列表使用 LINQ的操作和运算5.1、一维 LIST 删除所有含 double.NaN 的行5.2、一维 LI…...
Deepseek本地部署(ollama+open-webui)
ollama 首先是安装ollama,这个非常简单 https://ollama.com/ 下载安装即可 open-webui 这个是为了提供一个ui,毕竟我们也不想在cmd和模型交互,很不方便。 第一,需要安装python3.11,必须是3.11(其他版…...
(七)Spring Cloud Alibaba 2023.x:RocketMQ 消息队列配置与实现
目录 前言 准备 安装RocketMq服务 下载rocketmq服务 下载rocketmq 控制台 项目集成 引入依赖 生产者服务配置 消费者服务配置 发送队列消息 前言 在微服务架构中,异步消息通信是实现系统解耦、提高性能和增强系统可靠性的重要手段。在 Spring Cloud Alib…...
2848、与车相交的点
2848、[简单] 与车相交的点 1、题目描述 给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标。对于任意下标 i,nums[i] [starti, endi] ,其中 starti 是第 i 辆车的起点,endi 是第 i 辆车的终点。 返回数轴上被车 任意…...
51单片机开发:温度传感器
温度传感器DS18B20: 初始化时序图如下图所示: u8 ds18b20_init(void){ds18b20_reset();return ds18b20_check(); }void ds18b20_reset(void){DS18B20_PORT 0;delay_10us(75);DS18B20_PORT 1;delay_10us(2); }u8 ds18b20_check(void){u8 time_temp0;wh…...
三甲医院大型生信服务器多配置方案剖析与应用(2024版)
一、引言 1.1 研究背景与意义 在当今数智化时代,生物信息学作为一门融合生物学、计算机科学和信息技术的交叉学科,在三甲医院的科研和临床应用中占据着举足轻重的地位。随着高通量测序技术、医学影像技术等的飞速发展,生物医学数据呈爆发式…...
【机器学习】自定义数据集 ,使用朴素贝叶斯对其进行分类
一、贝叶斯原理 贝叶斯算法是基于贝叶斯公式的,其公式为: 其中叫做先验概率,叫做条件概率,叫做观察概率,叫做后验概率,也是我们求解的结果,通过比较后验概率的大小,将后验概率最大的…...
ASP.NET Core 启动并提供静态文件
ASP.NET Core 启动并提供静态文件 即是单个可执行文件,它既运行 API 项目,也托管 前端项目(通常是前端的发布文件)。 这种方式一般是通过将 前端项目 的发布文件(例如 HTML、CSS、JavaScript)放入 Web AP…...
MySQL 导入数据
MySQL 导入数据 引言 MySQL 是一款广泛使用的开源关系型数据库管理系统,它以其稳定性和高效性被广泛应用于各种规模的应用程序中。在数据库管理过程中,数据的导入是至关重要的一个环节。本文将详细介绍如何在 MySQL 中导入数据,包括导入数据的准备、操作步骤以及注意事项。…...
MINIRAG: TOWARDS EXTREMELY SIMPLE RETRIEVAL-AUGMENTED GENERATION论文翻译
感谢阅读 注意不含评估以后的翻译原论文地址标题以及摘要介绍部分MiniRAG 框架2.1 HETEROGENEOUS GRAPH INDEXING WITH SMALL LANGUAGE MODELS2.2 LIGHTWEIGHT GRAPH-BASED KNOWLEDGE RETRIEVAL2.2.1 QUERY SEMANTIC MAPPING2.2.2 TOPOLOGY-ENHANCED GRAPH RETRIEVAL 注意不含评…...
将 OneLake 数据索引到 Elasticsearch - 第二部分
作者:来自 Elastic Gustavo Llermaly 及 Jeffrey Rengifo 本文分为两部分,第二部分介绍如何使用自定义连接器将 OneLake 数据索引并搜索到 Elastic 中。 在本文中,我们将利用第 1 部分中学到的知识来创建 OneLake 自定义 Elasticsearch 连接器…...
数据密码解锁之DeepSeek 和其他 AI 大模型对比的神秘面纱
本篇将揭露DeepSeek 和其他 AI 大模型差异所在。 目录 编辑 一本篇背景: 二性能对比: 2.1训练效率: 2.2推理速度: 三语言理解与生成能力对比: 3.1语言理解: 3.2语言生成: 四本篇小结…...
安心即美的生活方式
如果你的心是安定的,那么,外界也就安静了。就像陶渊明说的:心远地自偏。不是走到偏远无人的边荒才能得到片刻清净,不需要使用洪荒之力去挣脱生活的枷锁,这是陶渊明式的中国知识分子的雅量。如果你自己是好的男人或女人…...
基于深度学习的输电线路缺陷检测算法研究(论文+源码)
输电线路关键部件的缺陷检测对于电网安全运行至关重要,传统方法存在效率低、准确性不高等问题。本研究探讨了利用深度学习技术进行输电线路关键组件的缺陷检测,目的是提升检测的效率与准确度。选用了YOLOv8模型作为基础,并通过加入CA注意力机…...
手写防抖函数、手写节流函数
文章目录 1 手写防抖函数2 手写节流函数 1 手写防抖函数 函数防抖是指在事件被触发n秒后再执行回调,如果在这n秒内事件又被触发,则重新计时。这可以使用在一些点击请求的事件上,避免因为用户的多次点击向后端发送多次请求。 function debou…...
UE 导入sbsar插件
Substance 3D 插件支持直接在 Unreal Engine 5 和 Unreal Engine 4 中使用 Substance 材质。无论您是在处理游戏、可视化,还是在移动设备、桌面或 XR 上进行部署,Substance 都能提供独特的体验,并优化功能以提高生产力。 Substance 资源平台…...
pytorch实现简单的情感分析算法
人工智能例子汇总:AI常见的算法和例子-CSDN博客 在PyTorch中实现中文情感分析算法通常涉及以下几个步骤:数据预处理、模型定义、训练和评估。下面是一个简单的实现示例,使用LSTM模型进行中文情感分析。 1. 数据预处理 首先,我…...
Baklib揭示内容中台实施最佳实践的策略与实战经验
内容概要 在当前数字化转型的浪潮中,内容中台的概念日益受到关注。它不再仅仅是一个内容管理系统,而是企业提升运营效率与灵活应对市场变化的重要支撑平台。内容中台的实施离不开最佳实践的指导,这些实践为企业在建设高效内容中台时提供了宝…...
11.[前端开发]Day11-HTML+CSS阶段练习(仿小米和考拉页面)
一、小米穿戴设备(浮动) 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vie…...