赞
踩
意义:网上的视频量越来越大,对于识别、描述、检索视频内容的需求也越来越大。
任务:给一个自然语言描述的文本,在大量未标记的视频中寻找与它语义最相关的视频。
难点:视频内容检索的难点在于怎样计算文本与视频之间的相似度。早期的工作主要是将视频和文本都在一个预定义好的概念空间(concept space)表示出来,然后使用概念匹配计算相似度。近年来,跨模态的表示学习方法逐渐被使用,它学习一个特征嵌入空间(embedding space)来进行相似度测量。
文章来源:TCSVT, 2022
目前关于视频特征提取的方法如下图所示,典型的方法先使用一个CNN网络提取每帧的特征,然后通过平均池化或最大池化来聚合一个视频级特征,最后使用全连接层将其映射到一个公共空间。这种方法不能得到视频的综合信息。另外多分支方法也经常被使用,通过多个分支提取不同类型的特征,可以获得更全面的信息。
但是这些多分支方法之间是相互独立的,作者认为这会导致这些分支都学到主要特征而忽略掉细节信息。受到人类阅读方式的启发(先整体阅读得到大致信息,在根据大致信息进行精读),作者提出了相互依赖的双分支网络。首先一个轻量级分支(previewing branch)捕捉视频的整体信息,然后相对较深的分支(intensive-reading branch)捕捉更细的信息,关键一点是previewing branch捕捉到的信息要融入intensive-reading branch中。
文章贡献如下:
1.提出了一个相互依赖的双分支网络来提取视频特征
2.为了建模这种依赖关系提出Previewing-aware Attention(PaA),和自注意力不同的是,Q来自于previewing branch。
整体方法模型如下图所示
视频首先要编码成为帧级特征 V = { v 1 , v 2 , . . . v m } V=\{v_1,v_2,...v_m\} V={v1,v2,...vm},这里 v i v_i vi代表第 i i i帧的特征, m m m是视频中总的帧数。
这一分支使用biGRU来提取被给视频的整体信息。当将特征序列 V V V放入GRU时,得到一个输出为 H = { h 1 , h 2 , . . . h m } H=\{h^1,h^2,...h^m\} H={h1,h2,...hm},它表示了视频的整体信息。之后使用一个平均池化来作为视频的特征表达 p = 1 m ∑ t = 1 m h t p=\frac{1}{m}\sum_{t=1}^mh^t p=m1t=1∑mht
为了获得不同粒度的信息,这里采用视频分段方法。首先使用一个FC层将V映射到一个更低维度的空间 V ′ = { v 1 ′ , v 2 ′ , . . . , v m ′ } V'=\{v_1',v_2',...,v_m'\} V′={v1′,v2′,...,vm′}。然后使用CNN获取分段特征。具体来说使用不同尺寸的卷积核可以得到不同粒度信息。卷积核尺寸为n的分段特征可以表示为 C n = δ ( C o n v 1 D r , n , s ( V ′ ) ) C_n=\delta(Conv1D_{r,n,s}(V')) Cn=δ(Conv1Dr,n,s(V′)),这里r,n,s分别代表卷积核个数、尺寸以及步长。最终得到的多粒度信息为: C = { C n ∈ R m n × r } C=\{C^n \in R^{m_n\times r}\} C={Cn∈Rmn×r}这里n表示卷积核尺寸, m n m^n mn表示段长为n(n帧特征聚合在一起)的段数量。
与自注意力机制不同的是,Previewing-aware Attention使用Previewing branch中的p得到query,使用
C
′
∈
C
C' \in C
C′∈C得到keys和values。对于每个粒度的段,注意力计算如下:
{
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
S
o
f
t
m
a
x
(
Q
K
T
d
k
)
V
,
o
=
W
4
×
A
t
t
e
n
t
i
o
n
(
p
W
1
,
C
′
W
2
,
C
′
W
3
)
,
这里
W
1
∈
R
d
×
d
k
W_1\in R^{d\times d_k}
W1∈Rd×dk,
W
2
∈
R
r
×
d
k
W_2\in R^{r\times d_k}
W2∈Rr×dk,
W
3
∈
R
r
×
d
v
W_3\in R^{r\times d_v}
W3∈Rr×dv为三个映射矩阵用于得到Q,K,V,
W
4
∈
R
d
v
×
d
v
W_4\in R^{d_v\times d_v}
W4∈Rdv×dv用于得到最终输出。
获得输出
o
o
o后,利用残差连接获取该层的结果
o
′
=
L
N
(
o
+
m
a
x
p
o
l
l
(
C
′
)
)
o'=LN(o+maxpoll(C'))
o′=LN(o+maxpoll(C′))
PaA模块最终的输出为:
P
a
A
(
C
′
;
p
)
=
L
N
(
o
′
+
M
L
P
(
o
′
)
)
PaA(C';p)=LN(o'+MLP(o'))
PaA(C′;p)=LN(o′+MLP(o′))
由于有多个粒度的段,因此还需要将各个段的输出进行拼接。
g
=
C
o
n
c
a
t
(
P
a
A
(
C
n
;
p
)
)
g=Concat(PaA(C^n;p))
g=Concat(PaA(Cn;p))
本文主要关注视频表示部分,对于文本表示,这里使用多层次文本编码和BERT来进行文本表示。多层次文本编码是基于Bag-of-Words (BoW), biGRU, biGRU-CNN提取三个层次的文本特征,然后将他们拼接在一起。BERT是使用预训练的模型将一个句子转为1024维的向量。最终表示文本的方法有两种,一种是只使用多层次文本编码,另一种是将多层次编码与BERT特征拼接在一起。文中默认采用多层次文本编码方法。
文中使用混合空间(Hybrid Spaces)来学习视频文本间的相似度。它既有概念空间(concept space)的可解释性又有潜在空间(latent space)的高性能。这里采用两个混合空间分别用于两个分支,最终的相似度有两个空间聚合而成。
混合空间由概念空间和潜在空间组成,在潜在空间中,使用三元组损失来拉近匹配视频文本对,拉远不匹配的视频文本对。在概念空间中,交叉熵损失和三元组损失被使用。
最终的相似度由两个空间的相似度相加得到:
s
i
m
(
v
,
s
)
=
s
i
m
p
(
v
,
s
)
+
s
i
m
g
(
v
,
s
)
sim(v,s)=sim_p(v,s)+sim_g(v,s)
sim(v,s)=simp(v,s)+simg(v,s)
这里
v
v
v表示视频特征,
s
s
s表示文本特征,
s
i
m
p
,
s
i
m
g
sim_p,sim_g
simp,simg分别代表两个分支的相似度计算方法。
作者在三个数据集 MSR-VTT,VATEX和TGIF上做了实验。实验中,使用pytorch架构,评估指标选择Rank@k和mAP。
MSR-VTT实验结果如下:
TGIF实验结果:
VATEX实验结果
从实验结果上来看,文中使用的方法在后两个数据集上有明显的提升,在第一个数据集上使用更少的特征(不需预训练,分支更少)取得了与在HowTo100M上预训练的Support-Set相当的结果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。