论文笔记 Towards Diverse Paragraph Captioning for Untrimmed Videos
本文最后更新于:2023年6月7日 晚上
Towards Diverse Paragraph Captioning for Untrimmed Videos
论文链接:https://arxiv.org/abs/2105.14477
CVPR2021的一篇关于Paragraph Video Captioning的文章,由人民大学团队开发研究。
文章提出了一种适合长视频的一步段落视频描述方法。传统段落视频描述需要两步,先预测视频片段,再对每一个片段进行描述,这种方式受限于预测片段的准确程度,并且语言连贯性不高。若要一步实现,那么就会面临成百上千的帧数以及长尾效应。
本文提出了一种一步段落描述的模型(One-stage Video Paragraphing model,OVP),该模型包含关键帧选择模块(Keyframe-aware Video Encoder)和视频记忆模块(Attention with Dynamic Video Memories),能够从长视频中逐步选取关键片段进行段落描述。
该组后续文章
Movie101: A New Movie Understanding Benchmark
沿用这个backbone
模型架构
Keyframe-aware Video Encoder
用来提取视频的关键帧,下面三个公式表示一个编码块,和Transformer十分相似,只是在FFN的后面加了一个sigmoid函数,从而控制不同帧的激活程度。
输出的将会根据激活值的值,设置百分比超参数来选择少部分帧作为这个模块的输出
这个模块使用两个损失进行约束,分别为重构损失(Reconstruction Loss)和稀疏损失(Sparsity Loss)。
重构损失需要使用hard negative triplet loss,预先学习一个GRU网络,能够获取一个长视频和其段落描述文本的embedding,然后重构损失:,其中,是soft筛选后的关键帧,这个损失使选择出来的帧能够涵盖视频的关键语义。
但是预先学习的这个GRU网络性能不一定好啊
稀疏损失则惩罚高于阈值的关键帧数量:。
训练的时候soft选择,预测的时候则直接选择百分比的帧数。
视频要是很长,那这个模块的自注意力层恐怕承受不了……
### Attention with Dynamic Video Memories
这个模块有很多复杂的公式,在这里不详细介绍,只是说明大概思路。
总的来说,这个模块把Transformer的Decoder魔改了交叉注意力的输入,使其成为了每一步会发生变化的矩阵。这个就是模型的记忆,而这个记忆会根据以往的状态进行更新,更新操作又分为“增加”和“删除”两部分,前者使记忆大致根据时序逐渐关注视频的不同段落,后者则将已经描述过的部分降低注意力以免重复描述。
“增加”的部分如上,包含上一时刻的记忆和要增加的记忆。要增加的记忆中,控制记忆是否更新(当未输出一整句时,记忆无需更新);表示当前对各片段的注意力,当前未施加注意力的帧的权重更大,并且也会随着记忆而更新,会初始化为对前几帧感兴趣;则是根据输出预测出来的下次预测所需要帧的概率,是输出不同句子的关键项;最后是,是之前提取的视频特征。
虽然u初始化是视频的开始,但是整体貌似无法保证按照时间顺序进行描述。
“删除”的部分如上,各个符号的意义大致相同,是根据输出来计算出的不需要某帧的概率。
这个模型整体来说恐怕有些过于复杂了,没有那种简洁的结构美,但是根据一个记忆模块来控制解码器的输入的思想是很不错的,在面临长序列的视频时,控制输入的量十分重要。
关键帧选择的模块中,一个长视频需要过自注意力来提取固定的关键帧比较低效,需要一个额外的GRU来监督(这一点可以使用目前更好的Backbone来优化),并且FFN参数量巨大却只被用来预测一个门控。除此以外,在以下情况可能有问题:视频的前后两帧,内容极其相似,对应嵌入语义也很相似,但是却是冗余的,可能一同被Selecting Layer选中。
记忆模块则十分复杂,并且记忆的大小还是覆盖了整个选择出来的关键帧,但是思想上却是要对选择出来的关键帧再进行选择,输出不同句子的时候关注不同的地方,假如这里能够再次精简就更理想了。
后续实验部分就不再分析。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!