原文出处
CVPR
原文链接
[2404.01297] Streaming Dense Video Captioninghttps://arxiv.org/abs/2404.01297
原文笔记
What
1、提出了一种基于聚类传入token的新记忆模块,该模块可以处理任意长的视频,并且可以在不访问视频所有帧的情况下处理视频(这句话的含义是他是个因果模型)因为记忆模块的大小是固定的,所以解码时的计算预算是固定的。
2、开发了一种流解码算法,使我们的模型能够在处理整个视频之前进行预测。流输出大大降低了模型的延迟,因为我们不需要模型处理整个输入序列进行预测,这一特性意味着流媒体模型理论上可以应用于处理实时视频流,如视频会议、安全和持续监控等应用。此外流式传输输出实际上可以提高模型的准确性(由于我们有一个固定大小的内存K,从中解码输出,随着时间的推移不可避免地丢失信息,作者通过在处理整个视频前进行预测来避免这个问题)并显着提高了三个密集视频字幕基准的最高技术水平:ActivityNet、YouCook2 和 ViTT。
Why
对于密集视频描述任务:
1、现有的方法通常采用固定数量的下采样帧来处理不同长度的视频,这种方法对于短视频效果较好,对于长视频这样做有可能会损失信息。
2、现有方法都是将整个视频数据进行完整读取之后在进行的时间定位以及预测,无法满足实时caption的要求。
3、目前的模型完全依赖自回归解码在最后生成多个句子。无法满足生成长输出的要求。
(我们研究了密集视频字幕的任务——联合定位视频中的事件并为它们生成字幕。实现这一目标的理想模型应该能够处理两种长输入序列——对长而未经修剪的视频进行推理——也能够处理文本空间中的长输出序列,详细描述视频中的所有事件。之前关于密集视频字幕的工作既不能处理长输入也不能处理长输出。给出一个任意长度的视频,最先进的模型要么以大跨步[11,30,48]对非常少的帧(例如,6帧/帧)进行采样(即,时间下采样),要么对所有帧[51,59,65]保持每帧一个特征(即,空间下采样)。对于长文本输出,目前的模型完全依赖于自回归解码[19]在最后生成多个句子。)
Challenge
1、重复事件的预测问题,以及所有事件的完备的预测的问题
2、长时记忆丢失信息,
3、对密集视频描述任务的因果模型来说,输出字母与视频帧没有一一对应
4、K-means算法在数据点分配到聚类中心 δ 方面是不可微的(Alg.1 的第 6 行)。
How
1、我们提供早期解码点的预测作为后续解码点的上下文。
2、在处理整个视频前做出预测。
3、提出一种流解码算法来解决这个问题。
4、然而,我们的内存模块的输入和输出是更新的聚类中心 Mt,它是输入 X = [Mt−1, ft] 的线性映射,因为 Mt = AX,其中 A 是从 X 计算的权重矩阵。因此,即使我们无法计算 A 相对于 X 的梯度,我们可以计算 Mt 相对于输入 X 的梯度,从而计算输入视觉特征 f。因此,我们可以在神经网络的任何部分使用我们的内存模块,并学习前一层的参数。
原文翻译
Abstract
密集视频字幕的理想模型——预测视频中在时间上定位的描述——应该能够处理长输入视频、预测丰富、详细的文本描述,并在处理整个视频之前能够产生输出。然而,当前最先进的模型处理固定数量的下采样帧,并在看到整个视频后做出单个完整预测。我们提出了一种流密集视频字幕模型,该模型由两个新的组件组成:首先,我们提出了一种基于聚类传入token的新记忆模块,该模块可以处理任意长的视频,因为内存的大小是固定的。其次,我们开发了一种流解码算法,使我们的模型能够在处理整个视频之前进行预测。我们的模型实现了这种流能力,并显着提高了三个密集视频字幕基准的最高技术水平:ActivityNet、YouCook2 和 ViTT。我们的代码发布在 https://github.com/google-research/scenic。
1. Introduction
视频在现代社会中无处不在,迅速成为传播信息最流行的媒体格式之一。大多数为视频理解而设计的计算机视觉模型只处理少数帧,大多数只覆盖几秒钟[31,33,39,49,58],并且通常仅限于将这些短片段分类为固定数量的概念。为了实现全面、细粒度的视频理解,我们研究了密集视频字幕的任务——联合定位视频中的事件并为它们生成字幕。实现这一目标的理想模型应该能够处理两种长输入序列——对长而未经修剪的视频进行推理——也能够处理文本空间中的长输出序列,详细描述视频中的所有事件。
之前关于密集视频字幕的工作既不能处理长输入也不能处理长输出。给出一个任意长度的视频,最先进的模型要么以大跨步[11,30,48]对非常少的帧(例如,6帧/帧)进行采样(即,时间下采样),要么对所有帧[51,59,65]保持每帧一个特征(即,空间下采样)。对于长文本输出,目前的模型完全依赖于自回归解码[19]在最后生成多个句子。
在这项工作中,我们设计了一个密集视频字幕的流模型,如图1所示。由于记忆存储机制,我们的流模型不需要同时访问所有输入帧来处理视频。此外,由于采用了一种新的流解码算法,我们的模型可以在不处理整个输入序列的情况下产生因果输出。像我们这样的流媒体模型天生就适合处理长视频——因为它们每次只摄取一个帧。此外,由于输出是流的,在处理完整视频之前会产生中间预测。这一特性意味着流媒体模型理论上可以应用于处理实时视频流,如视频会议、安全和持续监控等应用。
为了开发我们的流模型,我们首先提出一种新颖的记忆机制,一次取一帧。内存模型基于K-means聚类,并使用固定数量的聚类中心令牌来表示每个时间戳的视频。该方法简单有效,可以处理可变帧数,且解码时的计算预算是固定的。
我们还开发了一种流式解码算法,并训练我们的网络,以便给定特定时间戳的“解码点”(图2),它预测在给定该时间戳的记忆特征之前结束的所有事件标题。因此,我们的网络经过训练,可以在视频的任何时间戳进行预测,而不是像传统的非流媒体模型那样,只在视频的末尾进行预测。此外,我们提供早期解码点的预测作为后续解码点的上下文。这种情境避免了对重复事件的预测,并且可以用自然语言作为“显性”记忆来总结之前的视频。我们的流输出也受到这样一个事实的驱动,即随着视频长度的增长,我们的记忆将不可避免地随着时间的推移而丢失信息,因为它的大小是有限的。我们通过在处理整个视频之前做出预测来避免这个问题,并且仍然通过语言上下文保留早期信息。
我们在三个流行的密集视频字幕数据集ActivityNet[29]、YouCook2[64]和ViTT[23]上评估我们的方法。我们的结果表明,我们的流模型比最先进的模型显着改进,后者不可避免地使用更少的帧或更少的特征,最多 11.0CIDEr 点。我们表明,我们的方法可以推广到 GIT [48] 和 Vid2Seq [59] 架构。最后,我们提出的内存也可以应用于段落字幕,将基线提高了 1-5 个 CIDEr 点。
2. Related Work
Dense video captioning.密集的视频字幕需要为事件添加字幕,并在时间上对其进行定位。传统上来说,之前的工作使用了两阶段的方法,首先在视频中定位事件,然后为它们添加字幕[24,25,29,47,50]。最近的端到端方法包括PDVC[66],它使用类似于detr的[10]模型推断事件标题和时间戳。Vid2Seq[59]使用时间戳标记增强了语言模型的词汇表,允许它们以与常规字幕模型相同的方式生成串联的事件标题。我们还使用[59]的输出公式,因为它与基础视觉语言模型[48]集成得很好。一个相关但不同的问题是电影中的音频描述[20,21,43],它需要为视障人士生成字幕,这些字幕必须与语音互补,并且经常使用辅助的非因果模型来识别角色或他们的语音。
据我们所知,所有先前的密集字幕模型都不是因果的,因为它们一次对整个视频进行编码。此外,为了处理长视频,它们通常使用大量下采样的视觉特征(通过选择几帧[11,30,48],或每帧的空间池化特征[51,59,65])。相比之下,我们以流式方式处理视频,使用记忆模块一次处理长输入序列,并使用一种新颖的解码算法流式输出句子。
Models for long videos.处理较长视频的一种常见方法是使用记忆机制来提供过去事件的紧凑表示。使用transformer,存储器,可以很容易地通过使用过去观察中的标记(token)作为当前时间步的输入来实现[13,36,56]。视觉的例子包括[22,35,53,54],它离线预提取特征并在推理过程中检索它们,因此不是因果的。MemViT[55]使用前一个时间步的令牌激活作为当前时间步的输入。然而,这意味着序列长度随着时间的推移而增长,因此它无法处理任意长的视频。
记忆的另一种观点是将其视为一种将先前观察到的标记压缩成更小、固定大小的集的方法,用于未来的时间步长。令牌图灵机[41]使用[40]的令牌摘要模块总结了过去和当前的观察结果。MovieChat [44] 遵循类似的想法,但使用 Token Merging [5] 的变体来执行摘要。TeSTra[62]使用指数移动平均来整合视频特征。这种方法的优点是内存库具有固定的大小,因此无论视频的长度如何,计算成本都是有界的。我们的记忆模型具有相同的理想属性。然而,我们的内存基于聚类,使用来自类似 K-means 的算法的中心来总结每个时间步的标记,并且我们通过实验表明这优于其他替代方案。
Causal models in video.我们的流模型是因果的,这意味着它的输出仅取决于当前帧和过去的帧,而无需访问未来的帧。尽管我们不知道用于密集视频字幕的先验因果模型,但许多其他视觉领域都存在因果模型。在线动作检测[14,28,62,63]旨在实时预测视频的动作标签,而无需访问未来的帧。类似地,在线时间动作定位 [7, 26, 42] 模型还预测观察到动作后的开始和结束时间。大多数对象跟踪 [3, 52] 和视频对象分割 [9, 32, 34] 的模型也是因果的。上述任务的一个共同主题是模型必须对视频的每一帧进行预测。相比之下,我们专注于密集视频字幕 [29],这具有挑战性,因为输出字幕与视频帧没有一一对应。我们通过提出一种流解码算法来解决这个问题。
3. Streaming Dense Video Captioning
给定一个视频 V ∈ RT ×H×W ×3,我们的目标是生成一组时间定位的标题:{(s, e, c)1,。, (s, e, c)ne },其中 s ∈ R 和 e ∈ R 分别是开始和结束时间戳 (0 ≤ s < e ≤ T ),c = [w1, · · · , wn] 是单词序列标记,ne 是事件的数量。每个单词标记 wi 是 [0, |V |] 范围内的整数,索引词汇表 V。我们首先描述传统的字幕模型(第 3.1 节),然后详细说明我们如何通过带有记忆存储的流输入(第 3.2 节)和解码点的输出(第 3.3 节)来开发流模型(图 2)。
3.1. Preliminaries
字幕模型大致由视觉编码器和文本解码器组成。我们概述了这些方法,并展示了它们如何扩展到接下来的密集字幕。
Visual encoder.第一步是将视频编码为特征 f = F(V), f ∈ R^N ×D ,其中 N 是特征分辨率(即基于转换器的编码器的token数量),D 是特征维度。视觉特征编码器 F 可以是应用于每个单独帧的原生视频主干 [1, 4] 或图像编码器 [37, 60]。在后一种情况下,视频特征是一堆图像特征,即 N = T · Nf ,其中 Nf 是每帧的标记数。我们使用每帧编码,但不是从整个视频中预先提取它们,而是使用记忆机制以因果流式方式(第 3.2 节)处理特征,可以推广到更长的视频持续时间。
Text decoder.给定视觉特征 f 和可选的文本前缀标记 p,文本解码器 D 从中生成一系列单词标记 c。我们使用自回归[19,45]解码器来生成下一个单词标记wi,条件是前面的单词w1:i−1,如果提供前缀则是wi = D(f, p, w1:i−1)。请注意,前缀标记通常不用于字幕任务,而是用于问答 (QA) 来编码输入问题。具体来说,文本解码器 D 是一系列transformer层 [45],它在视觉特征 f 和前缀的词嵌入的拼接上运行 [38, 48]。这种架构已被证明在图像和视频的字幕和 QA 任务中都是有效的 [11,30,48]。
Dense video captioning with timestamps.结合上述视觉编码器和文本解码器为视频字幕提供了基本架构。为了将其扩展到使用开始和结束时间戳对多个事件进行字幕,Vid2Seq [59] 引入了两个主要修改:首先,它使用时间标记 ws 和we增强了字幕模型的词汇表 V‘,它们分别代表开始和结束时间。因此,单个事件表示为 c′ = [ws,we, w1, · · · , wn] 和 |V′| = |V | + |T |其中 |V | ≤ ws<we ≤ |V'|,|T |是时间标记的数量。其次,Vid2Seq 将所有定时字幕连接到单个长字幕中,该字幕由开始时间排序:C = [c′1, c′2, · · · , c′ne ] 其中 ne 是事件的数量。因此,密集视频字幕可以表述为目标 C 的标准视频字幕。
尽管它很有效,但(广义)Vid2Seq [59] 架构有许多关键限制:首先,它通过解码器从整个视频 f 转发视觉特征,这意味着它不能有效地扩展到更长的视频和更多的标记。此外,由于 Vid2Seq 在处理整个视频后一次预测所有事件字幕,因此它难以预测长、详细的字幕。为了解决这些问题,我们引入了流式密集视频字幕模型,其中我们使用内存模块一次处理输入以限制计算成本,并流式传输输出,以便在处理整个视频之前进行预测。
3.2. Streaming inputs using memory
输入视觉特征 f 具有维度 R^T ·Nf ×D ,其中典型值T>64用于稀疏采样(例如 1 FPS)、几分钟长视频典型值Nf = 257 个标记每帧用于视觉转换器,例如 CLIP [37]。由于自注意力的二次复杂度,直接将所有 T·Nf 馈送到文本解码器是非常昂贵的。因此,现有方法积极地对 f 进行下采样以减少令牌的数量(通过以大步幅 [11, 48] 对几帧进行时间采样,或者将每一帧在空间上子采样为单个令牌 [51, 59, 65])。即便如此,我们将随着视频时间的延长而达到内存限制,细粒度定位和描述所需的信息会丢失。因此,我们使用记忆机制逐帧处理所有标记,而不是激进的下采样,这确保了计算成本是有界的,而不考虑视频的长度。
设 K 是预定义的记忆大小,在每个时间点处的记忆Mt 总是是一个常数大小 K,即 Mt ∈ R^K×D , ∀t。我们将 M 解释为视频中所有相关信息的摘要,并通过从 f 中获取前 K 个标记来初始化它。因此,我们将 K 设置为 Nf 的倍数,使得初始记忆是第一个 K/Nf 帧的特征:MK/Nf = [f1, · · · , fK/Nf ]。
接下来,我们为每个传入帧ft在每个时间戳更新内存。我们的直觉是尽可能保留原始视频中的尽可能多的信息,同时不会增加存储预算(即通过保持恒定的内存大小 K)。因此,我们提出了一种类似 K-means 的聚类算法,使用特征聚类中心作为近似视频特征。为了避免聚类中心迅速偏向传入的特征,我们跟踪每个聚类中心合并的token的数量。我们将此用作动量权重,以便从更多token合并的聚类中心变化较慢。详细的算法图在 Alg 中提供。1,如图3所示。
K-means算法在数据点分配到聚类中心 δ 方面是不可微的(Alg.1 的第 6 行)。然而,我们的内存模块的输入和输出是更新的聚类中心 Mt,它是输入 X = [Mt−1, ft] 的线性映射,因为 Mt = AX,其中 A 是从 X 计算的权重矩阵。因此,即使我们无法计算 A 相对于 X 的梯度,我们可以计算 Mt 相对于输入 X 的梯度,从而计算输入视觉特征 f。因此,我们可以在神经网络的任何部分使用我们的内存模块,并学习前一层的参数。
3.3. Streaming outputs with decoding points
第3.2节中的记忆模块使我们能够有效地摄取长输入视频。然而,我们的模型的文本解码器在处理整个输入序列之前预测输出仍然是可取的:流输出大大降低了模型的延迟,因为我们不需要等待模型处理整个输入序列进行预测。这与处理特别相关,例如实时视频流。此外,流式传输输出实际上可以提高模型的准确性:由于我们有一个固定大小的内存 K,我们从中解码输出,我们将随着时间的推移不可避免地丢失信息。因此,我们可以通过在我们处理整个视频之前进行预测来避免这个问题。
Decoding points.如图4所示,我们将“解码点”、“di”定义为中间时间戳,在给定记忆中的特征Mdi的情况下解码事件描述。我们训练我们的模型,使得在每个解码点 di 处,模型预测在其之前完成的所有事件字幕。更具体地说,
由于解码点是顺序应用的,因此后面的解码点应该可以访问先前解码点的预测,并且不应该再次重复它们。因此,从第二个解码点开始,我们将前面解码点的输出作为文本解码器的前缀连接起来,如图4所示。此外,在训练期间,我们通过从前缀中随机删除一些先前的事件标题来执行进一步的数据增强,并将它们添加到目标中,以增加对早期预测中潜在错误的鲁棒性。因此,我们在训练期间将前缀和字幕目标表示为
在实践中,我们在训练和推理过程中统一采样解码点,间隔为S帧。由于该模型被训练为预测解码点之前的所有事件标题,这意味着在推理时间的确切位置不需要与事件边界紧密匹配。解码点的数量在训练和推理之间也可能是不同的,我们将会发现。这种方法既简单又可扩展,我们将在下一节中进行实验。