电子商务网站后台需求,四川省城乡和住房建设厅官方网站,网页设计实训目的,百度首页的ip地址一、概述
多模态学习的最新进展促进了对视频理解和生成模型的研究。随之而来的是#xff0c;对高分辨率视频和详细说明所建立的高质量数据集的需求激增。然而#xff0c;由于时间因素的影响#xff0c;视频与文本的配对不像图像那样容易。准备视频和文本配对是一项困难得多…一、概述
多模态学习的最新进展促进了对视频理解和生成模型的研究。随之而来的是对高分辨率视频和详细说明所建立的高质量数据集的需求激增。然而由于时间因素的影响视频与文本的配对不像图像那样容易。准备视频和文本配对是一项困难得多的任务。例如旅游视频博客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 python3.8 -y
conda activate vript
pip install -r requirements.txt
python -m spacy download en_core_web_lg5.2 测试调用
title video_info[title]
if title:title_instruction ffrom 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: fVoice-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, keylambda 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: fdata: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 擅长为短视频和长视频生成密集字幕其性能在开源模型中名列前茅。
这项研究提出了一种加深视频与文本之间对应关系的新方法不仅提高了视频字幕模型的性能还为评估模型的理解能力提供了新的基准。它有望为未来的研究和实际应用做出贡献。