流式密集视频字幕

news2024/10/7 12:21:53

流式密集视频字幕

  • 摘要
  • 1 Introduction
  • Related Work
  • 3 Streaming Dense Video Captioning

Streaming Dense Video Captioning

摘要

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

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

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

其次,我们开发了一种流式解码算法,使我们的模型能够在处理完整个视频之前做出预测。 我们的模型实现了这种流式处理能力,并在三个密集视频字幕生成基准测试中显著提高了最先进水平: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所示的密集视频字幕生成的“流式”模型。我们的流式模型由于拥有记忆机制,不需要同时访问所有输入帧就能处理视频。此外,我们的模型可以在不处理整个输入序列的情况下因果性地产生输出,这得益于一种新的流式解码算法。像我们的这类流式模型本质上适合处理长视频——因为它们一次只摄取一帧。而且,由于输出是流式的,因此在处理完整视频之前就会产生中间预测。这一特性意味着流式模型理论上可以应用于处理实时视频流,正如视频会议、安全和持续监控等应用所需。

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

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

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

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

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

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])。相比之下,我们以流式方式处理视频,用一个记忆模块一次处理一个帧的长输入序列,并使用一种新颖的解码算法流输出句子。
长视频的模型。 处理较长视频的常见方式是使用记忆机制来提供过去事件的紧凑表示。使用变压器,记忆可以通过将过去观察的标记作为当前时间步的输入来实现[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

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

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

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

带时间戳的密集视频标题生成。 结合上述视觉编码器和文本解码器,为视频标题生成提供了一个基本架构。为了将其扩展为带有开始和结束时间戳的多个事件的标题生成,Vid2Seq[59]引入了两项主要修改:首先,它扩展了标题生成模型的词汇表 ,加入了时间令牌 和 ,分别代表开始和结束时间。因此,一个单独的事件表示为 ,且 ,其中 ∣ V ∣ ≤ w s < w e ≤ ∣ v ′ ∣ |V|\leq w^{s}<w^{e}\leq|v^{\prime}| Vws<wev ∣ t ∣ |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}}] c="[c1,c2,,c"ne],其中=“” n e n_{e} ne=“” 是事件的数量。因此,密集视频标题生成可以形式化为具有目标=“” c \mathbf{c} c=“” 的标准视频标题生成。<=“” p=“”>

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1578993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GEE:样本点的样式设置

作者:CSDN @ _养乐多_ 本文将介绍在Google Earth Engine (GEE)平台上为样本点设置样式的方法和代码,样本点可以设置成任何颜色,以及7种形状,以便更直观了解数据的分布和特征。 文章目录 一、统一设置样式1.1 示例代码1.2 示例代码链接二、每一类一个样式2.1 示例代码2.2…

React - 你使用过高阶组件吗

难度级别:初级及以上 提问概率:55% 高阶组件并不能单纯的说它是一个函数,或是一个组件,在React中,函数也可以做为一种组件。而高阶组件就是将一个组件做为入参,被传入一个函数或者组件中,经过一定的加工处理,最终再返回一个组件的组合…

【C语言】结构体、枚举、联合(自定义类型)

文章目录 前言一、结构体1.结构体的声明2.结构体的自引用3.结构体变量的定义和初始化4.结构体成员的访问5.结构体内存对齐&#xff08;重点&#xff09;6.#pragma修改默认对齐数7.结构体传参 二、位段1.位段的声明2.位段的内存分配3.位段的跨平台问题 三、枚举四、联合 &#x…

Vite+Vue3.0项目使用ant-design-vue <a-calendar>日期组件汉化

antd的弹框、日期等默认为英文&#xff0c;要把英文转为中文请看下文&#xff1a; 1.首先我们要在main.js中引入ant-design组件库并全局挂载&#xff1a; import App from ./App import Antd from ant-design-vue; import ant-design-vue/dist/antd.css;const app createApp(…

备考ICA----Istio实验18---单集群中部署多个Istio控制面

备考ICA----Istio实验18—单集群中部署多个Istio控制面 单个 Kubernetes 控制面以及多个 Istio 控制面和多个网格。通过 Kubernetes 命名空间和 RBAC 实现软多租户业务隔离。 1. 环境准备 1.1 创建2个命名空间 kubectl create ns usergroup-1 kubectl label ns usergroup-…

React - 你知道props和state之间深层次的区别吗

难度级别:初级及以上 提问概率:60% 如果把React组件看做一个函数的话,props更像是外部传入的参数,而state更像是函数内部定义的变量。那么他们还有哪些更深层次的区别呢,我们来看一下。 首先说props,他是组件外部传入的参数,我们知道…

如何使用vscode启动Flask并实现无公网IP远程访问内网服务

文章目录 1. 安装部署Flask2. 安装Cpolar内网穿透3. 配置Flask的web界面公网访问地址4. 公网远程访问Flask的web界面 本篇文章主要讲解如何在本地安装Flask&#xff0c;以及如何将其web界面发布到公网进行远程访问。 Flask是目前十分流行的web框架&#xff0c;采用Python编程语…

蓝桥杯真题Day48 倒计时7天 练了几道真题小程序+回溯剪枝应用一个小程序

[蓝桥杯 2023 省 A] 更小的数 题目描述 小蓝有一个长度均为 n 且仅由数字字符 0∼9 组成的字符串&#xff0c;下标从0到 n−1&#xff0c;你可以将其视作是一个具有n位的十进制数字num&#xff0c;小蓝可以从num 中选出一段连续的子串并将子串进行反转&#xff0c;最多反转一次…

2月智能手表线上电商市场(京东天猫淘宝)分析:华为手表成最大赢家!

近年来&#xff0c;各大厂商纷纷积极布局健康管理领域&#xff0c;智能手表成为可穿戴市场的热门产品。随着越来越多的厂商进入&#xff0c;智能手表的芯片技术、显示屏技术、传感器技术等都在不断进步&#xff0c;整体性能和功能得到显著提升&#xff0c;使得用户体验更加出色…

Leetcode 6. Z 字形变换

将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&#xff0c;排列如下&#xff1a; P A H N A P L S I I G Y I R 之后&#xff0c;你的输出需要从左往右逐行读取&#xff0…

2024年MathorCup+认证杯数模竞赛助攻规划+竞赛基本信息介绍

为了更好的帮助大家助攻未来几天的竞赛&#xff0c;除了给大家上次提供的2024年上半年数学建模竞赛一览表&#xff08;附赠12场竞赛的优秀论文格式要求&#xff09; 又为大家提供了本周末两场数模竞赛2023年的竞赛题目以及优秀论文&#xff0c;希望能对大家本周末的竞赛有所帮…

【深度学习】环境搭建ubuntu22.04

清华官网的conda源 https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ 安装torch conda install pytorch torchvision torchaudio pytorch-cuda12.1 -c pytorch -c nvidia 2.2.2 conda install 指引看这里&#xff1a; ref:https://docs.nvidia.com/cuda/cuda-installatio…

基于RKNN的YOLOv5安卓Demo

1.简介 基于RKNPU2 SDK 1.6.0版的安卓YOLOv5演示应用程序&#xff0c;选择图片进行对象检测并显示识别结果。 GitHub源码地址&#xff1a;https://github.com/shiyinghan/rknn-android-yolov5 2.实现过程 参考RKNN官方库RKNN Model Zoo提供的YOLOv5对象检测demo&#xff0c…

政安晨:【Keras机器学习实践要点】(二十二)—— 基于 TPU 的肺炎分类

目录 简述 介绍 / 布置 加载数据 可视化数据集 建立 CNN 纠正数据失衡 训练模型 拟合模型 可视化模型性能 ​编辑预测和评估结果 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客…

使用aspose相关包将excel转成pdf 并导出

SpringBoot 项目 基于aspose相关jar包 将excel 转换成pdf 导出 1、依赖的jar包 &#xff0c; jar获取链接 aspose相关三方jar &#xff0c;下载解压后,在项目路径下建一个libs包&#xff0c;然后将下图两个jar 拷贝至刚新建的libs目录中 2、pom.xml中加入maven引入 <depend…

MySQL——查询命令

Linux里开启MySQL服务 设置启动和开机启动 systemctl start mysqld systemctl enable mysqld 登录数据库 mysql -uroot -p 查看数据库 SHOW DATABASES; 切换数据库 use 数据库名&#xff1b; 查看数据表的详细结构 mysql> desc funtb; 查看数据表 show table…

使用 proxySQL 来代理 Mysql

我有若干台云主机&#xff0c; 但是只有1个台vm 具有外部ip 而在另1台vm上我安装了1个mysql instance, 正常来讲&#xff0c; 我在家里的电脑是无法连接上这个mysql 尝试过用nginx 代理&#xff0c; 但是nginx只能代理http协议的&#xff0c; mysql 3306 并不是http协议 解决…

uni-app(H5)论坛 | 社区 表情选择 UI组件

项目源码请移步&#xff1a;bbs 效果 实现思路 表情切换 人物、动物、小黄人不同表情之间的切换实际就是组件的切换 emoji表情 emoji表情本身就是一种字符 如需其他emoji表情可参考 EmojiAll中文官方网站 需要注意的就是数据库的存储格式需要支持emoji表情&#xff0c;我项…

Paper Digest | GPT-RE:基于大语言模型针对关系抽取的上下文学习

持续分享 SPG 及 SPG LLM 双驱架构应用相关进展 1、动机 在很多自然语言处理任务中&#xff0c;上下文学习的性能已经媲美甚至超过了全资源微调的方法。但是&#xff0c;其在关系抽取任务上的性能却不尽如人意。以 GPT-3 为例&#xff0c;一些基于 GPT-3 的上下文学习抽取方…

RuleEngine规则引擎底层改造AviatorScript 之函数执行

https://gitee.com/aizuda/rule-engine-open 需求&#xff1a;使用上述开源框架进行改造&#xff0c;底层更换成AviatorScript &#xff0c;函数实现改造。 原本实现方式 Overridepublic Object run(ExecuteFunctionRequest executeTestRequest) {Integer functionId executeT…