之前两次分别介绍了video analysis中的action recognition 以及 temporal action detection 这两个领域。这两个领域算是对视频mid-level的理解,而我最近看论文主要在关注如何去理解视频的高层语义(high-level)信息,这方面一个重要的领域就是video captioning。video captioning的任务是给视频生成文字描述,和image captioning(图片生成文字描述)有点像,区别主要在于视频还包含了时序的信息。关于video captioning,我目前还没有自己动手做过实验,所以文章内容如有问题麻烦指出~
数据库
首先介绍一下近几年最常用的两个数据库。
MSR-VTT dataset: 该数据集为ACM Multimedia 2016 的 Microsoft Research - Video to Text (MSR-VTT) Challenge。该数据集包含10000个视频片段(video clip),被分为训练,验证和测试集三部分。每个视频片段都被标注了大概20条英文句子。此外,MSR-VTT还提供了每个视频的类别信息(共计20类),这个类别信息算是先验的,在测试集中也是已知的。同时,视频都是包含音频信息的。该数据库共计使用了四种机器翻译的评价指标,分别为:METEOR, BLEU@1-4,ROUGE-L,CIDEr。
YouTube2Text dataset(or called MSVD dataset):该数据集同样由Microsoft Research提供。该数据集包含1970段YouTube视频片段(时长在10-25s之间),每段视频被标注了大概40条英文句子。
可以看出,这两个数据库都是trimmed video clip 到 sentences的翻译。而这两年的论文基本上使用这两个数据库为主,说明目前的研究还主要集中在trimmed video clip 到 sentences的翻译。
任务关键点分析
video captioning任务可以理解为视频图像序列到文本序列的seq2seq任务。在近年的方法中,大部分文章都使用了LSTM来构造encoder-decoder结构,即使用lstm encoder来编码视频图像序列的特征,再用lstm decoder解码出文本信息。这样的video captioning模型结构最早在ICCV2015的”Sequence to Sequence – Video to Text”一文中提出,如下图所示。
基于上图中的结构,构造一个encoder-decoder结构的模型主要包括几个关键点:
1.输入特征:即如何提取视频中的特征信息,在很多篇文章中都使用了多模态的特征。主要包括如下几种:
基于视频图像的信息:包括简单的用CNN(VGGNet, ResNet等)提取图像(spatial)特征,用action recognition的模型(如C3D)提取视频动态(spatial+temporal)特征
基于声音的特征:对声音进行编码,包括BOAW(Bag-of-Audio-Words)和FV(Fisher Vector)等
先验特征:比如视频的类别,这种特征能提供很强的先验信息
基于文本的特征:此处基于文本的特征是指先从视频中提取一些文本的描述,再將这些描述作为特征,来进行video captioning。这类特征我看到过两类,一类是先对单帧视频进行image captioning,将image captioning的结果作为video captioning的输入特征,另外一类是做video tagging,将得到的标签作为特征。
2.encoder-decoder构造:虽然大部分工作都是用lstm做encoder-decoder,但各个方法的具体配置还是存在着一定的差异。
3.输出词汇的表达:主要包括两类,一类是使用Word2Vec这种词向量表示,另外就是直接使用词袋表示。
4.其它部分:比如训练策略,多任务训练之类的。
论文介绍
论文介绍部分只简要介绍我最近看的几篇近两年的文章,可以大概了解这个领域的进展情况。
ACM Multimedia 2016: MSR-VTT Challenge
首先介绍一下上述数据库MSR-VTT这个竞赛当时的前5名的方案。Team指竞赛中的队伍名称,rank为竞赛的M1排名,paper为对应的方案描述,可以通过google scholar搜到。
(1) Team- Aalto; Rank-1; Paper: Frame- and Segment-Level Features and Candidate Pool Evaluation for Video Caption Generation
这个方法的思路很有趣。它先用多个基于不同特征的video caption方法(均为encoder-decoder结构)对视频生成多段描述。再构造了一个基于CNN的评价网络,如下图所示,输入为video caption方法得到的句子和视频的特征,输出为两者之间的匹配度。这个评价网络实际上是作为多个video caption模型的ensemble方法。
(2) Team- v2t_navigator; Rank-2; Paper: Describing Videos using Multi-modal Fusion
方法框架图如下图所示,可以看出是标准的encoder-decoder模式。
特征方面:这篇文章基本用上了所有能用到的多模态特征,包括视频,图像,声音,类别信息等等。
encoder:为了结合各类特征,该方法使用了单层的无激活函数(应该也可以叫线性激活?)的全连接层作为编码器。
decoder:单层单向LSTM
其他:各种用于特征提取的模型都是预先训练好的,encoder和decoder同时训练。
(3) Team- VideoLAB; Rank-3; Paper: Multimodal Video Description
方法框架图如下图所示,同样也是encoder-decoder模式,与v2t_navigator的方法比较像
特征方面:使用了视频,图像,声音,类别信息等,基本和v2t_navigator队相同
encoder and decoder: 均为lstm
(4) Team- Fudan-ILC; Rank-4; Paper:…
略。没有找到他们提交的报告,可能最后没有提交报告?但看队伍名称的组合,后面要介绍的CVPR2017上的“Weakly Supervised Dense Video Captioning” 应该就是他们团队做的。
(5) Team- ruc-uva; Rank-5; Paper:Early Embedding and Late Reranking for Video Captioning
这篇文章的方法复杂一些,在使用CNN提取了视频特征后,该方法使用了Video tagging方法提取视频的关键词,这些关键词和视频CNN特征一同作为decoder的输入。此外,tagging产生的关键词还在最后用于生成句子的排序。
2017年的几篇新论文
(1) Multi-Task Video Captioning with Video and Entailment Generation(ACL2017)
这篇文章的想法很有趣,其方法结构图如下图所示。整个框架共包括三个任务:1)Unsupervised video prediction:无监督的未来帧预测,使用video encoder 和video decoder;2) Entailment Generation: 同义句生成/句子含义生成,也就是给句子生成含义相似的新句子,使用language encoder和 language decoder;3)Video Captioning:也就是视频语义生成,使用了video encoder和language decoder。在这几个任务中,video encoder和laguange decoder的参数是共享的。在训练中,该方法在mini-batch层面对三个任务进行迭代训练(不同任务的训练次数比例由参数确定)。
(2) Weakly Supervised Dense Video Captioning(CVPR2017)
这篇文章主要研究的是dense video captioning问题,dense video captioning是要产生对一段视频所有可能的描述。本文提出了一种弱监督方法,Multi-instance multi-label learning(MIMLL) 。MIMLL直接从视频-句子 数据(这样的数据对于该问题算是弱监督的)中学习每个视频图像区域对应的描述词汇向量。之后将这些词汇描述向量结合起来作为encoder-decoder的输入,实现video captioning。在MSR-VTT数据集中,该方法是目前的state-of-the-art 方法。
小结与讨论
从以上的论文介绍可以看出,基于基础的encoder-decoder结构,不同的方法在不同的方面对提高模型效果进行了探索,包括多模态特征,多任务学习等等。该领域现在也处在快速发展阶段,新的方法层出不穷,改进模型的核心思想我认为还是如何去更好的挖掘视频中局部的语义信息,并将其有效的组合成自然语言。同时,我觉得这个方向也是很有前景的一个方向,给视频生成文字描述有很多的应用场景。
原文发布时间为: 2017-05-05
本文作者:林天威
本文来自云栖社区合作伙伴极市网,了解相关信息可以关注极市网。