Vript-Hard——一个基于高分辨率和详细字幕的视频理解算法

一、概述

多模态学习的最新进展促进了对视频理解和生成模型的研究。随之而来的是,对高分辨率视频和详细说明所建立的高质量数据集的需求激增。然而,由于时间因素的影响,视频与文本的配对不像图像那样容易。准备视频和文本配对是一项困难得多的任务。例如,旅游视频博客(vlog)包括许多旅行准备、住宿和参观旅游景点的场景。为这些视频提供详细而恰当的字幕需要花费大量的时间和精力,因为必须查看视频并根据场景为其添加字幕。因此,目前的情况是,大多数基于视频-文本对建立的传统数据集都是包含简化字幕的短视频。

为了克服这一挑战,本文建立了一个视频-文本数据集Vript,该数据集适用于较长的视频,并且比以前建立的数据集具有更详细的说明。Vript 的注释基于视频脚本的格式,对于每个场景,不仅关注内容,还关注镜头类型和摄像机运动。与传统的数据集不同,本文对未经修剪的视频进行了详细注释,每个场景都有大约 145 个字的长标题。除了视觉信息外,旁白还被转录为文本,并辅以视频标题作为背景信息,从而提高了字幕的信息含量和准确性。

现有研究表明,详细的标题有助于改善视觉和语言关联/映射。然而,如上所述,大多数数据集只包含简短的字幕,并没有密集而详细的注释。因此,本文采用了三种新方法来改进视频与文本之间的关联/映射

  • 使用视频脚本
    • 通过对多个连续场景进行采样,并将相应的字幕串联起来以生成更长的文本,从而制作出更长的视频。
  • 旁白转录
    • 结合旁白转录和视频输入。
  • 视频时间戳。共轭作用
    • 输入旁白和视频时间戳作为附加信息。

在这些方法的基础上,本文还建立了一个名为 "Vriptor "的视频字幕模型,它可以为短视频和长视频生成密集而详细的字幕,在开源模型中达到了 SOTA 性能。

它还提出了一个视频理解基准Vript-Hard,其中包括三个任务(幻觉评估、长视频推理和事件重排),比传统基准更具挑战性。
源码地址:https://github.com/mutonix/Vript.git
论文地址:https://arxiv.org/abs/2406.06040

二、视频字幕详细说明

在构建 Vript 的过程中,本文的目标是尽可能详细地注释视频,以便通过字幕将视频可视化。视频中的每个场景都有字幕描述,重点不是粗略的字幕,而是详细的动作和交互。这里可以描述各种信息,包括物体和人物的外观、环境、光线和视频风格。

它还关注摄像机是如何移动来捕捉图像的。以往的研究将图像字幕用于视频字幕,而没有利用视频特有的摄像机移动信息。例如,对于一个男人骑自行车的视频片段,仅仅解释 "一个穿深蓝色衬衫的男人骑着一辆黑色自行车在路上行驶 "和 "当镜头转到特写镜头时,一个穿深蓝色衬衫的男人骑着一辆黑色自行车 "是不够的。更具体的描述会更有用,例如 “当镜头拉远时,我们看到的是该男子在公路上的概貌,背景是群山”。这样,有关摄像机行为的信息就被添加到了内容中,从而提高了视频字幕的质量。

可以说,将静态情况与摄像机行为信息结合起来,近似于在视频脚本中描述一个场景。因此,Vript 使用 PySceneDetect 根据视频脚本的格式将视频划分为多个场景,并为每个场景标注有关静态情况和摄像机行为的说明。我们称之为 “视频脚本”。然后,本文从 HD-VILA-100M 中选择了10,000 个完整的 YouTube视频,并从 YouTube Shorts 和 TikTok 中选择了1,500 个短视频作为视频数据。GPT-4V 还用于为每个场景注释以下信息。

  • 标题:场景摘要(最多 10 个字)
  • 内容:约 150 字的详细描述。
  • 拍摄类型:全景、特写等。
  • 摄像机移动:摇镜头、变焦等。

为了给视频添加高质量的脚本,未经剪辑的视频(长度从 5 秒到 2.9 小时不等)从头到尾都有密集的注释。除视频帧外,还添加了外部信息以帮助注释:使用 Whisper 转录的旁白和视频标题将原始视频内容输入模型。这些外部信息大大减少了错觉,提高了字幕的准确性,使模型能够更好地理解视频内容和视觉信息。

例如,如下图所示,仅凭场景-010 画面无法猜测碗中加入了哪些配料。旁白中的信息显示配料是蛋黄酱和芥末,从而提高了右上角面板中字幕的准确性。

三、Vriptor算法实现

一般来说,在将图像映射到文本时,一个标题映射到一个视频。然而,现有的视频-文本数据集(如 Panda-70M、WebVid-10M)只有简单的标题,缺乏详细信息,这意味着图像-文本关系/映射不够充分。为了解决这个问题,本文研究了如何利用 Vript 数据集将视频映射为更多文本。其结果是建立了一个名为 Vriptor 的强大视频字幕模型,该模型在大型开源视频语言模型中达到了 SOTA 性能。

如果要对视频进行详细注释,有几种可能的方法来增加支持的文本量,其中之一就是将几个连续片段的字幕连接起来。然而,使用这种方法,由于字幕是单独注释的,因此连接字幕的上下文和含义可能不一致。因此,我们参照视频脚本的格式,将连续字幕重构为视频脚本中的场景。Vript 允许通过对若干连续片段进行采样来创建 “子脚本”。例如,十个连续的片段及其相应的 "字幕 "包含约 1,500 个单词,比较短的字幕长约 100 倍 。

由于 Vript 是通过输入旁白和视频帧来进行注释的,因此字幕包含旁白中的信息。

处理视频的常见大规模语言模型采用特定的采样技术来提取视频输入的多个帧,但这些模型对时间的感知能力较弱,只知道帧的顺序,而不知道帧的持续时间。因此,本文认为时间戳对于视频脚本支持非常重要,并在输入旁白和输出字幕中添加了视频时间戳。这使得模型更容易理解每个场景的开始和结束。

这些方法被整合到 Vriptor 的学习中。下图(复制如下)显示了四种不同的输入和输出组合:一个场景到一个字幕、一个场景+旁白到一个字幕、多个场景到一个脚本以及多个场景+旁白到一个脚本。所有组合都添加了时间戳。

我们还在 ST-LLM 的基础上对 Vriptor 进行了两个阶段的训练,并使用 Vript-HAL 和 MSR-VTT 对其字幕能力进行了评估。Vriptor 支持两种字幕类型:"描述整个视频 "和 “描述整个场景”。在描述整个视频时,Vriptor 会提供 100-150 字的一般描述。当逐个场景描述时,Vriptor 会为每个场景提供 100-150 字的详细描述。下表显示,与整个视频描述相比,Vriptor 在逐场景描述中提供了更详细的视频描述,从而提高了召回率。

下图显示了 Vriptor 为长视频加上长文字说明的能力。

下表最后两行(转载于下)显示,添加旁白后,模型可以提供更详细、更准确的描述。此外,字幕中专有名词的比例也增加了 14%。这表明,模型不仅能够通过分析物体的外观,还能通过分析旁白来推断物体的名称。

为了进一步检验时间戳的效果,我们训练了另一个没有附加时间戳的模型,并对这两个模型进行了比较。结果表明,整体视频描述能力略有提高,但逐个场景的描述能力显著提高。添加了时间戳的模型不太可能生成与之前场景重复的描述,因为它能理解每个场景的开始和结束,并能识别哪个场景对应哪个时间段。添加了时间戳的模型在 Vript-HAL 的召回率也高出 12%,这意味着没有添加时间戳的模型更容易忘记解释视频的某些部分。

四、Vript-Hard

随着多模态模型性能的提高,需要更复杂的基准来评估它们的能力。因此,本文提出了一个名为 "Vript-Hard "的新视频理解基准。该基准由三个具有挑战性的任务组成(HAL(幻觉评估)、RR(检索然后推理)和ERO(事件重新排序))。

它还评估了处理图像(如 BLIP2、InstructBLIP、Qwen-VL 和 LLaVA 1.6 34B)和视频(如 VideoChatGPT、VideoLLaMA、VideoChat、VideoChat2 和 ST-LLM)的大规模语言模型。我们正在开展工作。我们还对 Claude 3-Sonnet、Opus 和 GPT-4V 等闭源模型进行了评估。

4.1 Vript-HAL:评估基准

以前的研究已经调查了在处理图像的大规模语言模型中检测和评估幻觉的方法,而处理视频的大规模语言模型也报告了类似的幻觉问题。例如,处理视频的大规模语言模型在被要求描述视频时,可能会曲解对象和行为,并产生包含幻觉的描述。现有的字幕基准(如 MSR-VTT 和 MSVD)不足以评估幻觉,因为它们只有 10 个字或更少的简短字幕,而且缺乏细节。

为了应对这一挑战,我们正在建立一个名为 V "ript-HAL 的基准,该基准为每个 Vript-HAL 视频标注了约 250 个单词的字幕,比 MSR-VTT 长 25 倍。基于这种详细的地面实况字幕,我们可以了解处理视频的大规模语言模型是否会在字幕中产生幻觉。

传统的评估指标(如 BLEU、ROUGE、CIDEr)通过测量预测文本与地面实况文本之间的词语相似度来评估准确度,但不适合评估对象和动作是否被正确描述。因此,本文使用准确度分数来评估字幕中的名词(对象)和动词(动作)是否被正确描述。

由于不同模型的标题长度和细节各不相同,因此还引入了 "回忆 "功能,以衡量 "地面实况 "中物体和行为的描述程度。F1 分数也被计算为幻觉评估的总分。

具体来说,准确率是根据准确描述的对象和动作的数量计算的,召回率则用于评估根据基本事实描述的准确程度。在评估过程中,SpaCy 用于提取名词和动词,而句子转换器则用于创建词嵌入。如果预测结果与地面实况之间的余弦相似度高于一定水平,则认为描述正确。

Vript-HAL评估了处理许多图像的大型语言模型和处理视频的大型语言模型。下图显示,一些模型(如 BLIP2 和 VideoChat2)由于生成的字幕较短,细节较少,因此幻觉较少;Vriptor-W(整个视频)提供了一般描述,而 Vriptor-S(逐个场景)则描述了视频的许多细节、显示出较高的召回率。这两种模型在视频字幕方面的性能与 GPT-4V 不相上下。

4.2 Vript-RR:理解长视频的基准

对一段长视频的细节进行提问可能会产生歧义,例如,在不同的时间戳有多个符合问题的答案,或者答案会随着时间的推移而发生变化。这种模糊性是长视频理解基准(如 EgoShecma)中的常见问题。因此,本文提出了一种名为 Vript-RRR(先检索后推理)的新基准来解决这一问题。

基准首先会为模型提供一个提示,让其在视频中找到与问题相关的场景。该提示是对相关场景的详细描述。然后根据这些场景提出问题,从而消除歧义。在实际操作中,如下图所示,提示和问题与整个视频一起输入,然后模型直接输出答案。这个过程是端到端的。

Vript-RR 对每个问题都精心设计了至少一个推理步骤或额外处理(如文本阅读、详细检查),以评估大型语言模型处理视频的不同能力。问题的设计方式如下。

Vript-RR 包括两个基于视频输入的子任务:一个是针对整个视频的子任务,另一个是直接针对相关场景的子任务。 Vript-RR 同时提供选择格式和开放式问题。对于开放式输出,GPT-4 turbo 被用作判断标准,通过比较预测结果和地面实况来评估答案是否正确。

如下表所示,"场景 "一栏表示使用相关场景作为输入的结果,这是一项较为简单的任务, 因为它不需要模型搜索整个视频来查找相关场景。整段 "栏使用整段视频作为输入,要求模型使用提示来查找相关场景,这就要求模型具有理解整段视频的能力。

对于每个 Vript-RR视频,我们都设计了一些问题,分别取自视频中 15%、40%、60% 和 85% 的场景。这样我们就可以研究场景在视频中的时间位置是否会影响 Vript-RR 的结果。该模型需要通过视觉标记而不是文本标记找到 “针”(相关场景)。在这项任务中,我们观察到当 "针 "位于长上下文的 15% 到 85% 之间时,模型的性能会明显下降,尤其是当文本长度至少超过 16K 标记时。如下图所示,当场景位于视觉标记中间(视频的 40% 和 60%)时,虽然视觉标记的数量远小于 16K 个,但大多数模型的性能都有所下降。

4.3 Vript-ERO:长视频时间理解基准

有些基准测试模型的时间理解能力。然而,这些基准测试主要集中在短片中动作的时间排序问题上,很少有人探索长视频中事件的时间理解问题。为了填补这一空白,本文提出了 Vript-ERO(事件重新排序)任务。在这项任务中,从一段长视频(2 分钟至 2 小时不等)中抽取三个具有不同时间戳的不同场景(平均 10 秒),并对它们的时间顺序进行调整。如下图所示,根据对特征视频和三个洗牌场景的详细描述,模型需要在理解整个视频的基础上回答场景的正确时间顺序。

在下表中(转载于后),"-"表示这些模型无法提供答案。与之前的任务不同,Vript-ERO 还包括对场景的长篇描述,这表明模型在处理长篇指令方面能力较弱。即使是得分较高的模型,也只有大约 20% 的问题可以按照所有三个场景的正确顺序来回答。

下图收集了答错的问题答案,并分析了原因。据观察,模型很容易被所提供的描述误解:在 31.4%的情况下,这是由于输入帧中缺少某些事件,因为 GPT-4V 等模型的输入图像数量有限。此外,在 25.1%的情况下,模型无法识别哪些场景应根据描述进行排序。

五、源码配置

5.1 环境安装

git clone https://github.com/mutonix/Vript.git
conda create -n vript python=3.8 -y
conda activate vript
pip install -r requirements.txt
python -m spacy download en_core_web_lg

5.2 测试调用

title = video_info["title"]
if title:title_instruction = f'from a video titled "{title}" '
else:title_instruction = ""for scene in scene_dir:content = []voiceover_instruction = ""if scene in voiceovers_dict and 'short' not in args.video_dir:voiceover = voiceovers_dict[scene]if voiceover['full_text'].strip():voiceover_text = voiceover['full_text'].strip() content.append({"type": "text", "text": f"Voice-over: {voiceover_text}\nVideo frames:"})voiceover_instruction = "voice-over and "else:voiceover_text = ""else:voiceover_text = ""scene_imgs = os.listdir(os.path.join(args.video_dir, vdir, scene))scene_imgs = [i for i in scene_imgs if i.endswith(".jpg")]scene_imgs = sorted(scene_imgs, key=lambda x: int(x.split('.')[0].split('_')[-1]))encoded_scene_imgs = []for scene_img in scene_imgs:encoded_scene_img = encode_image(os.path.join(args.video_dir, vdir, scene, scene_img))encoded_scene_imgs.append(encoded_scene_img)content.append({"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{encoded_scene_img}", "detail": "low"}})content.append({"type": "text", "text": f"""
Based on the {voiceover_instruction}successive frames {title_instruction}above, please describe:
1) the shot type (15 words)
2) the camera movement (15 words)
3) what is happening as detailed as possible (e.g. plots, characters' actions, environment, light, all objects, what they look like, colors, etc.) (150 words)   
4) Summarize the content to title the scene (10 words)
Directly return in the json format like this:
{{"shot_type": "...", "camera_movement": "...", "content": "...", "scene_title": "..."}}. Do not describe the frames individually but the whole clip.
"""})messages=[{"role": "system","content": "You are an excellent video director that can help me analyze the given video clip."},{"role": "user","content": content}]

五.总结

近年来,多模态学习的进步使人们越来越关注理解和生成视频的模型。这导致了对具有高分辨率视频和详细说明的高质量视频文本数据集的需求激增。然而,由于视频中增加了时间成分,因此获取和注释视频-文本对要比获取和注释图像-文本对更加困难。例如,旅游视频博客包含许多事件,每个事件由不同的场景组成,如准备旅行或参观目的地。视频字幕需要花费大量的时间和精力来查看整个视频并标注细节。因此,传统的视频文本数据集通常只包含简短粗糙的描述。

为了克服这些挑战,本文提出了一个高质量的视频文本数据集 “Vript”,其中包含密集而详细的字幕。在此基础上,我们还建立了一个视频字幕模型 Vriptor 和一个具有挑战性的基准Vript-Hard,前者是性能最好的开源模型,后者用于评估处理视频的大规模语言模型的幻觉和长视频理解能力。Vriptor 擅长为短视频和长视频生成密集字幕,其性能在开源模型中名列前茅。

这项研究提出了一种加深视频与文本之间对应关系的新方法,不仅提高了视频字幕模型的性能,还为评估模型的理解能力提供了新的基准。它有望为未来的研究和实际应用做出贡献。

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

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

相关文章

如何调整 Nginx工作进程数以提升性能

🏡作者主页:点击! Nginx-从零开始的服务器之旅专栏:点击! 🐧Linux高级管理防护和群集专栏:点击! ⏰️创作时间:2025年2月15日14点20分 Nginx 的工作进程数&#xff0…

SolidWorks速成教程P3-6【零件 | 第六节】——草图封闭轮廓所选轮廓厚度为零的报错

到这里,我们已经将特征成型的常用功能学完。这节我来继续讲解一下 SolidWorks中建模的一些容易忽略的问题(草图封闭轮廓&所选轮廓&厚度为零的报错)。 目录 1.草图封闭轮廓 2.所选轮廓 3.厚度为零的报错 1.草图封闭轮廓 我们在拉伸凸台时,一般都会绘制封闭的草…

关于post和get的请求参数问题

今天在和泓宇交流的时候,谈到了关于postman测试接口的问题。我昨天在postman测试的时候,对于条件查询不知道怎么测试,脑子里很混乱。今天,泓宇借着条件查询这个机会给我讲了讲get和post的请求参数的知识,趁着现在有记忆…

UE5中的四元数

UE5中的四元数 绕任意轴旋转四元数与矩阵四元数与欧拉角将一个向量旋转到另一个向量插值Reference 我们知道,四元数是除了欧拉角,旋转矩阵之外,主要用来描述旋转的量。四元数直观的定义就是 q [ c o s ( θ 2 ) , s i n ( θ 2 ) N ] q [c…

AUTOSAR MCAL层ETH模块(1)——通信原理

基础了解 ETH,以太网,简单来讲就是将几台设备连接起来形成网络。这种连接是点到点之间的。以太网的传输速率为10M~10G,速度非常快。 为了实现网络通信的标准化,普及网络应用,国际标准化组织(ISO)将整个以太网通信结构制…

什么是网关?网关有什么作用?API网关的主要功能,SpringCloud可以选择有哪些API网关?什么是限流算法?网关如何实现限流?一篇文章读懂网关的前世今生

1、什么是网关? API网关(API Gateway)是一种中间层服务器,用于集中管理,保护和路由对后端服务的访问。它充当了客户端与后端服务之间的入口点,提供了一组统一的接口管理和控制API的访问。 2、网关示意图 3…

【技术产品】DS三剑客:DeepSeek、DataSophon、DolphineSchduler浅析

引言 在大数据与云原生技术快速发展的时代,开源技术成为推动行业进步的重要力量。本文将深入探讨三个备受瞩目的开源产品组件:DeepSeek、DataSophon 和 DolphinScheduler,分别从产品定义、功能、技术架构、应用场景、优劣势及社区活跃度等方面…

架构——Nginx功能、职责、原理、配置示例、应用场景

以下是关于 Nginx 的功能、职责、原理、配置示例、应用场景及其高性能原因的详细说明: 一、Nginx 的核心功能 1. 静态资源服务 功能:直接返回静态文件(如 HTML、CSS、JS、图片、视频等)。配置示例:server {listen 80…

spring 学习 (注解)

目录 前言 常用的注解 须知 1 Conponent注解 demo(案例) 2 ControllerServiceRepository demo(案例) 3 ScopeLazyPostConstructPreDestroy demo(案例) 4 ValueAutowiredQualifierResource demo(案例) 5 Co…

机器学习 - 机器学习模型的评价指标

为了衡量一个机器学习模型的好坏,需要给定一个测试集,用模型对测试集 中的每一个样本进行预测,并根据预测结果计算评价分数。本文,我们来了解一下机器学习模型常用的评价指标。 一、分类问题常用到的混淆矩阵 在分类任务中&…

openAI最新o1模型 推理能力上表现出色 准确性方面提升 API如何接入?

OpenAI o1模型在回答问题前会进行深入思考,并生成一条内部推理链,使其在尝试解决问题时可以识别并纠正错误,将复杂的步骤分解为更简单的部分,并在当前方法无效时尝试不同的途径。据悉,o1不仅数学水平与美国奥林匹克竞赛…

基于ArduPilot开发无人机飞控自动驾驶仪

目录 1、项目参数 2、硬件设计解析 2.1、主控与协处理器架构 2.2、高精度传感器集成 2.3、数据存储与恢复 2.4、电源管理与保护 2.5、通信与接口 本项目基于开源飞行控制固件 ArduPilot 开发,设计并实现了一款高度集成的 自动驾驶仪,可广泛应用于…

传输层协议TCP ( 下 )

文章目录 前言序号与确认序号超时重传RTOJacobson算法内核中超时时间的计算 滑动窗口滑动窗口延迟应答流量控制 拥塞控制慢启动拥塞避免快重传快速恢复 保活机制参考资料 前言 TCP(Transmission Control Protocol,传输控制协议)是互联网最重要…

vscode使用常见问题处理合集

目录 一、使用vite创建的vue3项目,script和style首行代码不会缩进,且格式化属性字段等会换行问题 首行缩进情况如下: 属性、参数格式化换行情况如下: 解决方式: 一、使用vite创建的vue3项目,script和style首行代码不…

【C语言】程序环境与预处理

目录 程序的翻译环境和执行环境 粗谈编译链接 翻译环境 编译的几个阶段及链接 运行环境 预处理详解 预定义符号 #define #define 定义标识符 #define 定义宏 #define 替换规则 #和## 带副作用的宏参数 宏和函数的对比 命名约定 #undef 命令行定义 条件编译 …

类与对象C++详解(中)-----构造函数与析构函数

1.构造函数 构造函数是一个特殊的成员函数,函数名和类名相同,构造函数的作用是初始化,以下是构造函数的一些特点: 1. 函数名与类名相同。 2. ⽆返回值。(返回值啥都不需要给,也不需要写void,不要纠结&#…

计算机网络(1)基础篇

目录 1.TCP/IP 网络模型 2.键入网址--->网页显示 2.1 生成HTTP数据包 2.2 DNS服务器进行域名与IP转换 2.3 建立TCP连接 2.4 生成IP头部和MAC头部 2.5 网卡、交换机、路由器 3 Linux系统收发网络包 1.TCP/IP 网络模型 首先,为什么要有 TCP/IP 网络模型&a…

【JavaEE进阶】验证码案例

目 🌲实现说明 🎄Hutool介绍 🌳准备工作 🌴约定前后端交互接口 🚩接口定义 🚩实现服务器后端代码 🚩前端代码 🚩整体测试 🌲实现说明 随着安全性的要求越来越⾼…

硬件学习笔记--42 电磁兼容试验-6 传导差模电流干扰试验介绍

目录 电磁兼容试验-传导差模电流试验 1.试验目的 2.试验方法 3.判定依据及意义 电磁兼容试验-传导差模电流干扰试验 驻留时间是在规定频率下影响量施加的持续时间。被试设备(EUT)在经受扫频频带的电磁影响量或电磁干扰的情况下,在每个步进…

机器学习·最近邻方法(k-NN)

前言 上一篇简单介绍了决策树,而本篇讲解与决策树相近的 最近邻方法k-NN。 机器学习决策树-CSDN博客 一、算法原理对比 特性决策树最近邻方法(k-NN)核心思想通过特征分割构建树结构,递归划分数据基于距离度量,用最近…