最新视频理解大模型之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最终的效果还不错,可以考虑拿来做视频打标工作(最起码做银标数据也不错)。

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

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

相关文章

STM32利用软件I2C通讯读MPU6050的ID号

今天的读ID号是建立在上篇文章中有了底层的I2C通讯的6个基本时序来编写的。首先需要完成的就是MPU6050的初始化函数 然后就是编写 指定地址写函数&#xff1a; 一&#xff1a;开始 二&#xff1a;发送 从机地址读写位&#xff08;1&#xff1a;读 0&#xff1…

ESP-IDF移植lvgl 驱动 ST7789

文章目录 1 前言2 准备3 移植LVGL3.1 工程准备3.2 修改 CMakeLists.txt文件编译 LVGL3.3 编译LVGL 4 编译 ST7789 LCD驱动5 发现问题 1 前言 本教程开始学习 LVGL的&#xff0c;开始之前要把环境配置好&#xff0c;首先就需要移植 lvgl&#xff0c;使用的是 esp32 环境&#xf…

kafka学习记录

文章目录 windows单机版kafka搭建步骤主题的增删改查操作消息的生产与消费 Windows集群版kafka搭建步骤 prettyZoo 尚硅谷Kafka教程&#xff0c;2024新版kafka视频&#xff0c;零基础入门到实战 【尚硅谷】Kafka3.x教程&#xff08;从入门到调优&#xff0c;深入全面&#xff0…

plsql developer 一键格式化sql/美化sql

PL/SQL 格式化工具 以 Oracle SQL Developer 为例&#xff0c;使用一键格式化的步骤如下&#xff1a; 打开 Oracle SQL Developer。在“文件”菜单中&#xff0c;选择“打开文件”&#xff0c;然后选择你的 PL/SQL 文件。打开文件后&#xff0c;你可以通过右键菜单选择“格式…

vue3 知识点的补充 之 第一节

01 vue2与vue3的区别 vue2 采用object.defuneProperty()实现 对数组不友好 重写了数组的方法&#xff0c;同时无法监听数组length长度的改变。对于对象只能劫持设置好的数据 新增需要使用vue.set vue3 采用proxy进行代理&#xff0c;不需要重写数组的方法 同时可以监听数组长度…

gdb相关指令

背景知识 通过上图&#xff0c;可以看到&#xff0c;gcc 和 g 默认形成的可执行程序是release的&#xff01;&#xff01;&#xff01;故无法直接被调试。因此带 -g 选项表示使用 Debug 模式进行编译&#xff0c;而且我们可以看到&#xff0c;Debug 模式下编译形成的可执…

OSCP靶场--ClamAV

OSCP靶场–ClamAV 考点 1.nmap扫描 ##┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC 192.168.153.42 -p- -Pn --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-13 10:01 EDT Nmap scan report for 192.168.153.42 Host is up (0.24s latency). N…

Ubuntu去除烦人的顶部【活动】按钮

文章目录 一、需求说明二、打开 extensions 网站三、安装 GNOME Shell 插件四、安装本地连接器五、安装 Hide Activities Button 插件六、最终效果七、卸载本地连接器命令参考 本文所使用的 Ubuntu 系统版本是 Ubuntu 22.04 ! 一、需求说明 使用 Ubuntu 的过程中&#xff0c;屏…

VNC Viewer 连接远程主机及常见错误处理(The connection closed unexpectedly)

搭建可接收vnc连接的环境 1、下载镜像 https://github.com/fcwu/docker-ubuntu-vnc-desktop 该镜像是含有ubuntu 通过docker运行的桌面环境&#xff0c;并接受vnc 的连接 docker pull dorowu/ubuntu-desktop-lxde-vnc 2、运行容器 1&#xff09;只暴露容器的80端口&#…

二叉树练习day.9

669.修剪二叉搜索树 链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变…

Singleton单例设计模式详解

目录 模式定义应用场景实现方式1.懒汉模式&#xff1a;2.饿汉模式&#xff1a;3.静态内部类反射如何防止反射攻击破坏&#xff1f; 枚举类型序列化 部分源码中的应用定位Spring & JDKTomcat反序列化指定数据源 模式定义 保证一个类只有一个实例&#xff0c;并且提供一个全…

pytorch车牌识别

目录 使用pytorch库中CNN模型进行图像识别收集数据集定义CNN模型卷积层池化层全连接层 CNN模型代码使用模型 使用pytorch库中CNN模型进行图像识别 收集数据集 可以去找开源的数据集或者自己手做一个 最终整合成 类别分类的图片文件 定义CNN模型 卷积层 功能&#xff1a;提…

Chatgpt掘金之旅—有爱AI商业实战篇|播客剧本写作|(十三)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业播客剧本写作服务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。…

b站江科大stm32笔记(持续更新)

b站江科大stm32笔记&#xff08;持续更新&#xff09; 片上资源/外设引脚定义表启动配置推挽开漏oc/od 门漏极/集电极 电阻的上拉下拉输入捕获输入捕获通道主从触发模式输入捕获基本结构PWMI基本结构PWMPSC ARR CRR输入捕获模式测频率TIM_PrescalerConfig()初始化输入捕获测频法…

mysql四种引擎区别

MySQL 提供了多种不同的数据库引擎&#xff0c;其中最常见的有 MyISAM、InnoDB、MEMORY 和 BLACKHOLE。这四个引擎分别有以下特点&#xff1a; 1. MyISAM MyISAM 是 MySQL 的默认引擎。它对于只有较少的修改、大量读取的应用场景具有良好的性能。它不支持事务处理&#xff0c;也…

Steam平台游戏发行流程

Steam平台游戏发行流程 大家好我是艾西&#xff0c;一个做服务器租用的网络架构师也是游戏热爱者&#xff0c;经常在steam平台玩各种游戏享受快乐生活。去年幻兽帕鲁以及雾锁王国在年底横空出世&#xff0c;幻兽帕鲁更是在短短一星期取得了非常好的成绩&#xff0c;那么作为游戏…

你的系统是如何跟MySQL打交道的

1、Java 工程师眼中的数据库是什么东西? 从今天开始&#xff0c;我们将要开始一个MySQL的专栏&#xff0c;一起来研究MySQL数据库的底层原理和各种实践案例&#xff0c;以及互联网公司的技术方案。 现在我们先来看看&#xff0c;在一个Java工程师眼中的数据库是什么东西? 平时…

【Godot4.2】CanvasItem绘图函数全解析 - 5.绘制字符和字符串

概述 到这一节为止&#xff0c;我们已经学习了如何在CanvasItem中绘制简单几何图形、图片以及样式盒。但是对于很重要的文字一直没有涉及。 本节就来讲一下字符和字符串绘制函数&#xff0c;以及替换它们的两个类。 系列目录 0.概述1.绘制简单图形2.设定绘图变换3.绘制纹理4…

解决vue3更新chunk包后,点击页面报错

出现错误 解决思路 试了好多方法&#xff0c;跳了很多坑&#xff0c;router版本对不上&#xff0c;解决方案不实用。最后我直接捕获异常&#xff0c;刷新页面&#xff0c;解决最快最有效。 // vue-rotuer版本 "vue-router": "^4.0.3"解决方案 在router/…

路由器配置实验--R1---R5

R1的路由表中默认存在:192.168.1.0192.168.3.0 需要添加:192.168.2.0 4.0 5.0 R2的路由表中默认存在:192.168.1.0192.168.2.0需要添加:192.168.3.0 4.0 5.0 R3的路由表中默认存在:192.168.3.0192.168.4.0需要添加: 1.0 2.0 5.0 R4的路由表中默认存在:192.168.2.0 192.168.4.0…