Video Caption
视频摘要/视频字母生成属于多模态学习下的一个子任务,大体目标就是根据视频内容给出一句或多句文字描述。所生成的caption可用于后续的视频检索等等,也可以直接帮助智能体或者有视觉障碍的人理解现实情况。
典型的架构如上图(图自[ICCV2015] Sequence to Sequence – Video to Text,从视频帧到文本句子的端对端模型),该任务可以分解为两个子任务,一个是如何理解视频/多模态,并融合以得到更好的视觉表示,另一个是视频描述生成,如何得到质量高,甚至可控、稳定、又多样的句子。
主要涉及到3个问题:
- (1)辅助语义信息监督,如何利用视觉语义概念来提高字幕质量的辅助目标;
- (2)减轻客观目标失配问题的方法;
- (3)密集字幕,它需要在视频中联合定位和描述多个事件。
接下来整理一些比较重要的论文。
[MM2016] Describing Videos using Multi-modal Fusion
如何理解视频,那么就把所有能得到的数据通通用上吧。模型架构如上图,encoder端用了video(全局)、image(局部)、aural(环境音)、speech(语音)和meta modality(种类),然后用一个融合网络进行多模态融合了之后,再输入到后面的decoder端得到句子。
当然这是16年的工作,现在在模态上还可以用更多的信息,如全局信息如光流,局部概念信息如action、event、activity,纯局部信息如object,relation等等,甚至还可以学习视频主题语义来增强。
[CVPR2017] Top-down Visual Saliency Guided by Captions
注意力从不会缺席,这篇文章通过计算“字幕引导的视觉显着性”(即注意力),从而在视觉输入中的对象与句子中的单词之间建立对应关系的程度 。具体的模型架构如上图,会分别在时间和空间上做两个注意力,即如视觉注意力是对输入的每个帧i和每个单词t产生时间显着性值,然后 通过从输入序列中删除除第i个描述符之外的所有描述符。最后的输出会与与原始单词概率分布进行比较来计算loss。
code:https://github.com/VisionLearningGroup/caption-guided-saliency
[CVPR2018] End-to-end dense video captioning with masked transformer
注意力可十分方便的升级成为Transformer。这篇文章就是通过改装Transformer,如上图,以逐帧图像的CNN特征到Transformer中,不然一样的是ffn后面接的是TCN,然后再输入到解码器生成caption。
[MM2019] Aligning Linguistic Words and Visual Semantic Units for Image Captioning
这篇文章继续细化图像中的object,relation和attribute(分别用目标检测器,属性分类器,关系检测器得到)来增强对视觉的理解,具体来说作者一个提出基于图卷积网络(GCNs)分别在语义和几何层面中显式建模对象交互,并充分利用语言词和视觉语义单元之间的对齐来进行图像caption生成。
模型图上图,其中三个概念分别代表:objects (“man”, “helmet”), their attributes (“helmet is red”), and relationships (“man hold bat”),即目标是某些局部区域,属性是目标对象的属性如red,而关系则是不同目标对象之间的交互关系。
而语义图(Semantic Graph)和几何图( Geometry Graph)的每个节点都对应于一个视觉语义单元,即一个对象、一个属性或两个对象之间的语义/几何上的交互。 然后用GCN去学习其上下文感知的嵌入,即首先决定当前单词大约是哪种类型的视觉语义单元(即对象、属性或交互),然后在这种类型下找到最相关的视觉语义单元,从而将当前单词与这些单元分层对齐。
然后通过Gated Fusion来控制这三个特征的重要性程度,最后接一个文本生成器得到caption。
[CVPR2019] Object-aware Aggregation with Bidirectional Temporal Graph for Video Captioning
找关系的文章,这篇也比较突出。主要思路就是提取出视频的关键object(空间上和时序上都统一),并且构建双向时序图优化特征,最后再融合使用整个视频提取出的全局特征来生成描述句子。
模型图上图,主要分为三个部分,双向时序图,目标感知聚合,和对caption解码生成。
- 双向时序图。先使用目标检测处理视频的关键object(即提取出N个object区域),然后再利用相似性构建视频中的时序图,其中相似性有三个部分来衡量:区域的外观特征相似度,区域的IoU相似度和区域的面积尺寸相似度 s ( i , j ) = ( s a p p ( i , j ) + s i o u ( i , j ) + s a r e a ( i , j ) ) / 3 s(i,j)=(s_{app}(i,j)+s_{iou}(i,j)+s_{area}(i,j))/3 s(i,j)=(sapp(i,j)+siou(i,j)+sarea(i,j))/3双向的意思是,视频的正序和负序(逆帧)都会都会根据以上相似度来连接边。
- 目标感知。这个是对双向时序图做特征优化的,使用的是C-GRU(CNN和GRU的结合,可以同时提时空信息)。
- caption。然后使用attention模型对上一步生成的区域序列特征和全局区域特征融合,再输入到GRU得到最后的caption结果。
[CVPR2020] Object Relational Graph with Teacher-Recommended Learning for Video Captioning
当然关于视频目标的挖掘还可以做的更加复杂!这篇文章作者认为有两个特征表示不足的地方:
- 视觉面缺乏物体的交互,从而缺乏足够的视觉表示。
- 语言层面缺少与内容相关单词的充分训练问题。
所以提出基于关系目标图OEG的编码器以丰富视觉表示(直接看图就是用GCN捕捉物体交互后,再两个Attention…),并且同时设计了一种蒸馏方法,这样可以直接整合外部语言模型(teacher)将丰富的语义整合到字幕模型(student)中以解决词长尾问题。最后Attention LSTM得到视频描述的结果。
[IJCAI2020] Learning to Discretely Compose Reasoning Module Networks for Video Captioning
视频字幕生成需要更复杂的视觉时空推理,例如要生成“一个人在打篮球”这句话,需要首先定位和描述主题“人”,然后解释这个人是“投”,然后描述投的对象“篮球。所以作者提出推理模块网络(RMN)。为了进行时空视觉推理,RMN采用三个基本的时空推理模块:
- a)locate模块,通过时空关注定位视频的单一区域,从而生成的视觉词,如图中的“人”、“篮球”;
- b)relation模块,先检测视频各帧对象,然后通过两帧配对建模动作,生成动作词;
- c)Func模块根据语言上下文生成功能词,如图中的“a”、“is”这种。
其次,为了沿着生成过程组成推理结构,RMN使用了一个动态的和离散的模块选择器,然后采用Gumbel采样使离散采样过程可微,然后用词性标注的POS标签约束模块选择器。
code:https://github.com/tgc1997/RMN