【大模型系列】mPLUG-Owl3(2024.08)

- Paper: https://arxiv.org/pdf/2408.04840
- Github: https://github.com/X-PLUG/mPLUG-Owl
- HuggingFace:https://huggingface.co/mPLUG/mPLUG-Owl3-7B-240728
- Author: Jiabo Ye et al. 阿里巴巴
文章目录
- 0 总结(省流版)
- 1 模型结构
- 1.1 Cross-attention Based Achitecture
- 1.2 HATB(Hyper Attention Transformer Block)
- 2 训练细节
- 2.1 数据处理
- 3 指标
- 3.1 图文理解指标
- 3.2 视频理解指标
- 4 Distractor Resistance Benchmark
- 5 总结
0 总结(省流版)
- 增强了处理长图片序列的能力
- 提出了一种hyper attention blocks,有效地将视觉和余元集中到一个共同的由语言引导的语义空间
- 提出了一个长视觉序列评估基准:Distractor Resistance
核心创新点:visual feature不直接作为LLM的输入,而是在LLM中间几层参与计算,再与文本特征融合到一起,因此不会因为输入的图片多而导致超出LLM的最大输入限制。
1 模型结构

- Visual encoder: Siglip-400m
- LLM: Qwen2
1.1 Cross-attention Based Achitecture
当前流行的MLLM模型(如LLaVA-Interleave,InternVL)通常将visual features直接插入embedding序列,与文本一起作为LLM输入,这种方式有2个问题:
- 当处理多图、视频等长视觉序列时,很容超过LLM的最大输入序列长度
- 视觉特征在经过LLM时,会损失视觉细节
mPLUG-Owl3的解决方案: 使用cross-attention将visual information送入LLM中。具体做法如下:
- 给定一个交错的多模态序列 S = [ T _ 1 , I _ 1 , T _ 2 , I _ 2 , . . . , T _ n , I _ n ] S = [T\_1, I\_1, T\_2, I\_2, ...,T\_n, I\_n] S=[T_1,I_1,T_2,I_2,...,T_n,I_n],其中T表示文本,I表示图像
- 先提取图像的视觉特征,并通过projector层与LLM的输入对齐,得到图像特征 H _ i m g H\_{img} H_img
- 文本序列经过word embedding得到text feature H t e x t H_{text} Htext
- 使用cross-attention融合 H i m g H_{img} Himg和LLM中不同层的文本特征 H t e x t i H_{text}^i Htexti(这就是文章中提出的:Hyper Attention Transformer Block,HATB,减少额外训的参数来,并提高训练效率;Qwen2中选择[0, 9, 17, 25]层插入HATB)
1.2 HATB(Hyper Attention Transformer Block)

传统的Flamingo Transformer Block存在的3个问题:
- 引入了大量额外的参数
- LLM学到的知识不能增强对于视觉输入的理解
- 交叉注意力没有完全考虑到图像在交错序列中的原始位置,限制了其在多图场景上的性能
HATB的结构:
- Shared Input Layernorm:共享输入的Layer Norm,虽然视觉和文本的特征来自不同的分布,但是实验证明直接使用集成在transormer block中的LN可以更好的收敛。这归功于LN输出的均值和方差与LLM输出的分布兼容(有点牵强)
- Modality-Specific Key-Value Projection:图像特征的query与self-atten共享,k-v由独立的隐射层产生
- Visual Position Modeling in Attention:开发了MI-Rope(Multimodal-Interleaved Rotary Position Embedding),对于图片n的视觉特征 I n I_n In,预先记录其在交错序列中的位置,然后计算其旋转编码Rope,这不仅能反映图片在序列中的位置关系,也能反映其在文本上下文中的位置。同时在cross-atten中使用causal attention mask
- Adaptive Gating:一个融合机制,融合cross-attn输出的图像特征和self-attn输出的文本特征,其具体做法是将图像特征送入一个全连接层,并对输出结果取sigmoid得到权重,再用这个权重来加权图像和文本特征:
g = S i g m o i d ( W g a t e T H i m g ) H f u s e d i = H i m g ∗ g + H t e x t i ∗ ( 1 − g ) g = Sigmoid(W_{gate}^T {H}^{img}) \\ H_{fused}^i = {H}_{img} * g + H_{text}^i * (1 - g) g=Sigmoid(WgateTHimg)Hfusedi=Himg∗g+Htexti∗(1−g)
核心点:visual feature不直接作为LLM的输入,而是在LLM中间几层参与计算,再与文本特征融合到一起,因此不会因为输入的图片多而导致超出LLM的最大输入限制。
2 训练细节


- Stage1: 多模态对齐训练,image-text pairs,冻结Visual encoder和LLM
- Stage2: 多图理解训练,image/video caption,冻结Visual encoder
- Stage3: 微调,混合单图、多图、视频数据,冻结Visual encoder
2.1 数据处理
- 高分辨率图像:
- 自适应裁剪,裁剪网格为 (2,2), (1,3), (1,4), (3,1), (4,1), (2,3), 和 (3,2)
- 保留全图
- 文本丰富的图片:100%裁剪
- 单图无文本:20%裁剪
- 多图和视频:不裁剪
- 视频处理:默认采样8帧,占位符为<|image|>,采样多少帧就多少个,这样可以与单图、多图的训练统
3 指标
3.1 图文理解指标

MMB-EN,MMB-CN,AI2D,MM-Vet指标均低于同量级的Qwen2vl-7B

3.2 视频理解指标
VideoQA测试时,mPLUG-Owl3抽帧128(V100-32G最大内存)

MVBench,VideoMME均低于同量级的Qwen2vl-7B。

4 Distractor Resistance Benchmark
用于评估多模态模型在长视觉context中的干扰抵抗能力,数据采样自MMBench。每个测试样本构成如下:
- 随机从MMBench-dev中采样N张图片作为干扰项
- 构建输入,其格式为Image 1: <|image|> Image 2: <|image|> … Image N: <|image|>. In Image X, {question},其中Image X表示与问题相关图片的索引,N取1, 5, 10, 20, 50, 100, 200, 400。
- 使用CircularEval来计算准确率分数
对于每个问题构造不同的测试样本:不同顺序的选项和多样化的干扰图片。干扰图片越多,其挑战越大。

实验结果证明mPLUG-Owl3具有比较强的抗干扰性。
5 总结
- mPLUG-Owl指标层面一般,与Qwen2VL-7B还有一定的差距
- 不过HATB的思路比较有趣,限制图片(视频帧)处理数量的瓶颈由之前的LLM的最大输入长度变成了GPU显存
相关文章:
【大模型系列】mPLUG-Owl3(2024.08)
Paper: https://arxiv.org/pdf/2408.04840Github: https://github.com/X-PLUG/mPLUG-OwlHuggingFace:https://huggingface.co/mPLUG/mPLUG-Owl3-7B-240728Author: Jiabo Ye et al. 阿里巴巴 文章目录 0 总结(省流版)1 模型结构1.1 Cross-attention Based Achitectur…...
从0到1学习node.js(express模块)
文章目录 Express框架1、初体验express2、什么是路由3、路由的使用3、获取请求参数4、电商项目商品详情场景配置路由占位符规则5、小练习,根据id参数返回对应歌手信息6、express和原生http模块设置响应体的一些方法7、其他响应设置8、express中间件8.1、什么是中间件…...
MambaVision
核心速览 研究背景 研究问题 :这篇文章提出了一种新的混合Mamba-Transformer骨干网络,称为MambaVision,专为视 觉应用量身定制。研究的核心问题是如何有效地结合Mamba的状态空间模型(SSM)和Transf ormer的自注意力机制…...
MySQLDBA修炼之道-开发篇(二)
四、开发进阶 1. 范式和反范式 范式是数据库规范化的一个手段,是数据库设计中的一系列原理和技术,用于减少数据库中的数据冗余,并增进数据的一致性。 范式 1.1 第一范式 第一范式是指数据库表的每一列(属性)都是不可…...
前端必备的环境搭建
一、nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置) 参考地址:nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置)-CSDN博客 说明: 1)关于nodejs目录不显示&a…...
SpringCloud笔记
什么是降级熔断?为什么要进行熔断? 熔断降级是一种分布式系统的保护机制,用于应对服务不稳定或不可用的情况。 熔断是指当某个服务的调用失败次数或异常比例达到一定阈值时,自动切断对该服务的调用,让请求快速失败&…...
优秀的程序员思考数据结构
原文地址:https://read.engineerscodex.com/p/good-programmers-worry-about-data 我最近在这篇很棒的 Stack Overflow 文章中看到了 Linus Torvalds(Linux 和 Git 的创建者)的一句话。(这篇文章回顾了那篇文章中的许多引述。 它…...
「C/C++」C/C++标准库之#include<cstdlib>通用工具库
✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…...
Oracle视频基础1.1.3练习
1.1.3 需求: 完整格式查看所有用户进程里的oracle后台进程 查看物理网卡,虚拟网卡的ip地址 ps -ef | grep oracle /sbin/ifconfig要以完整格式查看所有用户进程中的 Oracle 后台进程,并查看物理和虚拟网卡的 IP 地址,可以使用以下…...
python项目实战——多协程下载美女图片
协程 文章目录 协程协程的优劣势什么是IO密集型任务特点示例与 CPU 密集型任务的对比处理 I/O 密集型任务的方式总结 创建并使用协程asyncio模块 创建协程函数运行协程函数asyncio.run(main())aiohttp模块调用aiohttp模块步骤 aiofiles————协程异步函数遇到的问题一 await …...
基于.NET 8.0,C#中Microsoft.Office.Interop.Excel来操作office365的excel
开发环境: Visual Studio 2022 office365 项目模板:WPF应用程序 框架:.NET 8.0 依赖:Microsoft.Office.Interop.Excel 注意: 1.使用Microsoft.Office.Interop.Excel库时,服务器或电脑里面必须安装得…...
使用无线方式连接Android设备进行调试的两种方法
1.使用配对码配对设备方式 手机(或者平板等安卓设备)和电脑需连接在同一WiFi 下;保证 SDK 为最新版本(adb --version ≥ 30.0.0); step1.手机启用开发者选项和无线调试模式(会提示确认ÿ…...
Valgrind的使用
Valgrind 是一个强大的开源工具,用于检测程序中的内存错误、内存泄漏以及线程问题。它广泛应用于 C/C++ 等需要手动管理内存的编程语言中。以下内容将详细介绍 Valgrind 的安装、基本使用方法、常用命令及其输出结果的解析。 1. 什么是 Valgrind? Valgrind 是一个用于内存调…...
微信小程序瀑布流实现,瀑布流长度不均等解决方法
这是一开始实现的瀑布流,将数据分为奇数列和偶数列 <view class"content-left"><block wx:for"{{list}}" wx:key"list"><template isitem-data data{{...item}} wx:if"{{index % 2 0}}"></template&…...
Notepad++通过自定义语言实现日志按照不同级别高亮
借助Notepad的自定义语言可以实现日志的按照不同级别的高亮; 参考: https://blog.csdn.net/commshare/article/details/131208656 在此基础上做了一点修改效果如下: xml文件: <NotepadPlus><UserLang name"Ansibl…...
2024年四川省大学生程序设计竞赛 补题记录
文章目录 Problem A. 逆序对染色(思维树状数组)Problem B. 连接召唤(贪心)Problem E. L 型覆盖检查器(模拟)Problem F. 小球进洞:平面版(几何)Problem G. 函数查询Proble…...
17_事件的处理
目录 绑定事件与解绑事件优化事件的绑定和解绑方式处理不同事件类型的绑定处理同一事件类型多个事件处理函数事件冒泡与更新时机问题 绑定事件与解绑事件 既然要处理事件,那么首先面临的问题是如何在 vnode 中描述这个事件,在 vnode.props 中࿰…...
1FreeRTOS学习(队列、二值信号量、计数型信号量之间的相同点和不同点)
相同点: (1)传递区间 队列、二值信号量、计数型信号量均可用在任务与任务,任务与中断之间进行消息传递 (2) 传递方式 创建队列--发送队列--接受队列 创建二值信号量--发送二值信号量--接受二值信号量 创建计…...
数据库设计与范式及其应用
数据库设计是数据库管理系统(DBMS)中的核心环节,良好的数据库设计不仅可以提高数据存取的效率,还能增强数据的可维护性和一致性。范式(Normalization)是一种设计原则,用于减少数据冗余和提高数据…...
笔记-配置PyTorch(CUDA 12.2)
文章目录 前言一、安装 PyTorch(CUDA 12.2)1. 创建并激活 Conda 环境2. 安装 PyTorch(CUDA 12.2)3. 安装 torch_geometric 及依赖项4. 验证安装 总结 前言 一、安装 PyTorch(CUDA 12.2) 1. 创建并激活 Con…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
