LongVLM:让大模型解读长视频 SOTA 的方法

LongVLM:让大模型解读长视频 SOTA 的方法

    • 使用LongVLM处理长视频的步骤
    • LongVLM 方法
      • 3.1 总体架构
      • 3.2 局部特征聚合
      • 3.3 全局语义整合
    • 效果
      • 4.1 实验设置
      • 4.2 主要结果
      • 4.3 消融研究
      • 4.4 定性结果

 


论文:https://arxiv.org/pdf/2404.03384.pdf

代码:https://github.com/ziplab/LongVLM

 

LongVLM是一种高效的长视频理解方法,它通过大型语言模型(LLMs)来增强对长视频的理解。

针对现有VideoLLM在处理长视频时因无法精细理解而面临的挑战,LongVLM采用了一种简单有效的方法,提出了以下解决方案:

具体问题与解法

  • 问题1: 处理长视频需要模型能够处理大量的视觉令牌,导致计算成本高昂。

    • 解法: 通过预先压缩视觉令牌和利用池化操作或查询聚合来提取视频表示,减少了需要处理的视觉令牌数量。
  • 问题2: 现有模型无法精确识别长视频中的细节信息,如特定颜色或正在修理的具体部件。

    • 解法: LongVLM通过将长视频分解为多个短期片段,并针对每个片段提取局部特征,以维持故事线的连续性和时间结构。

解法拆解

  • 子解法1:均匀采样视频帧和特征提取 使用预训练的视觉编码器(如CLIP-ViT-L/14)提取每帧的视觉特征,包括[CLS]令牌和最后第二层的补丁特征。

    • 之所以使用均匀采样和特征提取,是因为这可以有效地从长视频中捕获关键视觉信息,同时降低处理长视频的复杂性。
  • 子解法2:局部特征聚合和时间序列维护 通过令牌合并模块将每个短期片段内的补丁特征聚合成一组紧凑的令牌,以获得每个片段的局部特征,并将这些特征按时间顺序连接。

    • 之所以采用局部特征聚合和时间序列维护,是因为它们有助于保留长视频中各个短期片段的时间结构,从而实现对视频内容更细致的理解。
  • 子解法3:全局语义信息整合 将来自视频帧的[CLS]令牌平均化以代表整个视频的全局语义信息,并将这些全局信息与每个短期片段的特征结合,然后输入到LLM中。

    • 之所以整合全局语义信息,是因为它可以丰富对每个短期片段的上下文理解,增强模型对长视频内容的整体把握能力。

主要贡献

  1. 提出了LongVLM:一种针对长视频内容进行精细级别理解的简单而有效的VideoLLM,同时保持计算成本在可接受范围内。
  2. 短期片段分解和特征提取:通过将长视频分解为短期片段并提取每个片段的局部特征,LongVLM能够保持这些片段的时间顺序,通过层次化的令牌合并模块聚合视觉令牌,同时将全局语义信息整合到每个片段中,以增强对上下文的理解。
  3. 在实验中取得显著进展:在VideoChatGPT基准测试和零样本视频问答数据集上的实验结果显示,LongVLM在细粒度水平上为长视频生成的响应比先前的最先进方法更为精确和准确。

LongVLM的提出有效地解决了长视频理解的挑战,其结合局部和全局信息的策略为视频内容理解领域提供了新的视角和方法。

 

例子背景:假设我们有一个5分钟长的视频,记录了一个手工艺人在工作坊中从头到尾制作一个木制桌子的过程。

这个视频涵盖了多个关键活动,包括选择木材、切割、打磨和组装等。

使用LongVLM处理长视频的步骤

  1. 均匀采样和特征提取

    • LongVLM首先均匀地从整个视频中采样视频帧。例如,它可能从这5分钟视频中每隔10秒提取一个帧,然后使用预训练的视觉编码器(如CLIP-ViT-L/14)来提取每帧的视觉特征。
    • 这样做能够捕获从选择木材到最终组装各个阶段的关键视觉信息,同时避免处理整个视频中的每一帧,从而降低复杂性和计算成本。
  2. 局部特征聚合和时间序列维护

    • 接下来,LongVLM将视频划分为若干短期片段,每个片段可能代表一个关键活动,如切割木材或打磨边缘。通过令牌合并模块,模型聚合每个短期片段内的补丁特征,生成每个活动的紧凑表示。
    • 通过按照这些活动发生的时间顺序连接这些表示,LongVLM能够保持视频故事的连贯性,使得最终的视频理解能够反映出手工艺人工作的实际流程。
  3. 全局语义信息整合

    • 同时,模型计算整个视频范围内[CLS]令牌的平均值,代表整个视频的全局语义信息。然后,将这些全局信息与每个短期片段的特征结合,确保在理解每个具体活动时也考虑到整个视频的上下文。
    • 例如,在解释打磨过程的具体细节时,模型也能考虑到这一步骤在整个桌子制作流程中的位置和重要性。

LongVLM 方法

LongVLM的方法,包括其总体架构、局部特征聚合过程和全局语义信息整合方式。

通过细化各个组成部分的作用和逻辑,我们可以更清晰地理解LongVLM如何实现对长视频的细粒度理解。

3.1 总体架构

图展示了所提出的LongVLM(长视频理解的大型语言模型)的总体架构。

从图中可以看出,LongVLM的流程包括以下几个主要步骤:

  1. 均匀采样视频帧:首先从视频中均匀采样T帧。

  2. 视觉编码器:对采样出的每帧视频独立地使用视觉编码器提取帧级特征。

  3. 视频划分:将输入视频划分成S个片段,每个片段包含K帧。

  4. 局部特征的聚合:在每个片段内应用层次化的令牌合并模块来获取紧凑的局部特征。

  5. 序列连接:将片段级特征顺序连接起来,显式地保留了长视频中多个短期片段的时间顺序。

  6. 全局语义特征的整合:收集[CLS]令牌并通过平均池化来聚合全局语义特征。

  7. 特征融合:将全局特征与局部特征序列连接起来形成视频表示。

  8. 投影层:投影层将视频表示转换为适合LLM处理的格式。

  9. 大型语言模型(LLM):最终,将投影后的视觉特征与标记化的系统指令和用户查询结合,并输入到LLM以生成响应。

此图还显示了模型中不同组件的参数更新状态,标识为冰雪晶体的部分表示参数在此过程中是冻结的,而火焰图标的部分表示参数在训练过程中会更新。

这表明LongVLM在不同阶段利用了不同的训练策略。

此外,通过图示的步骤性描述,我们可以了解到该模型如何从输入视频中提取关键信息,并最终生成对用户查询的响应。

  • 子解法1:视觉编码器 用于独立地提取每个视频帧的帧级特征,包括补丁特征和[CLS]令牌。

    • 之所以使用视觉编码器,是因为它能够从视频帧中提取丰富的视觉信息,为后续的特征聚合和语义理解提供基础。
  • 子解法2:局部特征序列的创建 将长视频分解为短期片段,对每个片段应用令牌合并模块,生成紧凑的片段级特征,这些特征按顺序连接,显式保留短期片段在长视频中的时间顺序。

    • 之所以这样做,是为了捕获视频中的局部信息,并保持短期事件或动作的时间结构,有助于理解视频的序列性质。
  • 子解法3:全局语义特征的整合 通过汇集和平均每个帧的[CLS]令牌,形成代表整个视频全局语义的特征,与局部特征序列一起输入到LLM。

    • 之所以整合全局语义信息,是为了丰富局部特征序列的上下文信息,帮助模型在整个视频范围内生成合理的响应。

3.2 局部特征聚合

  • 子解法1:分段和令牌合并 对每个短期片段应用层次化的令牌合并模块,通过软匹配方法逐步合并视觉令牌,以减少视觉令牌的数量并生成紧凑的局部特征。
    • 之所以采用层次化的令牌合并,是因为视频具有高度的时空冗余,直接考虑所有补丁特征会导致冗余的计算成本。

3.3 全局语义整合

  • 子解法1:全局特征的提取和整合 通过从每个帧的编码器层收集[CLS]令牌,并在时间维度上进行平均,生成代表整个视频的全局语义特征。
    • 之所以重视全局语义特征,是因为它为模型提供了视频的整体上下文信息,有助于理解不同片段之间的关系,从而在整个视频上生成合理的响应。

LongVLM通过将长视频分解为多个短期片段并聚合每个片段的局部空间-时间特征,同时通过整合全局语义信息,提出了一种既能捕获细粒度局部信息又能保留视频整体上下文的方法。

这种结合局部和全局信息的策略,使得LongVLM能够实现对长视频内容的精细理解和响应生成,克服了现有方法在处理长视频时细节理解不足的问题。

不同于依赖全局语义进行长视频理解的传统方法,LongVLM提供了一种直接且有效的方法,用于实现长期视频中的精细级别理解。

效果

这部分文本描述了LongVLM模型的实验设置、主要结果、消融研究和定性结果。以下是各个部分的中文概述和针对问题与解法的精细化分析。

4.1 实验设置

  • 数据集和评估指标:使用VideoChatGPT基准和ANET-QA等数据集对模型进行量化评估。涵盖了多个评估方面如正确性信息、细节取向、上下文理解等。

  • 实现细节:使用CLIP-ViT-L/14作为视觉编码器,Vicuna-7B-v1.1作为LLM,并在VideoChatGPT-100K数据集上微调。

4.2 主要结果

  • 基于视频的生成基准:LongVLM在细节取向和一致性方面相较于现有模型有显著提升。

  • 零样本视频问答:在三个零样本视频QA数据集上均达到了最高准确率。

4.3 消融研究

  • 局部特征聚合的影响

    • 子解法1:引入短期片段级特征,保留局部信息和时间结构。
      • 理由:与全局语义特征相比,局部特征更能够提高对视频的细粒度理解。
  • 全局语义整合的影响

    • 子解法1:将全局语义特征融入局部特征。
      • 理由:全局语义的加入显著提升了上下文理解和一致性的评分。
  • M的影响

    • 子解法1:选定M值,平衡内存成本和性能。
      • 理由:适当长度的视觉令牌能够提高模型性能。
  • E的影响

    • 子解法1:选取不同的[CLS]令牌数量,以选择最佳的E值。
      • 理由:适当数量的全局语义令牌能够提高生成质量分数。

4.4 定性结果

  • 精细理解的展示:模型能够捕捉细节信息,如准确识别正在修理的是链条而非车轮。
    • 例子:与Video-ChatGPT相比,LongVLM能够更准确地识别视频内容中的细节信息。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

适配器模式类图与代码

某软件系统中,已设计并实现了用于显示地址信息的类Address,现要求提供基于Dutch语言的地址信息显示接口。为了实现该要求并考虑到以后可能还会出现新的语言的接口,决定采用适配器(Adapter)模式实现该要求,得到如图7.9所示的类图。 【Java代码…

硬件学习件Cadence day16 做个笔记,BOM 位号这个参数输出的两种情况。

1. BOM 中位号有3种情况 1. 一种是位号生成时多行,每行是固定的位数。(如下图所示) 2. 一种是位号生成时只有一行,但是可以使用表格中自动换行功能,给他换行,但是这个位号本质上只有一行,只是因…

可视化后台管理系统-空框架

1.下载element-plus npm install element-plus --save 注意:element-ui不适配vue3,官方已将vue3版本的更新为element-plus 2.main.js配置 // 全局样式 import ./assets/main.cssimport { createApp } from vue import { createPinia } from piniaimpo…

【教学类-52-02】20240412动物数独02(四宫格)黏贴卡片

作品展示 背景需求 制作了动物数独4宫格后,需要再做一些黏贴上去的图片 【教学类-52-01】20240411动物数独(4宫格)-CSDN博客文章浏览阅读53次。【教学类-52-01】20240411动物数独01(4宫格)https://blog.csdn.net/rea…

中科方德服务器操作系统安装zabbix5.0

原文链接:中科方德服务器操作系统安装zabbix5.0 Hello,大家好啊!接着我们上一次的讨论,今天我要为大家介绍如何在已经安装好的中科方德服务器操作系统基础上,安装和配置Zabbix 5.0。Zabbix是一个开源的监控软件工具&am…

C语言 | Leetcode C语言题解之第24题两两交换链表中的节点

题目: 题解: struct ListNode* swapPairs(struct ListNode* head) {struct ListNode dummyHead;dummyHead.next head;struct ListNode* temp &dummyHead;while (temp->next ! NULL && temp->next->next ! NULL) {struct ListNod…

[Python图像识别] 五十二.水书图像识别 (2)基于机器学习的濒危水书古文字识别研究

该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。目前我进入第二阶段Python图像识别,该部分主要以目标检测、图像…

go语言学习--3.常用语句

目录 1.条件语句 1.1 if语句 1.2 if-else语句 1.3 switch语句 1.4 select语句 2.循环语句 2.1循环处理语句 2.2循环控制语句 3.go语言关键字 1.条件语句 和c语言类似,相关的条件语句如下表所示: 1.1 if语句 if 布尔表达式 {/* 在布尔表达式为 t…

前端常见面试题-CSS盒模型

前言: 什么是CSS盒模型?盒模型的构造? 在前端开发中,CSS 盒模型是一种非常基础且核心的概念,它描述了文档中的每个元素被框架处理的方式。 ---- 打开浏览器开发者工具,查看Elements右侧下的Styles底部。 …

C++ | Leetcode C++题解之第21题合并两个有序链表

题解&#xff1a; 题解&#xff1a; class Solution { public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {ListNode* preHead new ListNode(-1);ListNode* prev preHead;while (l1 ! nullptr && l2 ! nullptr) {if (l1->val < l2->val) {prev-…

Python用于模拟量子系统库之qutip使用详解

概要 QuTiP(Quantum Toolbox in Python)是一个用于模拟量子系统的开源Python库,它提供了丰富的工具来研究量子力学和量子信息学。 安装 通过pip可以轻松安装QuTiP: pip install qutip特性 多种量子对象表示:支持量子态、算符和超算符的表示和操作。 动力学模拟:提供了…

LeetCode 98 验证二叉搜索树

题目描述 验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜…

VM虚拟机Linux系统Redhat7.4版本进行网络配置

日常中自己搭建的虚拟机一般用到两种网络方式&#xff0c;第一种是仅主机模式、还有一种是NAT模式。 1、仅主机模式&#xff1a;可以和自己本地电脑&#xff0c;或者虚拟机和虚拟机之间进行网络通信&#xff0c;相当于一个局域网&#xff0c;是不能连接外网的。 2、NAT模式&a…

数据结构篇:深度剖析跳跃表及与B+树优劣分析

本文旨在探讨跳跃表的特性及其在实际应用场景中的作用&#xff0c;同时对其与B树进行比较&#xff0c;以帮助更好地理解和运用这两种数据结构。 跳跃表 什么是跳跃表&#xff08;skip list&#xff09; 跳跃表是一种基于跳跃链表的有序数据结构&#xff0c;它是一种多层链表&…

openGauss_5.1.0 企业版快速安装及数据库连接:单节点容器化安装

目录 &#x1f4da;第一章 官网信息&#x1f4da;第二章 安装&#x1f4d7;下载源码&#x1f4d7;下载安装包&#x1f4d7;修改版本&#x1f4d7;解压安装包&#x1f4d7;运行buildDockerImage.sh脚本&#x1f4d7;docker操作&#x1f4d5;查看docker镜像&#x1f4d5;启动dock…

上位机图像处理和嵌入式模块部署(改进的qmacvisual动态插件卸载)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们讨论过&#xff0c;qmacvisual虽然提供了很多的功能&#xff0c;包括的种类很多&#xff0c;但是总有一些功能是客户希望定制的。这些都是…

更改docker镜像下载地址

一.简介 使用指令 sudo docker info 查看本机的docker镜像下载地址为 由于本机的var文件空间不足&#xff0c;因此&#xff0c;想更改他的存储地址&#xff0c;如下 二.开始操作 1.停止Docker服务&#xff1a; 执行命令 sudo systemctl stop docker 以及 sudo systemctl s…

USB端口

winx&#xff0c;打开设备管理器 名称解释 HS-USB 分类全称传输速率版本超速SSsuper-speed最大速率5Gbps、10Gbps、20GbpsUSB3.0~USB3.2高速HShigh-speed25Mbps-400 Mbps &#xff08;最大480 Mbps&#xff09;USB2.0全速FSfull-speed500Kbps-10Mbps&#xff08;最大12Mbps&…

8个Python小游戏,小白练手,我都能玩一天【内附源码】

大家好&#xff0c;在使用Python的过程中&#xff0c;我最喜欢的就是Python的各种第三方库&#xff0c;能够完成很多操作。 下面就给大家介绍8个通过Python构建的项目&#xff0c;以此来学习Python编程。 大家也可根据项目的目的及提示&#xff0c;自己构建解决方法&#xff…

c++ stub函数打桩

应用场景&#xff1a; 当我们在开发一个涉及到第三方sdk库的软件时&#xff0c;比如做一个上位机控制客户端&#xff0c;该客户端当中调用了一份sdk库当中的接口。而这份sdk库&#xff0c;作为上层客户端软件与下层设备进行通信的媒介&#xff0c;可能需要在有真实设备的环境下…