Video-LLaMA

news2024/12/23 23:59:09

文章目录

  • 链接
  • 主要贡献
  • 模型
  • 一些思考
    • 啥是Q-former
    • 为什么position embedding可以辅助学到temporal的信息
  • 代码
    • 视觉处理
  • 一些惊喜

链接

https://github.com/DAMO-NLP-SG/Video-LLaMA

主要贡献

  1. 能够捕捉到一小小短时间(temporal)里视觉的变化
    - 使用了Q-former 去做视频上的encoding,通过 视频转文字的方式去做理解
  2. 符合人类对视频理解的套路,即声音+视觉 信号
    - 套用了Facebook的 imagebind 给 LLM 做多模态的embedding的buff, 不然介于语音数据的稀有,如果没有 imagebind, 那么就不太能将语音的信息用进去

模型

请添加图片描述
整个模型,蓝色的blocks都是可以被拿来直接用的,橙色部分是一定要经过训练,以促成Llama video 模型正常联通使用的。

视觉和语音部分都大同小异:

相同点:

  1. 都使用了Qformer,并且通过其中learnable的 position 捕捉 temporal的信息
  2. 都用到了pretrained 的模型作为数据的encoder
  3. 数据是多份的(图像:每帧;语音:sample M 个 2秒片段。)

不同点:
4. 数据类型和格式
5. 根据数据类型对Qformer结构做了些调整
6. 图像encoder 用的是 Blip-2 中专门做图像语义理解的部分,这个部分的结构:EVA CLIP + Q-former
7. 语音encoder 用的是 Facebook 的 imagebind

模型训练是分段的:

第一阶段 : 粗训(相当于小朋友的兴趣班),用 图像-caption 数据
第二阶段 :精细训(相当于上完兴趣班再上专业集训),用质量高的数据(根据想要的效果来)。比如都是跳舞,但这里可以是专业芭蕾或者专业民族舞,再或者街舞

  • 把图片当作1帧的视频来训练

一些思考

啥是Q-former

这个内容在 BLIP-2里。基本上video-lama 就是base在这个模型里改的。

为什么position embedding可以辅助学到temporal的信息

self.video_frame_position_embedding:

 nn.Embedding(max_frame_pos, self.Qformer.config.hidden_size)

代码

整个代码里的部件权重加载在 video_llama.py完成,其中,尽管我们之前下载了那么多权重,但是依然有些权重需要临时下载并加载(一般在.cache这个folder):
例如:blip2_pretrained_flant5xxl.pth

语音模型相关的由 LlamaForCausalLM处理:
Causal LM(CLM):This is the standard left-to-right auto-regressive language model pre-training, used in many standard pre-trained models, like GPT, LLaMA-7B

视觉Encoder: VideoQformer:

 self.video_Qformer,self.video_query_tokens = self.init_video_Qformer(num_query_token = num_video_query_token,\
            vision_width=self.Qformer.config.hidden_size, num_hidden_layers =2)

num_video_query_token = 32
hidden_size = 768

音频Encoder: Audio former:
ImageBind: video_llama/models/ImageBind/models/imagebind_model.py

self.audio_encoder,self.audio_hidden_size = \
                imagebind_model.imagebind_huge()

num_video_query_token = 8
hidden_size = 1024

self.audio_Qformer,self.audio_query_tokens = self.init_video_Qformer(num_query_token = self.num_audio_query_token,\
                vision_width=self.audio_hidden_size, num_hidden_layers =2)

视觉处理

video_llama/processors/video_processor.py
视频默认不管什么尺寸,进入Encoder前,都会被resize成224x224, 受限于transfomer attention的套路,等边长的resolution 比如 512x512, 768x768都可以用。在DETR的变种已经妥善处理了各种尺寸输入输出的问题。

不管输入多少秒的视频,目前都是均匀的从视频里抽8 个帧:

 indices = np.arange(start, end, vlen / n_frms).astype(int).tolist()

视频处理resize还要经过mean std的normalisation的处理: (1,3,8,224,224)
然后放进encode_videoQformer_visual(), frame_hidden_state的结果和token接入到bert 得到 llama 相关的embedding,用于后续提问。

output: inputs_llama, atts_llama ===> img_list

问答在:

llm_message = chat.answer(conv=chat_state,
                              img_list=img_list,
                              num_beams=num_beams,
                              temperature=temperature,
                              max_new_tokens=300,
                              max_length=2000)[0]

一些惊喜

由于这个模型里的视频帧是均匀抽取8个帧,如果只有一秒的视频,那么很容易抽到的8张图都是一样的,那么描述就会像在说车轱辘话一样,来回重复并颠倒。因此,为了符合这个模型的特点,建议先用长一点的视频,再经过快进处理。这样模型可以能更好区分场景变化和理解视频,而不至于被相同的帧误导。

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

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

相关文章

“卷王”新茶饮们:从风口,卷到了十字路口

【潮汐商业评论/原创】 “楼下奈雪开业了,扫码9块9就可以喝到杨枝甘露,这也太便宜了,”Chloe向同事说道。 “上次跟Fendi联名的喜茶,两杯也只要38元。” “喜茶奈雪开始向二线价格靠拢?怎么都那么便宜了&#xff1f…

【一对一学习小组】2023年有三AI-CV初阶-基础算法组发布,如何夯实深度学习图像识别算法理论基础与实践...

2023年有三AI-CV初阶-基础算法组正式发布!有三AI已经推出了CV初-中-高级培养计划(原名有三AI-CV季划),这是我们的终身计算机视觉学习小组。 该培养计划具有以下特点: 【系统性】配套有非常完备的理论与实践 【永久性】…

jacaScript的详解与使用2

javaScript详解与使用2 Window.open()和location对象在HTML中我们一般使用的是a标签进行页面的跳转 而在js中也有自己的跳转页面的方式 window.open() 里面可以传递参数 在跳转的页面使用location对象进行接收 面象对象什么是面向对象1.面向对象是一种编程思想 简称为oop&#…

Qt快速学习(二)--QMainWindow,对话框,布局管理器,常用控件

目录 1 QMainWindow 1.1 菜单栏 1.2 工具栏 1.3 状态栏 1.4 铆接部件 1.5 核心部件(中心部件) 1.6 资源文件 2 对话框QDialog 2.1 基本概念 2.2 标准对话框 2.3 自定义消息框 2.4 消息对话框 2.5 标准文件对话框 3 布局管理器 3.1 系统…

华为OD机试 - 数字颠倒(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、Java算法源码投机取巧七、效果展示 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&am…

回归预测 | MATLAB实现PSO-RF粒子群优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现PSO-RF粒子群优化算法优化随机森林算法多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现PSO-RF粒子群优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)效果…

链表的顶级理解

目录 1.链表的概念及结构 2.链表的分类 单向或者双向 带头或者不带头 循环或者非循环 3.无头单向非循环链表的实现 3.1创建单链表 3.2遍历链表 3.3得到单链表的长度 3.4查找是否包含关键字 3.5头插法 3.6尾插法 3.7任意位置插入 3.8删除第一次出现关键字为key的节点 …

ROS2与ROS1通信

文章目录 准备工作通信包安装启动ros1_bridge在ROS1中启动相机节点在ROS2中查看ROS1话题 准备工作 本机系统20.04 ROS2-foxyROS1-noetic 两个版本的ROS 均需要按照官网教程进行安装,安装完成以后,source环境变量都不放到~/.bashrc文件里面 通信包安装…

MES管理系统和MOM系统哪个更适合中小企业

中小型制造企业需要在选择制造管理系统前进行充分的需求分析和系统评估,结合企业的战略目标和资源状况来做出决策。MES和MOM系统是两种常见的制造管理系统,它们都能够帮助企业提高生产效率、降低生产成本,实现持续发展。然而,MES管…

模糊测试面面观 | 模糊测试对软件质量和性能的影响

随着软件行业的几十年发展和数字化转型的加快,我国已经度过了软件行业的野蛮发展时代。用户对软件的质量和性能要求越来越高,已经成为企业成功与否的至关重要条件。然而,随着软件规模的扩大和黑客攻击方式的多样化,保障软件的安全…

【kubernetes】Helm

什么是 Helm 每个成功的软件平台都有一个优秀的打包系统,比如Debian、Ubuntu 的 apt,RedHat、CentOS 的 yum。Helm 则是 Kubernetes上 的包管理器,方便我们更好的管理应用。 在没使用 helm 之前,向 kubernetes 部署应用&#xf…

昌硕科技、世硕电子同步上线法大大电子合同

近日,世界500强企业和硕联合旗下上海昌硕科技有限公司(以下简称“昌硕科技”)、世硕电子(昆山)有限公司(以下简称“世硕电子”)的电子签项目正式上线。上线仪式在上海浦东和硕集团科研大楼举行&…

VSCode如何为远程安装预设(固定)扩展

背景 在使用VSCode进行远程开发时(python开发之远程开发工具选择_CodingInCV的博客-CSDN博客),特别是远程的机器经常变化时(如机器来源于动态分配),每次连接新的远程时,都不得不手动安装一些开…

操作系统-笔记-第四章-文件管理

目录 四、第四章——文件管理 1、文件管理——基础概念 (1)文件结构 (2)操作系统提供的接口 (3)总结 2、文件的逻辑结构 (1)有结构文件(类似SQL表文件&#xff09…

数据分析案例丨商品零售购物篮分析(下)

数据分析案例丨商品零售购物篮分析(上) 03 数据预处理 通过对数据探索分析,发现数据数据完整,并不存在缺失值。建模之前需要转变数据的格式,才能使用apriori函数进行关联分析。对数据进行转换,如代码清单…

TIA博途中的数据类型基本介绍

TIA博途中的数据类型基本介绍 基本数据类型 Bool 布尔 FALSE 或TRUE 举例: I0.0 Q0.2 M100.0 DB0.DBX2.5 Byte 字节 二进制:2#0000 0000 到2#1111 1111 无符号整数:0到255 有符号整数:-128到127 十六进制:16#00到16#FF 举例: IB2 MB100 DB1.DBB2 Word 字 二进制:2#0000 …

钉钉公布AI版本商业定价,调用一次大模型不到5分钱

8月22日,在2023年钉钉生态大会上,钉钉总裁叶军公布了钉钉全面智能化的最新进展:已有17条产品线、55个场景全面接入大模型,完成智能化再造;钉钉同时面向生态伙伴和客户开放智能化底座AI PaaS,表示将用大模型…

基于Java水果售卖系统设计与实现(论文+源码)_kaic

第1章 绪 论 1.1 课题研究的背景 随着信息技术的发展,互联网经济快速兴起,电子商务发展迅速,网上购物受到人们的广泛关注和普遍欢迎。水果传统售卖模式的缺点不断暴露,不能满足当今人们快节奏的生活模式需要。将水果的售卖带…

Dubbo服务

dubbo服务分为服务的提供者和消费者 1.服务提供者在nacos注册后通过 DubboService 暴漏服务 2.dubbo服务消费者通过 DubboReference来进行远程服务调用 dubbo的高级特性 1.启动检查:如果启动消费者无提供者则报错,通过配置文件check: fa…

实战演练 | Navicat 导入向导

数据库工具中的导入导出功能是指将数据从一个数据库系统导出到另一个数据库系统,或者将数据从一个文件格式导出到另一个文件格式。导入导出功能可以通过各种方式实现,例如使用SQL语句、数据库管理工具或第三方库和工具。在进行数据迁移时,通常…