【大模型系列】Grounded-VideoLLM(2024.10)

- Paper:https://arxiv.org/pdf/2410.03290
- Github:https://github.com/WHB139426/Grounded-Video-LLM
- Huggingface:https://huggingface.co/WHB139426/Grounded-Video-LLM
- Author:Haibo Wang et al. 加州大学,复旦
动机: 当前的video-LLMs由于缺少对时间信息的编码而导致其在细粒度的视频理解(fine-grained temporal grouding)能力受限。
关于fine-grained temporal grouding的三大基础能力:
- temporal referring:模型能识别某个具体时间段发生的事件
- temporal localizaing:模型能识别某个事件发生的时间段
- temporal reasoning:模型能推理某个时间段发生的事件与其他时间段事件之家的关系

解决方案:
- Two-Stream encoding:加入额外的时间流连编码帧之间的关系,即image encoder用于编码空间信息,video encoder用于编码时间信息
- Temporal tokens:用离散temporal tokens来视频中的相对时间位置
文章目录
- 1 模型结构
- 1.1 Two-stream encoding
- 1.1.1 Spatial stream
- 1.1.2 Temporal stram
- 1.1.3 特征融合
- 1.2 Unified temporal tokens
- 2 训练过程
- 2.1 Stage1: Video-Caption Alignment
- 2.2 Stage2: Temporal Token Alignment
- 2.3 Stage3: Multi-Task Instruction Tuning
- 3 Grouned VideoQA dataset generation
- 4 指标情况
- 4.1 grounding任务
- 4.2 VideoQA任务
- 5 总结
1 模型结构

- Image encoder:CLIP
- video encoder:InternVideo2-1B
- LLM:Phi3.5-Vision-Instruct-3.8B
- 时间编码到实际时间的转换:(当前token编码 / 总token编码)* 总视频时长
- 视频:采样成96帧,分成12个片段
1.1 Two-stream encoding
给定一个视频V(包含T帧),先将其分成K个视频片段,然后使用分组编码策略。由于视频中连续帧存在冗余性,于是每个视频片段都可以表示成2个部分:空间(spatial)和时间(temporal)。
- 空间:每个视频片段用一个独立关键帧(每个片段最中间的1帧)来表示空间信息
- 时间:用连续的帧来获取片段内的动作变化
1.1.1 Spatial stream
- 关键帧:每个视频片段的中间帧
- image encoder:CLIP
- 使用池化策略来减少token数量:2d池化尺寸为2x2
1.1.2 Temporal stram
- video encoder:InternVideo2-1B
- 每个视频片段包含96 / 12 = 8帧
- 使用池化策略来减少token数量,也只在空间维度上池化,2d池化尺寸为4x4
1.1.3 特征融合
直接使用concat,在token数量维度上进行拼接。
F S e g = C o n c a t [ F l a t t e n ( f ( F S ) ) ; F l a t t e n ( g ( F T ) ) ] F_{Seg} = Concat [Flatten(f(F_S)); Flatten(g(F_T ))] FSeg=Concat[Flatten(f(FS));Flatten(g(FT))]
f和g分别代表2层MLP,用于对齐LLM的维度需求。最后再将K组 F s e g F_{seg} Fseg拼接到一起得到视频的编码 F v i d F_{vid} Fvid。
1.2 Unified temporal tokens
使用相对时间表示,将连续的时间戳表示为离散的temporal tokens。其具体表示如下:
- 给定一个视频V,长度为L秒,均匀的将其划分为M(M=300),这样就可以得到M+1个离散时间点(<0> ~ <m>,<0>一般表示视频开始时间,<m>表示视频结束时间)
- 一个连续的时间戳转为temporal tokens:
t = R o u n d ( M × τ L ) τ = L × t M t = Round(M\times \frac{τ}{L}) \\ τ = L \times \frac{t}{M} t=Round(M×Lτ)τ=L×Mt
于是视频片段及其内容可表示为:

其中:
- <s>和</s>表示squence的开始和结束
- <video>和</video>表示视频的编码
- <grounded>是一个特殊token用于告诉模型输出grounded timestamps
2 训练过程
从pre-trained image-based MLLM开始,采用渐进式策略增强fine-grained temporal grounding能力。分为三个阶段。

2.1 Stage1: Video-Caption Alignment
使用video-caption数据来实现模态对齐,其他层冻结,只训练映射层MLP(f(·), g(·))。
2.2 Stage2: Temporal Token Alignment
引入temporal tokens和grounded数据,持续微调。训练参数为:
- 映射层MLP(f(·), g(·))
- word embedding matrix(add temporal tokens)
- final classifier of LLM
2.3 Stage3: Multi-Task Instruction Tuning
引入instruct数据微调,训练参数与stage类似:
- 映射层MLP(f(·), g(·))
- word embedding matrix(add temporal tokens)
- LoRA微调LLM
3 Grouned VideoQA dataset generation
- 使用OpenAI ChatGPT-4辅助数据生成
- 基于开源的已经包含temporal label信息的数据集如ActivityNet-Caption、QVHighlights
- 转化为多选任务multi-choice problem

具体步骤如下:
- 构造QA-pairs:首先将时间与描述输入到GPT中得到QA-pairs

- 构造选项:使用余弦相似度,检索50个与当前问题相似的问题,并从这50个答案中随机选择4个与答案相似的构造选项,答案相似度从0.2~0.9
4 指标情况
4.1 grounding任务

4.2 VideoQA任务

5 总结
时间编码的思路可以借鉴,不过仍然存在几个问题:
- 针对长视频,均有抽取96帧还是否有效?
- 关键帧选取每个片段的中间帧是否合理?理想情况下每个片段场景应该类似,但是实际中,每个片段可能出现不同的镜头拍摄角度。以关键帧作为间隔来分割会更合理但是会出现不均匀分割的现象。
相关文章:
【大模型系列】Grounded-VideoLLM(2024.10)
Paper:https://arxiv.org/pdf/2410.03290Github:https://github.com/WHB139426/Grounded-Video-LLMHuggingface:https://huggingface.co/WHB139426/Grounded-Video-LLMAuthor:Haibo Wang et al. 加州大学,复旦 动机&a…...
EV录屏好用吗?盘点2024年10款专业好用的录屏软件。
EV录屏的方式有很多种,它设置了很多模式,并且录制高清,可以免费使用。但是现在很多的录屏工具都有着与这个软件相似的功能,在这里我可以给大家列举一些。 1、福昕电脑录屏 这个软件为用户提供了多种录制模式,让视频录…...
Pandas | 理性判断数据是否存在缺失值的一种方法
理性判断 一般思路进一步思考df[B].explode() 一般思路 tcc.info()上述信息info显示没有缺失值 但是真实的情况还是要根据业务实际分析tcc.isnull().sum() # 和tcc.info()作用和tcc.info() 其实是一样的 进一步思考 在此过程中,我们需要检验是否存在采用别的值来表…...
ENSP (虚拟路由冗余协议)VRRP配置
VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)是一种用于提高网络可用性和可靠性的协议。它通过在多个路由器之间共享一个虚拟IP地址,确保即使一台路由器发生故障,网络依然能够正常运行,防止…...
move_base
move_base 官方介绍:http://wiki.ros.org/move_base 如果在仿真环境下, sensor source、odometry source 和 sensor transforms 都已提供好,我们只需要完成以下部分: 一、编写导航程序 ①创建 ROS 工作空间 和 pkg 包 mkdir -p …...
Android Intent 跳转常见系统设置
常量值描述android.settings.DATA_ROAMING_SETTINGS显示 2G/3G 选择的设置android.settings.SETTINGS显示系统设置android.settings.WIFI_SETTINGS显示设置以允许配置 Wi-Fiandroid.intent.action.POWER_USAGE_SUMMARY显示电池 … 更多GO 官网...
[复健计划][紫书]Chapter 7 暴力求解法
7.1 简单枚举 例7-1 Division uva725 输入正整数n,按从小到大的顺序输出所有形如abcde/fghij n的表达式,其中a~j恰好为数字0~9的一个排列(可以有前导0),2≤n≤79。枚举fghij,验证a…...
基于SpringBoot的社区讯息服务小程序【附源码】
基于SpringBoot的社区讯息服务小程序 效果如下: 系统登陆页面 管理员主页面 用户管理页面 社区活动管理页面 设施报修管理页面 缴费信息管理页面 用户主页面 用户登录页面 社区活动页面 研究背景 随着移动互联网技术的飞速发展,社区生活日益依赖于数字…...
springboot图书管理系统(一个简单的单体架构项目,适合小白)
期末作业 为了水一水期末作业,打算写一个简易的单体架构图书管理系统。以下为后端主要技术栈(后期可能更新,打算一个星期左右写完吧)。 springbootredismysqlspringcachespringsecurity … 数据库设计 第一次从0开始搭建后续可能还会多更新一些表。 -- 角…...
《CLR via C#》读书笔记--CLR的执行模型
将源代码编译成托管模块将托管模块合并成程序集加载公共语言运行时执行程序集的代码本机代码生成器:NGen.exeFramework 类库入门通用类型系统公共语言规范(CLS)与非托管代码的互操作性 将源代码编译程托管模块 公共语言运行时(Co…...
Javascript常见数据结构及其应用场景
Basic 以下是对JavaScript中常见数据结构及其应用场景的详细扩展: 数组(Array) 定义与特性:数组是由一组按顺序排列的值组成,每个值都有一个对应的索引(下标),可以通过索引访问和修…...
简单的签到程序 python笔记
简单的人脸识别签到程序 在看完以下代码后,略微修改一番,你就能够组装出自己的“简单的人脸识别签到程序”了。 请注意库的安装,否则会不可用。 你可以通过在cmd中使用:pip install来安装。 以下代码运行python 3.8 UI界面 使…...
30天如何成功转行成为AI产品经理?如果你也想转行到AI,赶紧进来抄作业!!!
前言 随着AI技术的快速发展,AI产品经理成为了备受瞩目的职业。如果您也想抓住这个机遇,不妨跟随这份30天快速入门指南,开始您的AI产品经理转型之旅。 一、学习路线 第一阶段(5天):初阶应用 该阶段让大家…...
基于Python+Vue开发的蛋糕商城管理系统
项目简介 该项目是基于PythonVue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的蛋糕商…...
WSL开发--利用Git连接远程仓库(详细步骤)
这篇文章主要介绍了如何将本地项目推送到 GitLab 上,并且避免每次提交都需要输入用户名和密码。文中分步讲解了配置 GitLab SSH 密钥以及配置 Git 远程仓库地址的方法。以下是文章的优化和简洁版: 将本地项目推送到 GitLab 并配置 SSH 免密登录 为了方便…...
VLAN高级+以太网安全
VLAN聚合 MUX VLAN QinQ 以下是这三种VLAN技术的作用及其在项目中的应用实例: VLAN聚合 (VLAN Aggregation) VLAN聚合通常用于将多个VLAN数据聚合到一个物理链路上,以减少链路数量、提高链路利用率。这样可以在一个物理链路上同时传输不同VLAN的数据包&…...
R7:糖尿病预测模型优化探索
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、实验目的: 探索本案例是否还有进一步优化的空间 二、实验环境: 语言环境:python 3.8编译器:Jupyter notebo…...
Spring核心:探索IoC容器与依赖注入的奥秘
目录 一、什么是Spring? 二、什么是 Ioc ? 2.1 控制反转的实现方式 2.1.1 依赖注入 2.1.2 依赖查找 2.1.3 优点分析 2.2 理解 Ioc 一、什么是Spring? 我们通常所说的 Spring 指的是 Spring Framework(Spring 框架ÿ…...
15分钟学 Go 实践项目二:打造博客系统
打造博客系统 项目概述 在本项目中,我们将创建一个简单的博客系统,重点实现CRUD(创建、读取、更新、删除)操作和用户管理。这个博客系统将使用户能够发布文章,评论,并管理其个人账户信息。 目标 实现用…...
Follow软件的使用入门教程
开篇 看到很多兄弟还不知道怎么用这个当下爆火的浏览器!在这里简单给需要入门的小伙伴一些建议: 介绍 简单解释一下,RSS 意思是简易信息聚合,用户可以通过 RSS 阅读器或聚合工具自主订阅并浏览各个平台的内容源,不用…...
零售店长必看:如何用iBeacon+微信小程序打造低成本智能导购(2024最新方案)
零售店长必看:如何用iBeacon微信小程序打造低成本智能导购(2024最新方案) 走进任何一家现代零售门店,你可能会注意到顾客们不再茫然地寻找商品,而是自然地掏出手机,接收个性化的商品推荐和促销信息。这种无…...
OpenClaw飞书集成实战:Qwen3-VL:30B智能对话与任务触发
OpenClaw飞书集成实战:Qwen3-VL:30B智能对话与任务触发 1. 为什么选择OpenClaw飞书组合 去年夏天,我接手了一个棘手的任务:团队每天产生上百条会议录音和杂乱无章的文档碎片,需要人工整理成结构化会议纪要。当我尝试用传统RPA工…...
OpenClaw技能商店:基于nanobot开发并分享自定义模块
OpenClaw技能商店:基于nanobot开发并分享自定义模块 1. 为什么要开发OpenClaw技能 去年夏天,我发现自己每天要花大量时间处理重复性的文件整理工作——下载各种技术文档,按日期和项目分类存储,再手动生成目录索引。当我第三次在…...
分支限界法 vs 回溯法:5个关键区别和实际应用场景对比
分支限界法与回溯法:核心差异与工程实践指南 在解决复杂组合优化问题时,算法选择往往决定了程序的执行效率。当面对NP难问题时,两种经典算法——分支限界法和回溯法——常被开发者拿来比较。本文将深入剖析这两种算法的本质区别,并…...
裂隙注浆模拟:当岩层遇上高粘度浆液
在COMSOL中运用水平集法和蠕动流模块模拟裂隙注浆过程,考虑浆液—岩体的耦合作用。 一般而言,裂隙开度越大,浆液所需注入压力越小。 本算例从结果来看可以验证此定律。 裂隙变形的本构取之于已发表的文献。 本算例中,初始时刻裂隙…...
PyTorch 2.8镜像多场景落地:智慧农业病虫害识别模型田间部署方案
PyTorch 2.8镜像多场景落地:智慧农业病虫害识别模型田间部署方案 1. 田间AI的迫切需求 现代农业正面临病虫害防治的严峻挑战。传统人工巡查方式效率低下,一个熟练的技术员每天最多能检查3-5亩作物,而大型农场往往需要数十人同时作业。更棘手…...
Maccy剪贴板管理器:彻底改变你的macOS复制粘贴体验
Maccy剪贴板管理器:彻底改变你的macOS复制粘贴体验 【免费下载链接】Maccy Lightweight clipboard manager for macOS 项目地址: https://gitcode.com/gh_mirrors/ma/Maccy Maccy是一款专为macOS设计的轻量级剪贴板管理器,它彻底改变了你的复制粘…...
5步掌握抖音音乐批量下载:douyin-downloader高效使用指南
5步掌握抖音音乐批量下载:douyin-downloader高效使用指南 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容创作的浪潮中,背景音乐已成为视频作品的灵魂元素。然而࿰…...
从逻辑门到CPU:计算机工作原理详解
戏说CPU的工作原理:从逻辑门到计算系统1. 计算系统的基本构建单元1.1 逻辑门的物理实现计算系统最基本的构建单元是逻辑门,它们可以通过简单的物理实体来演示。以三名士兵为例,我们可以构建最基本的逻辑运算单元:输入单元…...
无人机远程识别系统的技术突破与实践指南
无人机远程识别系统的技术突破与实践指南 【免费下载链接】ArduRemoteID RemoteID support using OpenDroneID 项目地址: https://gitcode.com/gh_mirrors/ar/ArduRemoteID 随着无人机技术的快速发展,全球范围内对无人机安全监管的要求日益严格。各国 aviati…...
