流式密集视频字幕

流式密集视频字幕

  • 摘要
  • 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.mzph.cn/news/801512.shtml

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

相关文章

C语言 | Leetcoce C语言题解之第18题四数之和

题目&#xff1a; 题解&#xff1a; int comp(const void* a, const void* b) {return *(int*)a - *(int*)b; }int** fourSum(int* nums, int numsSize, int target, int* returnSize, int** returnColumnSizes) {int** quadruplets malloc(sizeof(int*) * 1001);*returnSize…

企业版ChatGPT用户激增至60万;百度文心一言推出个性化声音定制功能

&#x1f989; AI新闻 &#x1f680; 企业版ChatGPT用户激增至60万 摘要&#xff1a;OpenAI首席运营官Brad Lightcap在接受采访时透露&#xff0c;企业版ChatGPT的注册用户已超60万&#xff0c;相较2024年1月的15万用户&#xff0c;短短三个月内增长了300%。这一版本自2023年…

C++11新特性(2) ——动态内存和智能指针从入门到入坑

动态内存与智能指针 动态内存的使用十分容易出现问题&#xff08;内存泄漏/非法内存&#xff09;&#xff0c;而智能指针能更安全、容易的使用动态内存&#xff0c;因为他负责自动释放所指向的对象&#xff0c;并且在出现异常时&#xff0c;也会自动释放。 两种智能指针&#…

《springcloud alibaba》 四 seata安装以及使用

目录 准备调整db配置准备创建数据库 seata配置nacos配置confi.txt下载向nacos推送配置的脚本 启动seata新建项目order-seata项目 订单项目数据库脚本pom.xmlapplication.yml启动类实体类dao类service类controller类feign类mapper类 stock-seata 库存项目数据库脚本pom.xmlappli…

STM32学习和实践笔记(5):时钟树

STM32一共有4个时钟源。外部时钟高低速各一个&#xff0c;内部时钟高低速各一个。 外部高速时钟是&#xff1a;4-16MHZ的HSE OSC。HS表示高速high speed. E表示外部的external。开发板该处安装的8M晶振。 外部低速时钟是&#xff1a;32.768KHz的LSI OSC。LS表示高速low speed…

为说阿拉伯语的国家进行游戏本地化

阿拉伯语是由超过4亿人使用的语言&#xff0c;并且是二十多个国家的官方语言。进入这些国家的市场并非易事——虽然他们共享一种通用语言&#xff0c;但每个国家都有自己独特的文化&#xff0c;有自己的禁忌和对审查的处理方式。这就是为什么视频游戏公司长期以来都远离阿拉伯语…

Qt QML的插件(Qt Quick 2 Extension Plugin)方法

Qt Quick的插件方法 序言环境前置注意概念——Qt Quick插件的相关知识插件里的qml文件模块名的相关知识模块名本身注意事项模块名版本注意事项 以示例来说明创建插件qmltypes的生成qmltypes的可能性失效 插件的编码注意1、插件模块版本控制2、pro里的注意 调用插件插件信息输入…

华为手机 鸿蒙系统 或者安卓系统的百度网盘下载的文件保存在手机什么位置如何查看

华为手机 鸿蒙系统 或者安卓系统的百度网盘下载的文件保存在手机什么位置如何查看 连接电脑后一般在这里位置 计算机\Mate 20 Pro (UD)\内部存储\Download\BaiduNetdisk 也就是用usb&#xff08;数据线&#xff0c;不是充电线&#xff0c;要四心的 )连接手机后&#xff0c;打…

计算机网络——40各个层次的安全性

各个层次的安全性 安全电子邮件 Alice需要发送机密的报文m给Bob Alice 产生随机的对称秘钥&#xff0c; K s K_s Ks​使用 K s K_s Ks​对报文进行加密&#xff08;为了效率&#xff09;对 K s K_s Ks​使用Bob的公钥进行加密发送 K s ( m ) K_s(m) Ks​(m)和 K B ( K S ) K…

uniapp如何配置后使用uni.chooseLocation等地图位置api

在uniapp中想要使用uni.getLocation、uni.chooseLocation ……api的时候我们需要在小程序就开启配置&#xff0c;不然无法使用。 第一步&#xff1a;首先找到manifest.json 第二步&#xff1a;点击源码视图 第三步&#xff1a;在 mp-weixin 加入下面代码 "permission&…

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

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

DXP学习002-PCB编辑器的环境参数及电路板参数相关设置

目录 一&#xff0c;dxp的pcb编辑器环境 1&#xff0c;创建新的PCB设计文档 2&#xff0c;PCB编辑器界面 1&#xff09;布线工具栏 2&#xff09;公用工具栏 3&#xff09;层标签栏 ​编辑 3&#xff0c;PCB设计面板 1&#xff09;打开pcb设计面板 4&#xff0c;PCB观…

【HTML】简单制作一个分形动画

目录 前言 开始 HTML部分 效果图 ​编辑​编辑​编辑​编辑总结 前言 无需多言&#xff0c;本文将详细介绍一段代码&#xff0c;具体内容如下&#xff1a; 开始 首先新建文件夹&#xff0c;创建一个文本文档&#xff0c;其中HTML的文件名改为[index.html]&a…

JavaEE初阶之单例模式详解

目录 题外话 正题 单例模式 概念 优点 缺点 饿汉式单例模式 代码及详解 懒汉式单例模式 代码及详解 小结 题外话 昨天爬山去了,回来吃了个烧烤有点累,昨天旷了一天,每周稳定发个五篇文章是没什么太大问题的 正题 单例模式 概念 是一种常见的软件设计模式,确保一个类…

nginx 配置访问地址和解决跨域问题(反向代理)

1、配置访问地址&#xff08;通过ip访问&#xff09; //配置ip访问地址 location ^~/auditApp{alias /usr/local/front-apps/cbd/auditApp;index index.html;if (!-e $request_filename) {rewrite ^/(.*) /auditApp/index.html last;break;}} 2、解决跨域问题&…

电商技术揭秘十四:大数据平台的选择与构建

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

如何使用Java和RabbitMQ实现延迟队列(方式二)?

前言 昨天写了一篇关于Java和RabbitMQ使用插件实现延迟队列功能的文章&#xff0c;今天来讲下另外一种方式&#xff0c;不需要RabbitMQ的插件。 前期准备&#xff0c;需要安装好docker、docker-compose的运行环境。 需要安装RabbitMQ的可以看下面这篇文章。 如何使用PHP和R…

AWS入门实践-在EC2上部署Wordpress网站

在AWS EC2上部署WordPress涉及到几个步骤&#xff0c;包括启动EC2实例、配置数据库、安装WordPress等。以下是详细的步骤和相应的命令脚本 第一步: 启动 EC2 实例 登录 AWS 控制台,进入 EC2 服务启动一个新的 EC2 实例,选择 Amazon Linux 2 AMI选择合适的实例类型(例如 t2.mi…

Java-接口-定义接口Filter及其实现类WordFilter

所谓&#xff1a;“纸上得来终觉浅&#xff0c;绝知此事要躬行。” 关于接口的知识&#xff0c;可以几分钟过一遍&#xff1a;Java-接口—知识&#xff08;基础&#xff09;-CSDN博客 现在就是练习time&#xff0c;先来看题&#xff1a; 定义一个接口 Filter&#xff0c;表示…

linux之shell命令

shell基础命令 浏览Linux 文件系统 Linux 系统目录结构 /bin&#xff1a; bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot&#xff1a; 这里存放的是启动 Linux 时使用的一些核心文件&#xff0c;包括一些连接文件以及镜像文件。 /dev &…