Dual Encoding for Zero Example Video Retrieval

ryluo 2020-06-14 01:29:22
论文笔记 > 视频检索 > CVPR

concept free的视频检索方法,对于视频模态和文本模态都采用双向编码的方式,基本的框架都很类似,并且每个模态最终的特征是通过三个层级的特征拼接起来的,有全局特征、局部特征以及时序特征。

术语

Ad hoc queries:

浅析即席查询在数据仓库领域有一个概念叫Ad hoc queries,中文一般翻译为“即席查询”。 即席查询指那些用户在使用系统时,根据自己当时的需求定义的查询

Zero-example:

指的是查询的文本中在训练集中没有出现

concept based:

对于视频和查询文本有一个先验的概念集合,这些概念是人为的定义好的,用于更好的处理Zero-example视频检索问题。然而,因为概念是人为设定的,所以基于概念的检索方法会受到概念构造准确性、实用性的影响。

concept free:

不使用基于预先定义好的视频及查询文本的概念,直接对视频和查询文本进行建模,通过视频和文本的相似度去检索视频。

双向编码模型

### 视频编码 `流程:` 1. 使用在ImageNet上预训练好的CNN模型,对视频的每一帧进行特征提取,然后视频每一帧都被表示成一个一维向量($1\times2048$)。对视频片段中的所有帧得到的向量进行平均池化得到一个$2048\times1$的向量。(Level1 Feature) 2. 将上一阶段通过视频帧得到的帧向量($n\times2048$),从时间维度上看成一个序列,输入到一个双向GRU模型中提取时间维度上的信息与特征,输出一个与序列长度相同的新向量。将这个向量组也进行与上一阶段相同的平均池化操作,得到一个大小为$1024\times 1$的向量。(Level2 Feature) 3. 将上一阶段双向GRU每个时间步下的输出拼接成一个矩阵,然后使用TextCNN中的1d卷积对这个矩阵进行卷积,文本分类任务中使用的CNN如下图所示,这里先介绍一下文本分类的卷积操作细节便于理解该论文中参数k的含义,下图中卷积核就是图中的红色的框和黄色的框,卷积核的宽度是不变的表示的是词向量的维度,宽度是可以调整的,但是宽度至少大于2,卷积核移动的方向只能是从上到下移动,然后得到一个一维的feature map,然后对多个卷积核输出的feature map(一维向量)进行最大池化操作,再将每个feature map池化之后的值进行拼接,又得到了一个卷积核个数大小的一维向量,最后通过一个全连接层进行分类。现在理解了文本分类中的卷积操作,再来理解本文中第三阶段的卷积操作就很容易,本质上核文本分类中的卷积操作是一样的,卷积核的宽度是固定的,卷积核的移动方向也是从上到下,但是这里为了提取更丰富的视频帧跨时间的特征,使用了多个卷积高度的宽度进行卷积操作,因为不同的高度就相当于在每次卷积的时候考虑了多少帧图像的特征,这里卷积核的宽度设置为$k=2,3,4,5$,对于不同卷积核的输出有不同的一维卷积的输出,最后将多个卷积核的输出进行平均池化得到一个$2048\times1$的向量。(Level3 Feature)

文本编码

流程:

  1. 对输入文本进行Onehot编码,再将Onehot编码后的向量进行embedding,然后将序列中所有词的embedding向量进行平均池化得到一个$7807\times1$的向量,其中7807表示的是embedding的维度。平均池化之后的结果就是Level1 Feature
  2. 将embedding的词序列,其大小为$m\times7087$输入到双向GRU中进行特征提取,输出一个$m\times1024$的向量序列。将这个向量序列进行平均池化得到了$1024\times1$的向量,即为Level2 Feature
  3. 使用文本分类的CNN对上一阶段输出的$m\times1024$的向量进行卷积,具体的操作核视频编码中的第二部是一样的,只不过这里卷积核高度k的取值为$k=2,3,4$,然后将不同卷积核的输出进行平均池化,得到Level3 Feature


小结:

对于视频核文本的编码整体的框架基本是一样的,只不过是最开始对图像数据核文本数据的向量化操作不同。

Common Space Learning

上面的视频编码核文本编码分别对视频中的视频模态与文本模态进行了建模,但是视频模态与文本模态的特征之间还是存在很大的差异的,所以需要将两个模态的特征映射到相同的空间中,这样才方便或者说有利于视频的检索。本文中分别对视频特征与文本特征乘以一个权重矩阵,将不同的特征映射到相同的空间中,从上面可知视频特征与文本特征分别表示为$\phi(v)$和$\phi(s)$,那么公共学习空间表示为:

损失函数

损失函数是margin ranking loss,其中$\alpha$表示的margin,是一个超参数

其中:

实验

在视频描述的数据集上测试视频检索的性能?

数据介绍

评价指标及介绍

R@K:是在topK个检索结果中至少找到一项相关项目的测试查询的百分比。(值越大越好)

Med r:Median rank(Med r)是搜索结果中第一个相关项目的中位排名。(值越小越好)

mAP:mean Average Precision,平均精确率 (值越大越好)

实验结果

如下是在数据MSR-TT数据集上的测试结果

表3和表4是模型在TRECVID上的测试结果