论文介绍--Spatio-Temporal Dynamics and Semantic Attribute Enriched Visual Encoding for Video Captioning

Spatio-Temporal Dynamics and Semantic Attribute Enriched Visual Encoding for Video Captioning 这篇论文发表在2019年的CVPR上。作者Nayyer Aafaq等人来自西澳(大利亚)大学。这是一篇改进视频描述工作的论文。作者观察到近期的视频描述工作主要集中于改进解码器(decoder),而较少关注特征提取的部分。作者认为从视频中提取更好的特征也是非常重要的。这篇论文主要有两个贡献:第一就是用层级的短时傅里叶变换对卷积网络提取出来的特征进行浓缩,把时间信息融入其中;第二就是用物体检测模型从视频中提取高层的语义信息,丰富编码器提炼的视频表示。

InceptionResNetv2和C3D分别被用作2D的卷积网络和3D的卷积网络。YOLO在这里被用作物体检测模型。

方法

视频描述这个任务就是在给定视频V,生成一句话S=\{W_1, W_2, ..., W_w\}(包含w个单词)来精确描述视频的内容。在从视频中提取出特征v后,普遍使用的优化目标函数就是句子中每个单词概率对数的加和E(v, S)=-\sum_{t=1}^w \log{Pr(W_t|v, W_1, ..., W_{t-1})}

如果用M表示解码器映射,Q表示编码器映射,S表示句子,那么我们可以把视频描述表示为M(Q(V))\rightarrow S。接下来介绍作者对Q的改进。

在这里,视频的特征表示主要由四部分组成v=[\alpha; \beta; \gamma; \eta]

2D卷积网络从视频中提取出特征F=\{a_{2d, 1}, a_{2d, 2}, ..., a_{2d, f}\},3D卷积网络从视频中提取出特征C=\{a_{3d, 1}, a_{3d, 2}, ..., a_{3d, c}\}。这里a_{2d, t}, a_{3d, t}表示第t帧视频图像提取出来的特征向量。一般的工作对于2D和3D卷积网络的输出会采用沿着时间轴求平均值的操作,对每个视频得到一个向量表示。这里作者转而使用层级短时傅里叶变换T,将时间维度的信息编码进最后的结果中。首先对整个时间序列做傅里叶变换,得到\Psi(_{1}\textrm{a}_j^i)\rightarrow \varsigma_1\in \mathbb{R}^p_{1}\textrm{a}_j^i=[a_{j,1}^i, a^i_{j,2},...,a^i_{j,f}]\in \mathbb{R}^f,这里的i表示第i个视频,j表示第j个神经元,f表示总共有f个时间点。然后将整个时间段平均分成两段_{21}a_j^i\in \mathbb{R}^h, _{22}a_j^i\in \mathbb{R}^{f-h},分别做傅里叶变换得到\Psi(_{21}a_j^i)\rightarrow \varsigma_{21}, \Psi(_{22}a_j^i)\rightarrow \varsigma_{22}。最后将整个时间段分成四段_{311}a_j^i, _{312}a_j^i, _{321}a_j^i, _{322}a_j^i,分别做傅里叶变换得到\Psi(_{311}a_j^i)\rightarrow \varsigma_{311}, \Psi(_{312}a_j^i)\rightarrow \varsigma_{312}\Psi(_{321}a_j^i)\rightarrow \varsigma_{321}, \Psi(_{322}a_j^i)\rightarrow \varsigma_{322}。然后将得到的傅里叶变换结果拼接在一起得到\varsigma(j)=[\varsigma_1, \varsigma_{21}, \varsigma_{22}, \varsigma_{311}, \varsigma_{312}, \varsigma_{321}, \varsigma_{322}]。这就是层级短时傅里叶变换T。用T分别对FC做操作,就可以得到\alpha=T(F), \beta=T(C)

论文介绍--Spatio-Temporal Dynamics and Semantic Attribute Enriched Visual Encoding for Video Captioning_第1张图片

接下来就是对视频的语义和空间变化进行编码。

通过对物体检测模型的输出结果进行编码,我们可以得到\gamma。对视频人工描述语句进行单词切分和聚合,可以得到词典D。对物体检测模型的输出物体标签进行聚合可以得到\widetilde{L}。对两者取交集以方便后续处理L=\widetilde{L}\bigcap D。用物体检测模型分别对q帧图像进行检测,可以得到物体l_i概率Pr(l_i)=\max_zPr_z(l_i), z\in \{1,..,q\},物体出现频率Fr(l_i)=\frac{\max_z Fr_z(l_i)}{N},物体帧与帧之间的位移v_i^z=[\delta_x^z, \delta_y^z], \delta_x^z=\widetilde{x}^{z+1}-\widetilde{x}^z, \delta_y^z=\widetilde{y}^{z+1}-\widetilde{y}^z。这里N表示同一类型物体在同一张图片出现的最大数量。如果有多个物体,物体的位置\widetilde{x}, \widetilde{y}是位置平均值。于是空间变化的特征\gamma定义为\gamma=[\varsigma_1, \varsigma_2, ..., \varsigma_{|L|}], \varsigma_i=[Pr(l_i), Fr(l_i), v_i^1, v_i^2,..., v_i^{q-1}]。这个特征含义十分丰富,包含了物体的出现概率,出现频率和帧与帧之间的位移。

通过对动作分类模型输出概率的编码,我们可以得到\eta。我们用\widetilde{A}表示动作分类模型输出标签的集合。通过与字典D取交集,我们得到实际使用的标签集合A=\widetilde{A}\bigcap D。第四种特征定义如下\eta=[[\vartheta_1, Pr(l_1)], [\vartheta_2, Pr(l_2)], ..., [\vartheta_{|A|}, Pr(l_{|A|})]]。这里的\vartheta_i表示第i种动作是否是动作分类模型的预测结果,1表示是,0表示否。l_i表示第i种动作的预测概率。

把上面四种特征进行拼接就得到了输入解码器的特征v=[\alpha; \beta; \gamma; \eta]

解码器

这篇文章的重点不在解码器。长话短说,作者使用了双层的GRU作为解码器,输出视频的描述句子。

实验

作者在Youtube2Text和MSR-VTT两个数据集上做了实验。词嵌入模型采用了“fasttext“。论文的模型指标计算部分表达有点问题。

We used the Microsoft COCO server to compute our results.

实际上,MS COCO服务器并不提供视频描述指标的计算。MS COCO在Github开源了官方的计算代码。

结果比较

首先是在MSVD(Youtube2Text)上的比较

论文介绍--Spatio-Temporal Dynamics and Semantic Attribute Enriched Visual Encoding for Video Captioning_第2张图片

我必须要指出,尽管本论文作者声称自己取得了state-of-the-art结果,也就是世界领先的结果,事实上,他这个结果远非当时世界上最好的结果。这篇论文发表在CVPR2019上,在这之前的ECO: Efficient Convolutional Network for Online Video Understanding,SibNet: Sibling Convolutional Encoder for Video Captioning,Multi-Task Video Captioning with Video and Entailment Generation的结果就好于这篇论文。

下面他在MSR-VTT上的结果

论文介绍--Spatio-Temporal Dynamics and Semantic Attribute Enriched Visual Encoding for Video Captioning_第3张图片

总结

一言蔽之,这篇论文将层级短时傅里叶变换(Hierarchical Short Fourier Transform)、图像分类模型(CNN)分类结果、物体检测(Object Detector)模型检测结果作为视频表示的一部分,从而提高解码器输出的视频描述质量。

你可能感兴趣的:(深度学习基础理论与技术实践,人工智能,笔记,VideoCaptioning,MSR-VTT,MSVD,Encoding,CVPR)