Do You Remember? Dense Video Captioning with Cross-Modal Memory Retrieval(24CVPR)

Dense Video Captioning这个方向今年在CVPR上有三篇文章,这篇感觉是基于之前的PDVC框架来做的,另外两篇,一篇是借助大模型生成伪caption,再细化边界和caption,一篇是基于vid2seq基础上做的流式生成caption,不需要将视频下载到本地进行完成的读取。考虑到缺乏语义内容,仅靠视觉输入解决任务具有挑战性。该模型利用外部记忆来整合先验知识。通过跨模态视频-文本匹配的方法来进行记忆检索。为了有效地整合检索到的文本特征,设计了具有视觉和文本跨注意力模块的多功能编码器和解码器。

1.介绍

提出一种新的密集视频描述框架CM2,模型能够从外部记忆中回忆相关事件,从而提高描述生成的质量。外部记忆基于从训练数据中提取的先验知识构建。模型从未剪辑视频中提取潜在的事件候选,并从外部记忆中检索相关信息,提供多样化的语义信息。模型引入了一个多功能的编码器-解码器结构,通过将这些检索到的记忆融入视觉特征,使用视觉和文本跨注意力机制来帮助模型学习任务之间的交互。

2.相关工作

检索增强生成(Retrieval-Augmented Generation,RAG

通过结合预训练的参数化模型和外部的非参数化记忆来有效利用预训练模型的知识。这种方法主要用于以下情况:知识密集型任务:在这些任务中,模型需要生成的内容超出了它从预训练数据中学到的知识范围,例如对特定领域的事实性回答或高度专业化的文本生成。跨模态生成任务:例如视频描述生成和图像描述,在这些任务中,模型需要从视觉输入中理解复杂的上下文,检索增强可以帮助生成更加精确和连贯的文本描述。检索增强生成最初应用于图像字幕生成任务,但逐步扩展到了视频字幕生成。

未来研究方向:

改进视频到文本的匹配:目前,视频到文本的匹配过程中可能会丢失一些重要的时空信息。随着视频建模技术和视频到文本匹配技术的进步,检索增强生成在密集视频字幕生成中的表现有望进一步提升。优化外部记忆的构建和利用:未来的研究可能会探索如何更加有效地构建和利用外部记忆库,以提升检索到的信息的质量和模型的生成性能。

3.方法

CM2的关键思想是从外部存储的记忆库中检索相关的文本特征,将这些特征与视频视觉特征相结合,生成更加精准的字幕。具体来说,该模型使用视频片段的视觉特征作为查询,在记忆库中检索与这些片段语义最相关的文本描述。检索到的文本特征随后与视觉特征一起输入到模型的编码器-解码器架构中,以实现高质量的字幕生成。

3.1 记忆检索模块(Memory Retrieval Module)

记忆构建

CM2的记忆库由从训练数据中提取的句子级别的文本特征构成。具体步骤如下:文本收集:从训练数据集中提取视频的文本描述(如字幕),并确保这些文本的语义信息能与视频的事件相对应。特征编码:使用CLIP模型对文本进行编码。通过CLIP的文本编码器,句子级别的文本描述被转化为特征向量,并存储在记忆库中。

记忆单元(Memory Units)

在句子级别定义一个记忆单元,记忆库中的每个记忆单元是基于句子的文本特征。因为模型的设计目标是使记忆库能够支持片段级别的视频-文本检索,所以每个记忆单元都对应一个视频片段的字幕,而不是整个视频的描述。这种设计确保了记忆库中的信息足够细粒度,以便模型可以在事件级别上进行检索,从而生成更加精确的字幕。

片段级检索

视频通常由多个语义不同的事件组成,并且后续密集视频描述的组件也是在事件级别运行。因此需要在事件级别进行特征检索。由于未裁剪的视频可能包含多个事件,CM2模型首先通过时间锚点划分将视频分割成若干个时间片段(temporal anchors)。在实验中,不同的数据集会有不同的划分数量,比如ActivityNet Captions数据集可能划分成10个锚点,YouCook2数据集可能划分成50个锚点。为了获取每个锚点的视觉信息,CM2使用预训练的CLIP模型的视觉编码器。为了减少计算量并提取视频片段的代表性信息,模型对每个锚点内的多帧视觉特征进行平均池化(temporal averaging),将其时空信息压缩为一个片段级别的视觉特征向量。这样,锚点的每个视觉特征都可以视为该时间段内视频的总体代表。

在提取完锚点的视觉特征后,模型会使用这些视觉特征作为查询,检索外部记忆库中与之相关的文本特征。这一过程包括以下几个步骤:视觉特征作为查询(Query):每个视频锚点的视觉特征都会被用作查询向量,去搜索外部记忆库中的文本特征。相似性计算(Similarity Calculation):为了找到最相关的文本描述,CM2使用余弦相似度(Cosine Similarity)来衡量视觉特征和记忆库中的文本特征之间的相似度。检索K个句子特征:在每个锚点的视觉特征与记忆库中的文本特征进行相似度计算后,模型会检索出与该锚点最相似的K个句子特征。每个时间锚点可以有多个对应的文本描述特征,以便于捕捉更多样的语义信息。

当模型为每个锚点检索到多个文本特征时,需要对这些特征进行聚合,以生成代表该时间段的文本特征表示。平均池化(Average Pooling):模型对每个锚点检索到的K个句子特征进行平均池化,这样可以得到一个更具代表性的文本特征向量。平均池化有助于整合所有检索到的文本特征,去除噪声,并生成一个较为平滑且稳定的语义表示。得到检索文本特征:最终,每个时间锚点都有一个代表性的文本特征,这些特征将与视觉特征一起输入到后续的编码器-解码器结构中,辅助生成更加准确的字幕。

3.2通用编码器-解码器结构(Versatile Encoder-Decoder Architecture)

编码器

为了有效结合视频的视觉特征和检索到的文本特征,设计了一个共享权重的通用编码器结构。

视觉特征编码,视频帧采样:首先,模型会从输入的视频中以每秒1帧的速率进行帧采样(FPS),并固定帧数。例如,对于ActivityNet Captions数据集,设置帧数为100;对于YouCook2数据集,帧数为200。这个采样过程确保了每个视频都被标准化为一个固定长度的特征序列。多尺度卷积处理:然后,CM2模型通过多个多尺度卷积层(Multi-scale Convolutional Layers)来处理这些帧特征。多尺度卷积层的作用是从视频帧中提取出不同时间尺度的信息,即从较小的时间窗口到较长的时间范围,模型都能够感知到。这种多尺度处理使得视频中的短期和长期时空信息都能够被编码进视觉特征中。输出多尺度视觉特征。

文本特征编码,CLIP文本编码:对于文本特征,模型会检索外部记忆库中的相关文本描述,并使用CLIP模型的文本编码器对其进行编码,生成句子级别的文本特征。每个文本描述首先通过CLIP的标记器(tokenizer)转化为一系列标记,并确保每个句子的长度一致(通过填充操作达到最大标记数)。这些标记随后被CLIP文本编码器转换为句子特征。特征映射:文本特征经过CLIP编码器的处理后,被映射到与视觉特征共享的特征空间中,生成文本特征。

这个编码器采用了多尺度卷积层,处理视频帧特征,并对不同时间尺度的信息进行多尺度聚合。视觉特征和文本特征被分别输入到相同的权重共享编码器中,这样可以在共享的特征空间中学习到跨模态的关联,同时保留每种模态的独特信息。

解码器

解码器的主要任务是从多模态特征中生成事件查询(event queries),然后通过视觉和文本的交叉注意力机制,利用这些查询来生成字幕和事件位置。事件查询是可学习的嵌入向量,表示视频中的潜在事件。每个事件查询都包含丰富的时间和语义信息,并通过解码器进一步与视觉和文本特征进行交互,生成完整的事件描述。查询数目:解码器生成的事件查询的数目是固定的。在具体实现中,ActivityNet Captions数据集使用10个事件查询,而YouCook2数据集使用100个事件查询。这些查询的数目决定了模型在每个视频中可以捕捉的事件数量。

解码器的核心机制之一是跨模态交叉注意力,即解码器使用视觉交叉注意力和文本交叉注意力,将视觉特征和文本特征与事件查询进行结合。CM2模型设计了两种独立的交叉注意力层,分别处理视觉特征和文本特征。视觉交叉注意力:该层用于处理视觉特征与事件查询之间的交互,从而增强事件查询的时间信息。视觉交叉注意力帮助模型更好地理解视频的时间特征,例如事件发生的时间段和持续时间。文本交叉注意力:该层用于处理检索到的文本特征与事件查询的交互,从而丰富事件查询的语义信息。文本交叉注意力确保模型能够生成语义连贯的字幕。

通过这两个交叉注意力机制,解码器生成了包含丰富时间和语义信息的事件查询特征,并最终用于生成字幕和定位视频事件的时间戳。

3.3密集事件预测模块(Dense Event Prediction Module)

这里是直接用的PDVC的架构充当的这个模块,可以去看之前的文章关于这个部分的详述。在事件查询经过交叉注意力处理后,通过并行的子任务头来完成事件定位和字幕生成任务。设计了三个并行的任务头,分别用于事件的定位、字幕生成和事件数量的预测。损失和推断也没改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值