【程序人生】Attentive Moment Retrieval in Videos

【程序人生】Attentive Moment Retrieval in Videos

  • 文章链接
  • 阅读笔记
    • 文章的主要工作
    • 关于ACRN
      • Memory Attention Network
      • Cross-Modal Fusion Network
      • MLP Model
      • 损失函数的设置
        • Alignment Loss
        • Localization Loss
  • 结语

文章链接

《Attentive Moment Retrieval in Videos》发表于SIGIR’18
文章百度云链接:link.

阅读笔记

文章的主要工作

近几年人们一直在关注基于语言描述检索视频的问题。对于这个问题,需要做的是判断视频中是否存在检索内容,如果存在则返回整个视频。而这篇文章解决的是定位视频中某一符合检索内容表述的时间段的问题。
相比于普通的视频检索问题,这一问题的主要难点在于:

  1. 视频中不同的时间段有不同的持续时间不同的时空特征
  2. 这里进行相关性估计时,要考虑的是不仅是某一关键时间段的视觉特征,它附近时间段也可能包含有用的信息

这里举例对上面的第二点进行解释: 如果检索内容的表述中包含时间信息,比如“first”、“首先”,那么时间维度上的临近时间段中的信息就需要考虑进去。

为了解决上述问题,这篇文章的作者提出了Attentive Cross-Modal Retrieval Network(简称ACRN)。最后在DiDeMoTACoS数据集上都获得了很好的效果。
下面再用一个例子具体说明ACRN实现的功能:
【程序人生】Attentive Moment Retrieval in Videos_第1张图片
检索内容的表述为:a girl in orange first walks by the camera.
ACRN输入的就是language query 和video,希望返回的就是红色直线对应的时间起始点和结束点以及这一时间段的视频内容与language query的相关程度

关于ACRN

ACRN针对的这个任务主要分为两个部分:细粒度时间段定位相关性估计
细粒度时间段定位面对的主要问题在于不同的时间段有不同的持续时间和不同的时空特征,因此,撇开估计(时间段,检索内容表述)对的相关性,单是找到候选的时间段就十分具有挑战性。除此之外,这里有一个问题有待解决:生成候选时间段最直接的方式是大量的使用时间维度上不同尺寸的滑窗,但是这样做会导致计算量过大,和内存空间的大量占用。
相关性估计是一个典型的跨模态检索(cross-modal retrieval)问题。一个可行的解决方式是首先将候选时间段的视觉特征和检索内容表述的语义特征投射到一个公共空间,然后基于它们的相似度计算相关性。但是这样做会丢失相邻不同候选时间段的时空信息。
ACRN的结构如图2所示。
【程序人生】Attentive Moment Retrieval in Videos_第2张图片
ACRN主要包括三个部分:Memory Attention NetworkCross-Modal Fusion NetworkMLP Model
候选视频时间段视觉特征检索内容表述的语义特征分别作为Memory Attention Network的输入,目的是获得一个增强表示的候选时间段视觉特征
Cross-Modal Fusion Network的输入是增强表示的候选时间段视觉特征检索内容表述的语义特征,这部分网络涉及了intra-modal和inter-modal,输出一个增强的(时间段,检索内容表述)对。
最后将这个增强的(时间段,检索内容表述)对送入MLP Model,输出相关性估计的结果时间定位的偏移量

增强表示的候选时间段视觉特征
候选时间段的视觉特征
Memory Attention Network
检索内容表述的语义特征
Cross-Modal Fusion Network
MLP Model
相关性估计结果
时间定位的偏移量

Memory Attention Network

【程序人生】Attentive Moment Retrieval in Videos_第3张图片
Memory Attention Network的结构如上图所示。
定义视频 ν = { f t } \nu = \lbrace{f_t}\rbrace ν={ft} t ∈ { 0 , . . . , τ } t \in \lbrace{0,...,\tau}\rbrace t{0,...,τ}是时间点的索引。检索内容表述所对应的时间起始点为 ( t s , t e ) (t_s,t_e) (ts,te)。我们希望网络实现的功能是找出一个时间段 c = { f t } t = τ s τ t c = \lbrace{f_t}\rbrace_{t = {\tau_s}}^{\tau_t} c={ft}t=τsτt,满足 ( τ s , τ e ) = ( t s , t e ) (\tau_s,\tau_e) = (t_s,t_e) (τs,τe)=(ts,te)
通过时间维度上的多尺度滑窗将视频 ν \nu ν预分割成一系列的时间段 C = { c i } i = 1 M C = \lbrace{c_i}\rbrace_{i = 1}^{M} C={ci}i=1M。如果检索内容表述所对应的时间段与 C C C中某一个时间段 c c c重叠,我们定义这个(时间段,检索内容表述)对,即 ( c , q ) (c,q) (c,q),为positive的训练样例。
由于不同的检索信息表述对应的时间段长度可能不同,所以ACRN最后的MLP Model输出的不是 ( τ s , τ e ) (\tau_s,\tau_e) (τs,τe),而是时间定位的偏移量 ( t s − τ s , t e − τ e ) (t_s-\tau_s,t_e-\tau_e) (tsτs,teτe)

正如前面所说的,这里要考虑的是不仅是某一关键时间段的视觉特征,它附近时间段也可能包含有用的信息。所以,定义一个关键时间段附近的时间段为 N c = { c j } N_c = \lbrace{c_j}\rbrace Nc={cj} j ∈ [ − n c , n c ] j \in [-n_c,n_c] j[nc,nc]。若 j > 0 j>0 j>0 c j c_j cj表示关键时间段在时间维度上之后的时间段。若 j = 0 j = 0 j=0 c j c_j cj表示该关键时间段。若 j < 0 j<0 j<0 c j c_j cj表示关键时间段时间维度上之前的时间段。问题的关键在于如何整合它们来增强这个关键时间段视觉特征的表示。一个简单的方法就是使用平均池化来获取关键时间段和它附近时间段的相互关系。平均池化器的输出是增强表示的候选时间段视觉特征,它可用下面的公式来表示。
x c ^ = 1 N c ∑ c j ∈ N c x c j \hat{x_c} = \dfrac{1}{N_c}\displaystyle\sum_{c_j\in{N_c}}x_{c_j} xc^=Nc1cjNcxcj
尽管平均池化将所有的相关时间段信息混合在了一起,但是它不足以获取连续的时间段的相互关系。因为平均池化默认所有时间段是线性独立的默认所有时间段对最后相关估计结果的贡献相同,换句话说,就是平均池化认为所有的时间段权重相同。因此,平均池化不能理想的分配不同时间段的不同的权重,不能去掉不包含有用信息的时间段和噪声

Memory Attention Network将检索内容表述的语义特征作为输入的目的,就是通过attention,将不同的权重分给各个时间段。Memory Attention Network可用下面的计算式表示。
e ( c j , q ) = σ ( ∑ i = − n c j W c x c i + b c ) T . σ ( W q q + b q ) e(c_j,q) = \sigma(\displaystyle\sum_{i = -n_c}^{j}W_cx_{c_i}+b_c)^T.\sigma(W_qq+b_q) e(cj,q)=σ(i=ncjWcxci+bc)T.σ(Wqq+bq)
α c j = e ( c j , q ) ∑ k = − n c n c e ( c k , q ) , j ∈ [ − n c , n c ] \alpha_{c_j} = \dfrac{e(c_j,q)}{\displaystyle\sum_{k = -n_c}^{n_c}e(c_k,q)},j \in[-n_c,n_c] αcj=k=ncnce(ck,q)e(cj,q),j[nc,nc]
其中 x c i ∈ R D 1 x_{c_i} \in \Bbb{R}^{D_1} xciRD1 q ∈ R D 2 q \in \Bbb{R}^{D_2} qRD2 W c ∈ R D ∗ D 1 W_c \in \Bbb{R}^{D*D_1} WcRDD1 W q ∈ R D ∗ D 2 Wq \in \Bbb{R}^{D*D_2} WqRDD2 b c ∈ R D b_c \in \Bbb{R}^D bcRD b q ∈ R D b_q \in \Bbb{R}^D bqRD
α c j \alpha_{c_j} αcj是attention得到的每一个时间段的权重, σ ( . ) \sigma(.) σ(.)是tanh激活函数,目的是将 α c j \alpha_{c_j} αcj限制在 ( 0 , 1 ) (0,1) (0,1)

输出的 m c m_c mc就是增强表示的候选时间段视觉特征。它的计算过程可以用下面的计算式表示。
x c j ^ = W c x c j + b c \hat{x_{c_j}} = W_cx_{c_j} + b_c xcj^=Wcxcj+bc
m c = ∑ j ∈ [ − n c , n c ] α c j x c j ^ m_c = \textstyle\sum_{j\in[-n_c,n_c]}\alpha_{c_j}\hat{x_{c_j}} mc=j[nc,nc]αcjxcj^
通过上面给出的维度进行计算,可以求出 m c ∈ R D m_c \in\Bbb{R}^D mcRD

Cross-Modal Fusion Network

【程序人生】Attentive Moment Retrieval in Videos_第4张图片
m c m_c mc q ^ \hat{q} q^作为Cross-Modal Fusion Network的输入,其中 q ^ = W q q + b q \hat{q} = W_qq+b_q q^=Wqq+bq

之前的一些多特征融合工作没有良好的平衡intra-modal和inter-modal。它们使用一般的特征连接方法进行多特征融合,如上图a所示。这个融合方法没有有效的实现跨模态的特征融合。

文章提出的Cross-Modal Fusion Network如上图b所示,这个特征融合模型分为两部分,均值池化张量融合。由之前的内容得知, m c ∈ R D m_c \in\Bbb{R}^D mcRD q ^ ∈ R D \hat{q} \in\Bbb{R}^D q^RD ,由于高维度的矢量在进行张量融合时计算量较大,所以在进行张量融合之前先使用了均值池化来降低它们的维度。 m c m_c mc q ^ \hat{q} q^通过均值池化后分别得到 m c ~ \widetilde{m_c} mc q ~ \widetilde{q} q ,然后把它们放入张量融合模型。
f c q = [ m c ~ 1 ] ⨂ [ q ~ 1 ] = [ m c ~ , m c ~ ⨂ q ~ , q ~ , 1 ] f_{cq} = \begin{bmatrix}{\widetilde{m_c}}\\1\end{bmatrix} \bigotimes \begin{bmatrix}{\widetilde{q}}\\1\end{bmatrix} = [\widetilde{m_c},\widetilde{m_c}\bigotimes\widetilde{q},\widetilde{q},1] fcq=[mc 1][q 1]=[mc ,mc q ,q ,1]

MLP Model

Cross-Modal Fusion Network输出的 f c q f_{cq} fcq作为MLP Model的输入。
MLP即多层感知器,可用下面的计算式表示。
{ e 1 = θ 1 ( W 1 f c q + b 1 ) e 2 = θ 2 ( W 2 e 1 + b 2 ) . . . e L = θ L ( W L e L − 1 + b L ) \begin{cases}e_1 = \theta_1(W_1f_{cq}+b_1)\\e_2 = \theta_2(W_2e_1+b_2)\\...\\e_L = \theta_L(W_Le_{L-1}+b_L)\end{cases} e1=θ1(W1fcq+b1)e2=θ2(W2e1+b2)...eL=θL(WLeL1+bL)
和上面一样, W l W_l Wl是权重矩阵, b l b_l bl是偏置向量, θ l \theta_l θl是激活函数(文章中使用的是ReLU), e l e_l el是每一个隐藏层的输出。
最后的输出 e L = [ s c q , δ s , δ e ] ∈ R 3 e_L = [s_{cq},\delta_s,\delta_e] \in\Bbb{R}^3 eL=[scq,δs,δe]R3 s c q s_{cq} scq是时间段和查询内容表述的匹配分数, δ s \delta_s δs δ e \delta_e δe分别是开始时间和结束时间的偏移量, δ s = t s − τ s \delta_s = t_s-\tau_s δs=tsτs δ e = t e − τ e \delta_e = t_e-\tau_e δe=teτe

损失函数的设置

因为MLP的输出包含相关性估计的结果和时间定位的偏移量两部分信息,所以ACRN的损失函数也应该分为对应的两个部分。

Alignment Loss

文章定义alignment loss,希望通过alignment loss使positive的(时间段,检索内容表述)对的 s c q s_{cq} scq为正值,negative的(时间段,检索内容表述)对的 s c q s_{cq} scq为负值。alignment loss的定义如下。
L a l i g n = α 1 ∑ ( c , q ) ∈ ϕ l o g ( 1 + e x p ( − s c q ) ) + α 2 ∑ ( c , q ) ∈ ϰ l o g ( 1 + e x p ( s c q ) ) L_{align} = \alpha_1\displaystyle\sum_{(c,q)\in\phi}log(1+exp(-s_{cq}))+\alpha_2\displaystyle\sum_{(c,q)\in\varkappa}log(1+exp(s_{cq})) Lalign=α1(c,q)ϕlog(1+exp(scq))+α2(c,q)ϰlog(1+exp(scq))
其中 ϕ \phi ϕ是所有positive(时间段,检索内容表述)对的集合, ϰ \varkappa ϰ是所有negative(时间段,检索内容表述)对的集合。 α 1 \alpha_1 α1 α 2 \alpha_2 α2是权重。

Localization Loss

localization loss的定义如下。
L l o c = ∑ ( c , q ) ∈ ϕ [ R ( δ s ∗ − δ s ) + R ( δ e ∗ − δ e ) ] L_{loc} = \displaystyle\sum_{(c,q)\in\phi}[R(\delta_s^*-\delta_s)+R(\delta_e^*-\delta_e)] Lloc=(c,q)ϕ[R(δsδs)+R(δeδe)]
其中 δ s ∗ \delta_s^* δs δ e ∗ \delta_e^* δe ϕ \phi ϕ中的一个时间定位偏移对

最后,总的损失函数 L = L a l i g n + λ L l o g L = L_{align}+\lambda{L_{log}} L=Lalign+λLlog λ \lambda λ是权重,起到平衡两部分损失函数的作用。

结语

如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。
手打很辛苦,如果我的文章对您有帮助,转载请注明出处。

你可能感兴趣的:(程序人生)