Google 祭出即插即用代码库 | 专注于基于注意力的SOTA 模型以及 Baseline !

点击下方卡片,关注 「AI视界引擎」 公众号

「AI视界引擎交流群」

picture.image

picture.image

对于一个密集视频字幕生成模型,预测在视频中时间上定位的字幕,理想情况下应该能够处理长的输入视频,预测丰富、详细的文本描述,并且在处理完整个视频之前能够生成输出。

然而,目前最先进的模型仅处理固定数量的降采样帧,并且在看完整个视频后做出一次完整的预测。

我们提出了一种流式密集视频字幕生成模型,该模型包含两个创新组件:首先,我们提出了一种新的记忆模块,基于对传入令牌的聚类,该模块能够处理任意长度的视频,因为记忆的大小是固定的。

其次,我们开发了一种流式解码算法,使我们的模型能够在处理完整个视频之前做出预测。 我们的模型实现了这种流式处理能力,并在三个密集视频字幕生成基准测试中显著提高了最先进水平:ActivityNet、YouCook2和ViTT。我们的代码发布在https://github.com/google-research/scenic。

1 Introduction

在现代社会的方方面面,视频迅速成为传输信息最普遍的媒体格式之一。大多数为视频理解设计的计算机视觉模型仅处理少量帧,通常只覆盖几秒钟的时间范围[31, 33, 39, 49, 58],且通常限于将这些短片段分类到固定数量的概念中。

为了实现全面、细粒度的视频理解,我们研究了一种密集视频字幕生成任务——在视频中对事件进行时间上的定位并为之生成字幕。这一目标理想的模型应当能够处理长的输入序列——以推理长时间、未修剪的视频——并且能够处理文本空间中的长输出序列,详细描述视频中的所有事件。

先前的密集视频字幕生成工作并未处理长输入或长输出。对于任何长度的视频,现有最先进模型要么以大步长(例如,6帧[48])采样极少数帧[11, 30, 48](即时间下采样),要么对所有帧保持每帧一个特征[51, 59, 65](即空间下采样)。在长文本输出方面,当前模型完全依赖自回归解码[19]在最后生成多个句子。

在这项工作中,我们设计了一个如图1所示的密集视频字幕生成的“流式”模型。我们的流式模型由于拥有记忆机制,不需要同时访问所有输入帧就能处理视频。此外,我们的模型可以在不处理整个输入序列的情况下因果性地产生输出,这得益于一种新的流式解码算法。像我们的这类流式模型本质上适合处理长视频——因为它们一次只摄取一帧。而且,由于输出是流式的,因此在处理完整视频之前就会产生中间预测。这一特性意味着流式模型理论上可以应用于处理实时视频流,正如视频会议、安全和持续监控等应用所需。

picture.image

图1:将我们的流式模型(b)与传统的全局模型(a)进行比较。传统的全局模型一次编码整个视频,并在最后为所有事件产生字幕。我们的模型逐帧编码图像,使用它们更新运行中的记忆,并顺序预测字幕。

我们首先提出了一个新颖的记忆机制,一次接收一帧。记忆模型基于K-means聚类,并使用固定数量的簇中心标记在每个时间戳上表示视频。我们展示了这种方法简单而有效,可以处理可变数量的帧,并且在解码时具有固定的计算预算。

为了开发我们的流式模型,我们还提出了一种流式解码算法,并训练我们的网络,使其在特定时间戳的“解码点”(图2)上,根据该时间戳的记忆特征预测在此之前结束的所有事件字幕。因此,我们的网络被训练成在任何视频时间戳上做出预测,而不仅仅是视频结束处,如传统非流式模型那样。此外,我们将早期解码点的预测作为后来解码点的上下文。这一上下文避免了预测重复的事件,并可以作为自然语言总结早期视频的“显式”记忆。我们的流式输出还源于这样一个事实:随着视频长度的增长,我们的记忆将不可避免地在时间上失去信息,因为其大小是有限的。我们通过在处理整个视频之前进行预测来避免这个问题,并通过语言上下文保持早期信息。

picture.image

我们在三个流行的密集视频字幕生成数据集上评估了我们的方法:ActivityNet[29]、YouCook2[64]和ViTT[23]。我们的结果显示,与不可避免地使用更少的帧或特征的最先进技术相比,我们的流式模型显著提高了性能,最多提高了11.0 CIDEr点。我们证明了我们的方法在GIT[48]和Vid2Seq[59]架构上具有泛化能力。最后,我们提出的记忆机制也可以应用于段落字幕生成,将基线提高了1-5 CIDEr点。

2 Related Work

密集视频字幕生成。 密集视频字幕生成需要标注事件,并在时间上对其进行定位。传统上,先前的研究采用两阶段方法,首先在视频中定位事件,然后随后对其进行字幕生成[24, 25, 29, 47, 50]。更近期的端到端方法包括PDVC [66],它使用类似DETR [10]的模型来推断事件字幕和时间戳。Vid2Seq [59]用时间戳标记扩展了语言模型的词汇,使它们能够像常规字幕生成模型一样生成连接的事件字幕。我们也使用了[59]的输出表述,因为它与基础视觉-语言模型[48]整合得很好。一个相关但不同的问题是电影中的音频描述[20, 21, 43],这需要为视障人士生成必须补充对话的字幕,并且经常使用辅助的非因果模型来识别角色或他们的对话[21]。

据我们所知,所有先前的密集字幕生成模型都不是因果模型,因为它们一次编码整个视频。此外,为了处理长视频,它们通常使用经过大幅下采样的视觉特征(通过选择几帧[11, 30, 48],或者每帧进行空间池化特征[51, 59, 65])。相比之下,我们以流式方式处理视频,用一个记忆模块一次处理一个帧的长输入序列,并使用一种新颖的解码算法流输出句子。

图2:我们的框架说明。 每个帧一次通过图像编码器。基于聚类的记忆模型从开始到当前帧维持压缩的视觉特征。在特定的帧上,即“解码点”,我们从记忆中解码出字幕和时间戳。如果有的话,早期的文本预测也会作为后续解码点的语言解码器的前缀传递。我们的模型可以运行在任意长度的视频上,因为记忆具有恒定的大小,还可以在处理整个视频之前输出预测。

长视频的模型。 处理较长视频的常见方式是使用记忆机制来提供过去事件的紧凑表示。使用变压器,记忆可以通过将过去观察的标记作为当前时间步的输入来实现[13, 36, 56]。在视觉中的例子包括[22, 35, 53, 54],它们离线预提取特征并在推理时检索它们,因此不是因果模型。MemViT [55]使用前一时间步的标记激活作为当前时间步的输入。然而,这意味着序列长度会随时间增长,因此它无法处理任意长的视频。将记忆视为将先前观察到的标记压缩成较小、固定大小的集合以在未来的时间步使用的另一种观点。Token Turing Machines [41]使用[40]的标记总结模块总结过去和当前的观察。MovieChat [44]遵循类似的想法,但使用Token Merging [5]的一个变体来进行总结。TeSTra [62]使用指数移动平均来整合视频特征。这种方法的优点是记忆库具有固定大小,因此无论视频的长度如何,计算成本都保持有限。我们的记忆模型具有这一同样理想的属性。然而,我们的记忆基于聚类,使用类似K-means算法的中心来总结每个时间步的标记,我们通过实验证明这优于其他选择。

视频中的因果模型。 我们的流式模型是因果模型,这意味着其输出仅依赖于当前和过去的帧,没有访问未来帧。尽管我们不知道先前的因果模型用于密集视频字幕生成,但在许多其他视觉领域中有因果模型。在线动作检测[14, 28, 62, 63]旨在在实时视频中预测动作标签,不访问未来帧。类似地,在线时间动作定位[7, 26, 42]模型在观察动作后也预测动作的开始和结束时间。大多数对象跟踪[3, 52]和视频对象/实例分割[9, 32, 34]的模型也是因果模型。

上述任务的一个共同主题是模型必须对视频的每个帧进行预测。相比之下,我们专注于密集视频字幕生成[29],这是具有挑战性的,因为输出字幕与视频帧不是一一对应的。我们通过提出一种流式解码算法来解决这一问题。

3 Streaming Dense Video Captioning

给定一个视频 ,我们的目标是生成一组时间上定位的标题集:,其中 和 分别是开始和结束的时间戳(0s<et0\leq s<e\leq t),c="[w_1,,w_n]\mathbf{c}="[w\_{1},\cdots,w\_{n}]" 是一系列的单词标记,n_en\_{e}="" 是事件的数量。每个单词标记="" w_iw\_{i}="" 是一个在="" [0,v][0,|v|]="" 范围内的整数,作为词汇表="" vv="" 的索引。我们首先描述传统的标题生成模型(第3.1节),然后详细说明我们如何通过带有记忆的流式输入(第3.2节)和带有解码点的输出(第3.3节)来开发一个流式模型(图2)。<="" p="">

Preliminaries

标题生成模型通常由一个视觉编码器和一个文本解码器组成。我们概述了这些方法,并展示了它们如何扩展到密集标题生成。

视觉编码器。 第一步是将视频编码为特征 ,其中 是特征分辨率(对于基于变换器的编码器,这是令牌的数量), 是特征维度。视觉特征编码器 可以是一个原生的视频骨干网络[1, 4],或者是一个应用于每一帧的图像编码器[37, 60]。在后一种情况下,视频特征是图像特征的堆叠,,其中 是每帧的令牌数。我们使用逐帧编码,但不是从整个视频中预先提取它们,而是使用一个记忆机制以因果、流式的方式处理特征(第3.2节),这种方式可以推广到更长的视频时长。

文本解码器。 给定视觉特征 和可选的文本前缀令牌 ,文本解码器 从它们生成一系列单词令牌 。我们使用自回归[19, 45]解码器,它根据之前的单词 和(如果有的话)前缀生成下一个单词令牌 ,即 。注意,在标题生成任务中通常不使用前缀令牌,但在问题回答(QA)任务中使用它们来编码输入问题。具体来说,文本解码器 是一系列在视觉特征 和前缀的词嵌入[38, 48]的连接上操作的变换层[45]。这种架构在图像和视频的标题生成和QA任务中都被证明是有效的[11, 30, 48]。

带时间戳的密集视频标题生成。 结合上述视觉编码器和文本解码器,为视频标题生成提供了一个基本架构。为了将其扩展为带有开始和结束时间戳的多个事件的标题生成,Vid2Seq[59]引入了两项主要修改:首先,它扩展了标题生成模型的词汇表 ,加入了时间令牌 和 ,分别代表开始和结束时间。因此,一个单独的事件表示为 ,且 ,其中 Vws<wev|V|\leq w^{s}<w^{e}\leq|v^{\prime}|t|t| 是时间令牌的数量。其次,vid2seq按开始时间顺序将所有定时标题连接成一个长的标题:c="[c_1,c_2,,c"_n_e]\mathbf{c}="[\mathbf{c}^{\prime}\_{1},\mathbf{c}^{\prime}\_{2},\cdots,\mathbf{c}" ^{\prime}\_{n\_{e}}],其中="" n_en\_{e}="" 是事件的数量。因此,密集视频标题生成可以形式化为具有目标="" c\mathbf{c}="" 的标准视频标题生成。<="" p="">

尽管Vid2Seq[59](广义)架构很有效,但它有几个关键局限性:首先,它将整个视频的视觉特征 通过解码器,这意味着它不能有效地扩展到更长的视频和更多的令牌。此外,由于Vid2Seq在处理整个视频后一次预测所有事件标题,它在预测长而详细标题方面存在困难。为了解决这些问题,我们引入了流式 密集视频标题生成模型,我们使用一个记忆模块一次处理一个输入,以限制计算成本,并流式输出,这样我们可以在处理整个视频之前做出预测。

Streaming inputs using memory

输入视觉特征 的维度为 ,其中典型值对于稀疏采样(例如1 FPS)的几分钟长视频来说,,而对于像CLIP [37]这样的视觉转换器,每帧的 个标记。直接将所有的 输送到文本解码器由于自注意力机制的二次复杂度而变得非常昂贵。因此,现有方法激进地降低 的采样率以减少标记数量(通过时间上以大步长[11, 48]抽取几帧,或者空间上对每帧进行单标记子采样[51, 59, 65])。即便如此,对于更长的视频,我们仍将遇到内存限制,而且细粒度定位和描述所需的信息将丢失。因此,我们不是采用激进的降采样,而是使用一种记忆机制逐帧处理所有标记,这确保了无论视频的长度如何,计算成本都是有限的。

设 为一个预定义的记忆大小,每个时间点的记忆 始终是恒定的尺寸 ,即 。我们将 解释为视频中所有相关信息的一个总结,并通过取 的前 个标记来初始化它。因此,我们将 设置为 的倍数,使得初始记忆是前 帧的特征:。

接下来,我们针对每个传入帧 更新每个时间戳的记忆。我们的直觉是在保持恒定的存储预算(即保持恒定的记忆大小 )的同时,尽可能保留原始视频中的多样化信息。因此,我们提出了一个类似 K-means 的聚类算法,使用特征聚类中心作为近似视频特征。为了避免聚类中心快速偏向传入特征,我们跟踪每个聚类中心合并的标记数量。我们将这个作为动量权重,使得从更多标记合并的聚类中心变化得更慢。详细的算法图在 Alg. 1 中提供,并在图3 中说明。

picture.image

K-means 算法对于将数据点分配给聚类中心的分配 (Alg.1中第6行)是不可微的。然而,我们记忆模块的输入和输出是更新的聚类中心 ,这是输入 的线性映射,即 ,其中 是从 计算的权重矩阵。因此,尽管我们不能计算 关于 的梯度,但我们可以计算 关于输入 的梯度,进而计算输入视觉特征 的梯度。结果,我们可以在神经网络的任何部分使用我们的记忆模块,并学习前面层的参数。

Streaming outputs with decoding points

第3.2节中的记忆模块使我们能够高效地摄取长输入视频。然而,在处理整个输入序列之前,我们仍然希望模型的文本解码器能够进行预测:流式输出可以显著降低模型的延迟,因为我们不必等待模型处理整个输入序列就能进行预测。这对于处理例如直播视频流尤其重要。此外,流式输出实际上可以提高我们模型的准确性:由于我们的记忆模块具有固定的大小,从中解码输出,随着时间的推移我们不可避免地会丢失信息。因此,通过在处理整个视频之前进行预测,我们可以避免这个问题。

解码点如fig. 4所示,我们将“解码点”定义为在给定我们记忆中的特征时,我们解码事件标题的中间时间戳。我们训练模型,使得在每个解码点,模型预测在它之前结束的所有事件标题。更具体地说,

图3:基于聚类的记忆模块说明。 当前记忆标记用蓝色正方形表示。在每一个时间步,记忆标记通过整合来自传入标记(灰色正方形)的信息,使用K-means迭代产生更新后的记忆标记(绿色圆圈)。

其中是与第个解码点相对应的所有事件标题的集合,和分别是第个事件的开始和结束时间。由于解码点是顺序应用的,后来的解码点应该能够访问早期解码点的预测,并且不应该重复它们。因此,从第二个解码点开始,我们将之前解码点的输出连接为文本解码器的前缀,如图4所示。此外,在训练期间,我们通过随机从前缀中移除一些之前的事件标题,并将它们添加到目标中,来进行进一步的数据增强,以增加对早期预测可能出现的错误的鲁棒性。因此,在训练期间,我们将我们的前缀和标题目标表示为

picture.image

其中是一个随机选择的分割点,用于将目标和上下文分区。在推断过程中,我们使用模型实际的预测。

在实际操作中,无论是在训练还是推断过程中,我们都以帧间隔的均匀采样解码点。由于模型被训练为预测解码点之前的所有事件标题,这意味着在推断时的确切位置不需要与事件边界紧密匹配。解码点的数量在训练和推断之间也可以不同,正如我们将要进行的消融研究所示。这个方法既简单又可扩展,正如我们在下一节实验中所展示的。

4 Experimental Evaluation

实验装置包括激光器、光束扩展器、一组反射镜、空间滤波器、扫描系统和光学检测器。本研究中使用的激光器是一款频率倍增的Nd:YAG激光器,其基波波长为1064纳米,倍频后的频率为532纳米。光束扩展器用于增加光束直径以匹配空间滤波器的输入孔径。一组反射镜用于将激光束引导至空间滤波器。空间滤波器用于均化激光强度分布。扫描系统由一对 galvanometric 扫描器和一片平面衍射光栅组成。光学检测器是一个在绿光光谱范围内具有高灵敏度的光电二极管。

4.1.1 Datasets and Evaluation Metrics

我们在以下三个最流行的高密度视频字幕数据集上评估我们的模型:ActivityNet Captions [29],YouCook2[64],和ViTT [23]。

ActivityNet Captions [29] 包含8,649个训练视频和4,267个验证视频(考虑了YouTube上仍然存在的视频)。这些视频未经剪辑,每个视频包含多个动作事件,平均视频长度为2分钟,平均每个视频有3.7个事件。这些视频选自ActivityNet [8],涵盖了广泛的视觉领域。每个视频都由人工标注员仔细标注。我们使用这个数据集进行密集字幕(预测一系列带有开始和结束时间的字幕)和段落字幕(将前述字幕作为一个不带时间戳的单个段落进行预测)。

YouCook2 [64] 包含1,333个训练视频和456个验证视频。视频平均长度为分钟,平均每个视频有个事件。这个数据集专注于烹饪场景,大多数视频包含一个主要演员在描述食谱的同时进行烹饪。视频是手动标注的,辅助通过自动语音识别(ASR)获得的语音转录。由于标注过程,如预期的那样,使用ASR作为额外的模态可以用来改进模型预测[59]。然而,我们的工作专注于使用视觉-only输入,以研究我们提出的流式处理模型。我们还在这个数据集上执行密集和段落字幕。

ViTT [23] 包含4,608个训练视频和2,301个测试视频,平均长度为分钟,每个视频包含个事件。它的收集方式与YouCook2类似,但专注于更多样化的领域。同样,我们的实验中不使用ASR输入。

评估指标 对于所有数据集,我们遵循Vid2Seq [59]和PDVC [51]的标准高密度字幕评估指标。主要指标是CIDEr,它已经被改编以联合评估字幕和定位。特别是,我们对具有高于阈值的时间IoU的正地面真实-预测对平均CIDEr分数[46],阈值分别为。同样,我们报告了在多个IoU阈值下平均的METEOR [2]。最后,我们报告了最近提出的SODA[18],它考虑了来自同一视频的所有事件字幕,因此是一个更全面的衡量标准。

4.1.2 Implementation details

我们将在两个视频字幕架构上实现我们的流式模型,分别是GIT [48]和Vid2Seq [59]。两者都使用从CLIP [37]初始化的ViT-L [16]作为图像编码器 。

GIT [48] 将所有输入帧的标记 连接起来,并将它们输入到一个6层的Transformer语言解码器中。我们在语言解码器之前应用我们的流式输入模块,即不是连接帧特征,而是使用我们的记忆特征代替。原始的GIT论文在内部数据集上预训练了语言解码器[48]。由于我们无法访问原始数据或权重,我们在WebLI数据集[12]上预训练我们的GIT模型。

图4:训练中的解码点监督。解码点 可以在任何帧上。在每一个点上,我们取记忆特征 ,并预测在 之前已经完成的所有事件,并且不在前缀 中。因此,前缀与预测目标并集覆盖了其之前完成的所有事件。

Vid2Seq [59] 在空间上将所有帧标记池化为每帧1个标记,然后应用一个12层的时序Transformer [1] 来获取最终的视觉特征。语言解码器是一个12层的T5-Base解码器[38]。Vid2Seq在YT-Temporal数据集[61]中的叙述视频上预训练了时序Transformer和T5解码器。我们使用他们公开的预训练权重作为我们的初始化。我们在时序Transformer之前应用我们的流式输入模块,以确保中间特征保持因果性。

在为每个数据集微调我们的模型时,我们遵循之前的工作[51, 59, 66]冻结了帧编码器。我们在附录中提供了详细的训练超参数。对于每个架构,3个数据集之间的训练超参数是共享的。

Analysis of Streaming Modules

我们首先分析我们模型中的每个主要组成部分:使用我们的记忆模块对流式输入进行处理(第3.2节),然后使用解码点对流式输出进行处理(第3.3节)。除非另有说明,我们的实验中使用GIT [48] 主干网络。由于训练和评估中的随机性,对于所有消融实验(表1-表3),我们重复相同的运行3次并报告平均指标。与其他方法(表4,表5)进行比较时,我们报告最佳模型的结果。

picture.image

picture.image

picture.image

4.2.1 Streaming inputs with memory

由于GIT [48] 架构在将视觉特征 传递给语言解码器之前,会拼接来自多个帧的视觉特征,因此它受到可处理帧数的限制。我们的基于聚类的记忆模块使我们能够处理更多帧,以下是我们用来评估它的几种方法:

无记忆 :我们简单地将所有帧的所有视觉标记串联起来,如GIT [48]中所做。由于内存限制,我们只能将最多16帧输入到解码器。

空间或时间池化 :我们沿着空间或时间维度池化视觉特征 ,以减少传递给语言解码器的标记数量。

EMA :我们使用每一步的帧特征 的指数移动平均,遵循TeSTra [62]。我们扫描衰减率从 ,发现 表现最佳。

MovieChat [44]。最后,最近的MovieChat论文维护了一个包含 个标记的记忆。对于每个传入的帧,它顺序处理每个标记,并将记忆库中最相似的两组标记合并,以保持记忆库的大小固定在 。我们使用作者提供的公开代码实现这种方法。

表1比较了不同记忆模块的结果。对于 ,我们可以将视觉骨干网 的所有标记输入到解码器,"无记忆"和我们的方法都表现得最好。我们预计"无记忆"会表现良好,因为它使用了最多的标记,。然而,我们的基于聚类的 方法以 少的标记数量有效地捕捉到视频中的相关信息,并且也是因果的。由于计算成本,不可能在 时使用"无记忆"。

表1:记忆模块的消融研究 。我们在ActivityNet上用GIT展示了不同输入帧数 下的CIDEr(多个IoU的平均值)。第二列显示了传递给语言解码器的输入标记数量。 是每帧的标记数量。 是记忆标记的数量。我们的模块受益于更多帧,并且优于其他替代方案。

随着帧数的增加,简单地沿着空间或时间维度池化实际上表现更差。这可能是因为我们正在更长的时间范围内平均信息,从而失去了更详细定位或字幕所需的信息。而我们的方法和MovieChat则能够利用更多帧来提高性能,因为它们在记忆中保持不同的特征。最后,对于我们所考虑的所有帧数,我们的聚类方法都优于MovieChat和其他记忆模块,这就是为什么我们在所有未来的实验中使用它的原因。

我们还研究了表2中记忆模块的超参数。在这次实验之后,我们设置 ,即两帧中的标记数量,并使用2次K-means迭代,因为它实现了最佳性能。我们提出的动量项(第3.2节),防止聚类中心过于偏向传入帧标记,也将CIDEr从29.7提升到30.6。

picture.image

4.2.2 Streaming outputs

我们现在分析我们提出的流式解码方法(第3.3节)的效果,该方法使我们能够从记忆中的中间特征预测事件标题,并利用先前的预测作为文本解码器的前缀。表3分析了训练过程中解码点数量的影响,前缀的影响,以及我们在推断过程中如何选择解码点。

表2(a)显示,通过增加训练过程中的解码点数量,我们取得了显著的改进,与仅在最后进行预测的传统模型相比,CIDEr分数提高了10分,相对提高了33%。使用解码点的流式输出可以带来多方面的性能优势:首先,由于我们有多个解码点,每个解码点所需的输出标题较短,使得标题任务更容易。其次,来自我们记忆的视觉特征可能与目标文本更好地对齐,因为并不像基线方法那样代表整个视频的视觉特征,而只代表到解码点为止的特征。最后,使用解码点进行训练为模型提供了更强的训练信号,因为我们在每个解码点都提供了训练监督。此外,它应该有助于泛化,因为网络正在被训练,以便沿时间线从更多点做出一致的预测。

表2(b)显示,提供过去的预测作为前缀是至关重要的。如果没有前缀,模型的表现会很差,甚至不如仅在最后解码的非流式基线(30.6)。这是因为模型在每个解码点都预测重复的内容。提供过去的标题可以显著优于仅解码最后的基线。我们发现,即使添加了先前预测的时间戳,也不会比仅使用标题表现得更好,这表明过去事件的时间边界对于未来事件并不特别有用。表2(c)进一步显示,在带有前缀的训练中,模仿推断行为,包括早期预测中缺失的标题是很重要的。

表2(d)检查了推断过程中的解码点选择。我们发现,使用步长(相当于在一个64帧片段的中间和末端设置解码点)比(三个均匀选择的点)表现得更好。我们观察到,在推断过程中使用过多的解码点有时仍然会导致模型做出重复预测(即使有了过去的预测作为前缀)。尽管也可以使用非最大抑制(NMS [17])来移除重复预测,但对于标题模型来说更具挑战性,因为我们还需要每个事件标题的校准分数来执行NMS。因此,我们将密集视频标题中的NMS调查留作未来的工作。

4.2.3 Generalization to backbones and datasets

为了展示我们方法的通用性,我们在GIT [48] 和 Vid2Seq [59] 架构上分别添加了我们的流式模块,分别称为Streaming GIT 和 Streaming Vid2Seq。

表4:在密集视频字幕领域的最先进比较 我们将流式模型添加到GIT [48] 和 Vid2Seq [59] 上,分别表示为Streaming GIT 和 Streaming Vid2Seq,在三个数据集上一致地实现了持续的显著改进。所有模型仅使用视觉输入。表示仅使用视觉输入的版本。

表4的最后两行显示,我们在三个数据集上一致地显著优于两个基线。由于内存限制,我们的GIT基线最多可以处理帧,而我们的改进也源于我们的流式GIT使用了,这要归功于我们的内存模块。Vid2Seq在空间上池化视觉标记,因此它每个帧只使用一个标记。因此,我们的Streaming Vid2Seq没有使用比基线更多的帧数,而改进来自于我们输出事件字幕的流式处理,正如表3所示,这显著提高了性能。

最后,我们观察到在YouCook2上,我们的Vid2Seq基线表现明显优于GIT基线。这种差异是由于预训练造成的:我们使用了公共的、预训练的Vid2Seq检查点[59],该检查点在类似YouCook2领域的YT-Temporal [61] 数据集上进行了预训练。请注意,这与Vid2Seq [59] 当前的最先进实验协议相同。

State-of-the-art Comparison

表4还将我们的方法与仅使用视频帧作为输入的密集视频字幕生成方法的最新技术进行了比较。与之前发表的作品相比,我们取得了显著的增益,特别是在ActivityNet上CIDEr提高了11.0分,在YouCook2上提高了4.0分。我们在SODA和Meteor上的改进虽然较小,但仍然是正面的。我们在定位(F1)上的改进较小,这表明增益更多来自于更好的字幕质量。图5可视化了ActivityNet上的一个示例。

picture.image

我们注意到,通过使用自动语音识别(ASR)作为额外的输入模态[59],特别是对YouCook2,有可能进一步改善结果。这主要是因为说话者的语音与视觉内容高度对齐,并且ASR本身在数据集的注释过程中就被使用了。然而,将多模态如ASR集成到我们的工作中与本文的主要关注点是正交的。

段落字幕生成。 除了密集字幕生成之外,我们还与在相同数据集上的段落字幕生成最新技术模型进行了比较,该任务旨在预测整个视频中的字幕,但不包含任何时间戳。因此,我们在这里只应用我们的流式输入模型,因为在这种设置中,用于在训练期间分配解码点的时间戳是不可用的。

我们在ActivityNet [29]和Youcook2 [64]上为段落字幕生成交叉验证流式GIT模型。表5显示我们在这一任务上也取得了最新的结果。GIT基线是在与我们的完整模型相同的设置下训练的模型,但解码器使用16个输入帧并将所有标记连接起来。这个基线已经超过了仅视觉输入的最新技术。我们的模型使用更多的输入帧(64帧),并在两个数据集上分别将性能提高了0.9和5.5分,这证明了我们的记忆模块的好处,与表1中的结果一致。

5 Conclusion and Future Work

我们提出了一个密集视频字幕生成的流式模型,该模型包含两个新颖的组件:一个基于聚类的记忆机制,能够有效处理任意长度的视频,同时计算复杂度有限;以及一个流式解码算法,使我们的模型能够在处理完整个视频之前进行预测。我们在实现这种流式处理能力的同时,在五个密集型和段落型字幕生成任务上提升了现有技术水平。

未来的工作将是开发一个密集视频字幕生成的基准,该基准需要推理比当前数据集更长的视频,以更好地评估我们这类流式模型的能力。

图5:在ActivityNet验证集上的定性结果。分别是地面真实(顶部)、基线(中间)和我们模型(底部)的结果。我们分别以绿色和蓝色显示了两个解码点的输出。与基线相比,我们的模型捕捉到了更多细节。

表5:在段落字幕生成任务上的最新技术水平比较。我们在ActivityNet和YouCook2验证集上报告了CIDEr得分。我们比较了不需要动作提议输入且仅接收视觉输入的模型。表示仅使用视觉输入的版本。我们的模型在两个数据集上都取得了最佳性能。

Appendix A Training hyperparameters

我们的所有实验都是使用Scenic库[15]和JAX[6]进行的。采用GIT[48]架构,我们首先在WebLI[11]数据集上进行预训练,以进行通用图像字幕生成。WebLI[11]包含了从互联网alt-text中提取的1亿个图像-文本对。图像编码器从CLIP-L[37]初始化,语言解码器则随机初始化。在预训练期间,我们遵循GIT[48]的标准标签平滑(因子)交叉熵损失,并训练10个周期。我们使用Adam[27]优化器,不使用权重衰减。学习率设置为,批量大小为,采用余弦衰减计划。与GIT[48]一样,我们对图像编码器使用的较低学习率。

在针对密集视频字幕数据集[23, 29, 64]进行微调时,我们冻结了图像编码器。我们再次使用Adam[27]优化器,权重衰减为。我们以的批量大小训练个周期,并使用的学习率,在第个周期时降低。

对于Vid2Seq[59],我们使用了公开发布的预训练检查点1,该检查点在YT-Temporal数据集[61]上进行了预训练,采用去噪和字幕生成目标[59]。在针对密集视频字幕数据集[23, 29, 64]进行微调时,我们遵循了他们的官方训练参数。具体来说,我们冻结了图像编码器,并在空间维度上对图像标记进行池化,以获得每个帧一个标记。T5[38]解码器使用的dropout率。我们再次使用Adam[27]优化器,权重衰减为。我们以的批量大小训练个周期,并使用的学习率,采用余弦衰减计划。对于所有模型,我们遵循标准协议使用束搜索解码,束大小为4,简洁性惩罚为0.6[38]。我们还强调,在适用的情况下,所有基础架构和骨干网络在比较和基线之间保持一致。

对于所有模型,我们遵循标准协议使用束搜索解码,束大小为4,简洁性惩罚为0.6[38]。我们还强调,在适用的情况下,所有基础架构和骨干网络在比较和基线之间保持一致。

点击上方卡片,关注 「AI视界引擎」 公众号

0
0
0
0
评论
未登录
暂无评论