最新视频理解大模型之MiniGPT4-video

前言

随着大模型的爆火,多模态大模型也随之卷了起来,基本每隔一小段时间就会冒出一个新模型。

今天给大家带来一个最新发现的关于视频理解的多模态大模型。

它的名字是MiniGPT4-video,可以看的出来其是MiniGPT4的一个分支;MiniGPT4主要是图文理解,而MiniGPT4-video则是沿用其思路将其扩展到视频领域。

项目主页 https://vision-cair.github.io/MiniGPT4-video

论文链接 http://arxiv.org/abs/2404.03413.pdf

代码链接 https://github.com/Vision-CAIR/MiniGPT4-video

效果

废话不多说,先看看效果。

(1)为了测试其真实泛化效果,笔者随机从抖音找了一些视频,本地加载模型进行了尝试

demo

在这里插入图片描述

翻译一下模型的回复是:“这个视频是一个由婴儿和幼儿互相玩耍的片段合集。视频展示了孩子们的天真和好玩,他们参与各种活动,比如爬行、笑声和互相拥抱。视频配有欢快的音乐,氛围轻松愉快,充满了喜悦的气氛。
这个视频似乎没有特定的主题或信息,而是旨在展示年幼儿童的天性好奇和好玩。它可以用作娱乐或教育观众有关幼儿发展阶段的方式,或者仅仅是为了给他们带来微笑。
总的来说,这个视频是对童年的天真和快乐的温馨而令人愉悦的描绘。”

整体上效果还不错。

(2)论文中的一些体感case

(3)论文中的一些benchmark量化效果

怎么做到的呢

其整个模型架构设计沿用MiniGPT4的思路,即讲图像encode和文本encode拼在一起,然后送到一个已经开源的LLM模型中进行训练。具体的其一共分了三步进行逐步训练。

  • stage1 : Large-scale image-text pair pretraining

第一步主要就是训练一个图像特征提取器即一个线性层linear layer。具体的图像先经过EVA-CLIP编码,然后通过linear layer将其映射到LLM,然后使用captioning loss进行更新学习linear layer。

注意这里还没有上升到要处理视频,就是简单的一个图文pair预训练。目的就是让模型先对图片有一个简单的学习和理解。为后面的视频理解打下一个基础。

  • stage2 : Large-scale video-text pair pretraining

经过stage1后,模型已经对单张图片有了一个不错的理解了,现在开始让其对视频进行理解学习。所谓视频其实就是由一些列单个图片在时间序列进行串联组成的。

所以使用了如下模版来作为处理视频的模版:

<s>[INST]<Img><FrameFeature_1><Sub><Subtitle text_1>... <Img> <FrameFeature_N><Sub><Subtitle text_N><Instruction></INST>

其中<s>、[INST]、<Img>、<Sub>、</INST>都是特殊的占位符或者说分割符号。

<FrameFeature_1>位置就是放经过stage1的linear layer得到的图片特征。

其次一个视频除了有图像,还有字幕这个信息源,所以<Subtitle text_1>的位置就是为了放字幕。

<Instruction>就是放用户针对视频要提问的具体文本问题。

可以看到作者就是将一个视频的多张图片和其对应的字幕以及用户的问题直接平铺cat到一起,以此最后送到LLM进行推理理解。 具体在拼接的时候其实是拼接emb。即各个模态先各自过各自的特征网络得到emb,然后再拼接在一起送到上层的LLM也即transformer。

更具体的,作者用的LLM是Llama2-7B,其最大token窗口是4096,作者将一张图片视为64个token。然后每个视频抽45帧,所以一个视频的图像部分用掉了2880个token。同时预留了1000个token给字幕。当然随着用的底座LLM不同,其最大token窗口也是不一样的,那么抽帧数量等等上面也可以适当进行调整,比如论文中也对Mistral进行了训练,感兴趣的同学可以去看一下。

另外需要说明的是stage2这里使用了大量的视频数据,但是这些视频数据对应的输出文本其实都是对视频本身的描述,所以作者的Instruction部分就是预先定义了一些指令池,然后每条样本随机抽一个处理比如:Briefly describe these video.

  • stage3 : Video question answering instruction finetuning

经过stage2后模型已经对视频有了理解的潜力,只不过需要更多样性的指令来激发模型对指令的理解。所以stage3在训练上和stage2没有任何区别,只是训练数据不一样,其<Instruction>更加多样。

这里stage3这里的作用有点类似LLM的SFT。

  • 小结

可以看到stage1和stage2其实都是在为最终的视频理解打基础,从“看懂图片到看懂视频”打基础,其实大模型领域的预训练pretrain就是在打基础,所以作者也将stage1和stage2过程命名为了是pretraining。

而stage3才是真真的微调finetuning也即在pretrain的基础上通过少量高质量的指令微调数据泛化出最终的视频理解模型。

另外作者所有的训练都是基于Lora进行的,并没有进行全参训练,所以下载模型的时候可以看到各个阶段的模型大小都比较小。

总结

有资源(pretrain阶段需要吃大量的数据,笔者看了一下基本都是按照T起步的)的同学可以做以下两个事情来玩玩:

(1) 奉行scaling law 大法,继续提升性能:比如使用全参训练、尝试基于13B的底座进行训练,又比如使用更多的优质视频数据等等:

Panda-70M:https://github.com/snap-research/Panda-70M

HD-vila-100:https://github.com/microsoft/XPretrain/blob/main/hd-vila-100m/README.md

InternVid:https://github.com/opengvlab/internvideo

相信性能肯定会有一个非常大的提升。

(2)汉化:当前的MiniGPT4-video还是一个以英文为主的模型,还可以尝试将其进行汉化,模型方面可以选择一些中文底座比如qwen等等(其实之前已经有人对MiniGPT4进行了汉化:https://github.com/Coobiw/MiniGPT4Qwen),数据方面可以进行翻译获得。

相信不久MiniGPT4-video的一些汉化工作就会出现。

总的来说上面的工作都可以拿来练练技术和实践。至于有什么实际用处的话,笔者觉得可以多发散想想,比如目前比较火的sora,很多团队在复现其工作,其中数据就是个难点,如果MiniGPT4-video最终的效果还不错,可以考虑拿来做视频打标工作(最起码做银标数据也不错)。

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

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

相关文章

vue3实现时钟效果

鼬鼬鼬鼬鼬被提需求了&#xff01;&#xff01;&#xff01; 产品&#xff1a;你学什么的&#xff1f; 我&#xff1a;跟CV有点关系 产品&#xff1a;control C加control V是吧 我&#xff1a;对对对 效果 时间实时变化&#xff1a; 页面部分 <template><div clas…

开源博客项目Blog .NET Core源码学习(14:App.Hosting项目结构分析-2)

开源博客项目Blog的前台页面&#xff08;如下图所示&#xff09;的控制器类保存在App.Hosting项目的Controllers文件夹内&#xff0c;页面保存在Views文件夹内&#xff0c;网页中使用的图标、js、css文件等保存在wwwroot文件中。 前台各个页面、Controller文件夹中的控制器类及…

Vue2电商前台项目(三):完成Search搜索模块业务

目录 一、请求数据并展示 1.写Search模块的接口 2.写Vuex中的search仓库&#xff08;三连环&#xff09; 3.组件拿到search仓库的数据 用getters简化仓库中的数据 4.渲染商品数据到页面 5.search模块根据不同的参数获取数据展示 &#xff08;1&#xff09;把派发action…

【c 语言】函数前面的返回类型

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

大厂Java笔试题之统计兔子出生问题

题目&#xff1a;有一种兔子&#xff0c;从出生后第3个月起每个月都生一只兔子&#xff0c;小兔子长到第三个月后每个月又生一只兔子。 例子&#xff1a;假设一只兔子第3个月出生&#xff0c;那么它第5个月开始会每个月生一只兔子。 一月的时候有一只兔子&#xff0c;假如兔子…

vue3 vueUse 连接蓝牙

目录 vueuse安装&#xff1a; useBluetooth: 调用蓝牙API 扫描周期设备 选择设备配对 连接成功 vue3的网页项目连接电脑或者手机上的蓝牙设备&#xff0c;使用vueUse库&#xff0c;可以快速检查连接蓝牙设备。 vueUse库使用参考&#xff1a; VueUse工具库 常用api-CSDN…

ES6: promise对象与回调地狱

ES6&#xff1a; promise对象与回调地狱 一、回调地狱二、Promise概述三、Promise的组成四、用函数封装Promise读取文件操作 一、回调地狱 在js中大量使用回调函数进行异步操作&#xff0c;而异步操作什么时候返回结果是不可控的&#xff0c;所以希望一段程序按我们制定的顺序执…

中国省级人口结构数据集(2002-2022年)

01、数据简介 人口结构数据不仅反映了地域特色&#xff0c;更是预测地区未来发展趋势的重要工具。在这些数据中&#xff0c;总抚养比、少年儿童抚养比和老年人口抚养比是三大核心指标。 少儿抚养比0-14周岁人口数/15-64周岁人口数 老年抚养比65周岁及以上人口数/15-64周岁人…

Python | Leetcode Python题解之第27题移除元素

题目&#xff1a; 题解&#xff1a; class Solution:def removeElement(self, nums: List[int], val: int) -> int:a 0b 0while a < len(nums):if nums[a] ! val:nums[b] nums[a]b 1a 1return b

2023数据要素白皮书(免费下载)

【1】关注本公众号&#xff0c;转发当前文章到微信朋友圈 【2】私信发送 【2023年数据资源入表白皮书】 【3】获取本方案PDF下载链接&#xff0c;直接下载即可。 如需下载本方案PPT原格式&#xff0c;请加入微信扫描以下方案驿站知识星球&#xff0c;获取上万份PPT解决方案&a…

03 Git 之 远程仓库 + IDEA 集成使用 GitHub

1. 远程仓库 origin&#xff1a;即远程仓库 url 的指代。 从网上随意 clone 一个仓库&#xff0c;进入 .git/config 文件, 即可编辑远程仓库的 url&#xff0c;也可以自定义想要指代该 url 的名词。 1.1 本地仓库绑定远程仓库 并 推送、拉取 git remote add 【想要起的指代…

Gradle 实战 - 启动main函数-ApiHug准备-工具篇-012

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace ApiHug …

RocketMQ底层原理及性能调优实战(二)

目录 1、RocketMQ源码分析 1-1、读源码前的思考 1-2、RocketMQ整体架构及连通性 1-3、RocketMQ核心组件及整体流程 1-4、NameServer源码分析 1-4-1、RocketMQ核心组件及整体流程 1-4-2、NameServer启动流程概要 1-4-3、Broker启动流程概要 1-4-4、Topic路由注册、剔除…

SpringBoot3整合Mybatis plus

Java版本&#xff1a;17 Spring Boot版本&#xff1a;3.1.10 Mybatis plus版本&#xff1a;3.5.5 源码地址&#xff1a;Gitee仓库 01 创建我们的项目工程 首先&#xff0c;我们创建一个maven工程spring-boot3-demo&#xff0c;pom文件配置如下。 这里我们将spring-boot-start…

AUTOSAR-COMStack-002_Update-Bit 机制

最近在工作中第一次使用了AUTOSAR COM Update-Bit功能&#xff0c;对使用了Update-Bit功能信号的使用&#xff0c;不能得心应手&#xff0c;发送信号比较顺利&#xff1b;测试接收信号功能时&#xff0c;对应的RTE接口始终不能接收到对应的模拟发送的信号值&#xff0c;后来翻阅…

004Node.js常用快捷键

1.常用的终端命令&#xff1a; &#xff08;1&#xff09;del 文件名&#xff1a; 删除文件 &#xff08;2&#xff09;ipconfig: 查看IP命令 &#xff08;3&#xff09;mkdir 目录名 &#xff1a;在当前目录新建指定目录 &#xff08;4&#xff09;rd 目录名&#xff1a;在当前…

Leetcode算法训练日记 | day25

一、组合总和Ⅲ 1.题目 Leetcode&#xff1a;第 216 题 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺…

标准孔板简单适应性强

即使生活一地鸡毛&#xff0c;但仍然要觉得未来可期&#xff0c;做自己而不是解释自己&#xff0c;只要能变好&#xff0c;慢点又如何&#xff0c;愿我们都是苦尽甘来的人&#xff0c;熬得住就出众&#xff0c;熬不住就出局&#xff0c;鹤壁永成矿山&#xff0c;在行业坚持十余…

tested4142

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

Stacked Hourglass Networks for Human Pose Estimation 用于人体姿态估计的堆叠沙漏网络

Stacked Hourglass Networks for Human Pose Estimation 用于人体姿态估计的堆叠沙漏网络 这是一篇关于人体姿态估计的研究论文&#xff0c;标题为“Stacked Hourglass Networks for Human Pose Estimation”&#xff0c;作者是 Alejandro Newell, Kaiyu Yang, 和 Jia Deng&a…