当前位置: 首页 > news >正文

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

image.png

  • 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 模型结构

image.png

  • 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)

image.png
传统的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=Himgg+Htexti(1g)

核心点:visual feature不直接作为LLM的输入,而是在LLM中间几层参与计算,再与文本特征融合到一起,因此不会因为输入的图片多而导致超出LLM的最大输入限制。

2 训练细节

image.png

image.png

  • 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
Qwen2vl指标

3.2 视频理解指标

VideoQA测试时,mPLUG-Owl3抽帧128(V100-32G最大内存)
image.png

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来计算准确率分数

对于每个问题构造不同的测试样本:不同顺序的选项和多样化的干扰图片。干扰图片越多,其挑战越大。
image.png
实验结果证明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&#xff1a;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、小练习&#xff0c;根据id参数返回对应歌手信息6、express和原生http模块设置响应体的一些方法7、其他响应设置8、express中间件8.1、什么是中间件…...

MambaVision

核心速览 研究背景 研究问题 &#xff1a;这篇文章提出了一种新的混合Mamba-Transformer骨干网络&#xff0c;称为MambaVision&#xff0c;专为视 觉应用量身定制。研究的核心问题是如何有效地结合Mamba的状态空间模型&#xff08;SSM&#xff09;和Transf ormer的自注意力机制…...

MySQLDBA修炼之道-开发篇(二)

四、开发进阶 1. 范式和反范式 范式是数据库规范化的一个手段&#xff0c;是数据库设计中的一系列原理和技术&#xff0c;用于减少数据库中的数据冗余&#xff0c;并增进数据的一致性。 范式 1.1 第一范式 第一范式是指数据库表的每一列&#xff08;属性&#xff09;都是不可…...

前端必备的环境搭建

一、nvm安装详细教程&#xff08;安装nvm、node、npm、cnpm、yarn及环境变量配置&#xff09; 参考地址&#xff1a;nvm安装详细教程&#xff08;安装nvm、node、npm、cnpm、yarn及环境变量配置&#xff09;-CSDN博客 说明&#xff1a; 1&#xff09;关于nodejs目录不显示&a…...

SpringCloud笔记

什么是降级熔断&#xff1f;为什么要进行熔断&#xff1f; 熔断降级是一种分布式系统的保护机制&#xff0c;用于应对服务不稳定或不可用的情况。 熔断是指当某个服务的调用失败次数或异常比例达到一定阈值时&#xff0c;自动切断对该服务的调用&#xff0c;让请求快速失败&…...

优秀的程序员思考数据结构

原文地址&#xff1a;https://read.engineerscodex.com/p/good-programmers-worry-about-data 我最近在这篇很棒的 Stack Overflow 文章中看到了 Linus Torvalds&#xff08;Linux 和 Git 的创建者&#xff09;的一句话。&#xff08;这篇文章回顾了那篇文章中的许多引述。 它…...

「C/C++」C/C++标准库之#include<cstdlib>通用工具库

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「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 需求&#xff1a; 完整格式查看所有用户进程里的oracle后台进程 查看物理网卡&#xff0c;虚拟网卡的ip地址 ps -ef | grep oracle /sbin/ifconfig要以完整格式查看所有用户进程中的 Oracle 后台进程&#xff0c;并查看物理和虚拟网卡的 IP 地址&#xff0c;可以使用以下…...

python项目实战——多协程下载美女图片

协程 文章目录 协程协程的优劣势什么是IO密集型任务特点示例与 CPU 密集型任务的对比处理 I/O 密集型任务的方式总结 创建并使用协程asyncio模块 创建协程函数运行协程函数asyncio.run(main())aiohttp模块调用aiohttp模块步骤 aiofiles————协程异步函数遇到的问题一 await …...

基于.NET 8.0,C#中Microsoft.Office.Interop.Excel来操作office365的excel

开发环境&#xff1a; Visual Studio 2022 office365 项目模板&#xff1a;WPF应用程序 框架&#xff1a;.NET 8.0 依赖&#xff1a;Microsoft.Office.Interop.Excel 注意&#xff1a; 1.使用Microsoft.Office.Interop.Excel库时&#xff0c;服务器或电脑里面必须安装得…...

使用无线方式连接Android设备进行调试的两种方法

1.使用配对码配对设备方式 手机&#xff08;或者平板等安卓设备&#xff09;和电脑需连接在同一WiFi 下&#xff1b;保证 SDK 为最新版本&#xff08;adb --version ≥ 30.0.0&#xff09;&#xff1b; step1.手机启用开发者选项和无线调试模式&#xff08;会提示确认&#xff…...

Valgrind的使用

Valgrind 是一个强大的开源工具,用于检测程序中的内存错误、内存泄漏以及线程问题。它广泛应用于 C/C++ 等需要手动管理内存的编程语言中。以下内容将详细介绍 Valgrind 的安装、基本使用方法、常用命令及其输出结果的解析。 1. 什么是 Valgrind? Valgrind 是一个用于内存调…...

微信小程序瀑布流实现,瀑布流长度不均等解决方法

这是一开始实现的瀑布流&#xff0c;将数据分为奇数列和偶数列 <view class"content-left"><block wx:for"{{list}}" wx:key"list"><template isitem-data data{{...item}} wx:if"{{index % 2 0}}"></template&…...

Notepad++通过自定义语言实现日志按照不同级别高亮

借助Notepad的自定义语言可以实现日志的按照不同级别的高亮&#xff1b; 参考&#xff1a; https://blog.csdn.net/commshare/article/details/131208656 在此基础上做了一点修改效果如下&#xff1a; xml文件&#xff1a; <NotepadPlus><UserLang name"Ansibl…...

2024年四川省大学生程序设计竞赛 补题记录

文章目录 Problem A. 逆序对染色&#xff08;思维树状数组&#xff09;Problem B. 连接召唤&#xff08;贪心&#xff09;Problem E. L 型覆盖检查器&#xff08;模拟&#xff09;Problem F. 小球进洞&#xff1a;平面版&#xff08;几何&#xff09;Problem G. 函数查询Proble…...

17_事件的处理

目录 绑定事件与解绑事件优化事件的绑定和解绑方式处理不同事件类型的绑定处理同一事件类型多个事件处理函数事件冒泡与更新时机问题 绑定事件与解绑事件 既然要处理事件&#xff0c;那么首先面临的问题是如何在 vnode 中描述这个事件&#xff0c;在 vnode.props 中&#xff0…...

1FreeRTOS学习(队列、二值信号量、计数型信号量之间的相同点和不同点)

相同点&#xff1a; &#xff08;1&#xff09;传递区间 队列、二值信号量、计数型信号量均可用在任务与任务&#xff0c;任务与中断之间进行消息传递 &#xff08;2&#xff09; 传递方式 创建队列--发送队列--接受队列 创建二值信号量--发送二值信号量--接受二值信号量 创建计…...

数据库设计与范式及其应用

数据库设计是数据库管理系统&#xff08;DBMS&#xff09;中的核心环节&#xff0c;良好的数据库设计不仅可以提高数据存取的效率&#xff0c;还能增强数据的可维护性和一致性。范式&#xff08;Normalization&#xff09;是一种设计原则&#xff0c;用于减少数据冗余和提高数据…...

笔记-配置PyTorch(CUDA 12.2)

文章目录 前言一、安装 PyTorch&#xff08;CUDA 12.2&#xff09;1. 创建并激活 Conda 环境2. 安装 PyTorch&#xff08;CUDA 12.2&#xff09;3. 安装 torch_geometric 及依赖项4. 验证安装 总结 前言 一、安装 PyTorch&#xff08;CUDA 12.2&#xff09; 1. 创建并激活 Con…...

探究在 Android 设备上利用 Termux 安装 llama.cpp 并启动 webui

嘿&#xff0c;各位技术爱好者们&#xff01;我们总是渴望在各种设备上挖掘更多的可能性。Android 设备作为我们日常生活中最常用的工具之一&#xff0c;除了能用来刷剧、聊天&#xff0c;还能变身强大的 “小电脑” 来运行一些有趣的程序。今天&#xff0c;我们就来探索一下如…...

基于STM32的触控USB鼠标设计

一、系统概述与核心功能 1. 系统定位 基于STM32的触控USB鼠标以“触摸输入采集-坐标转换-USB HID协议封装-即插即用”为核心&#xff0c;将触摸传感器&#xff08;电容/电阻式&#xff09;的触摸位置、手势动作转换为标准USB鼠标事件&#xff08;移动、点击、滚动&#xff09;&…...

别再只用DESAT了!手把手教你为SiC MOSFET搭建一个600ns内响应的快速短路保护电路

SiC MOSFET短路保护方案升级&#xff1a;600ns快速响应电路设计实战 在电力电子设计领域&#xff0c;SiC MOSFET因其优异的开关性能和高温耐受性正逐步取代传统硅基器件。然而&#xff0c;其较小的芯片面积和更高的电流密度也带来了更严峻的短路保护挑战——商用SiC MOSFET的短…...

旅游推荐系统 Python+Django+Vue.js

博主说明&#xff1a;本文项目编号 25009 &#xff0c;文末自助获取源码 \color{red}{25009&#xff0c;文末自助获取源码} 25009&#xff0c;文末自助获取源码 目录 一、系统介绍1.1 需求分析1.1.1 用户功能描述1.1.2 管理员功能描述 1.2 技术栈 二、演示录屏三、启动教程四、…...

如何为你的数字生活留下永恒印记:WeChatMsg项目完全解析

如何为你的数字生活留下永恒印记&#xff1a;WeChatMsg项目完全解析 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeC…...

Windows上安装安卓应用的终极指南:告别模拟器的轻量级解决方案

Windows上安装安卓应用的终极指南&#xff1a;告别模拟器的轻量级解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾在Windows电脑上想要运行安卓应用&a…...

香橙派系统镜像高效备份与批量烧录实战指南

1. 香橙派系统镜像备份的必要性与场景分析 第一次拿到香橙派开发板时&#xff0c;很多人都会直接使用官方提供的系统镜像。但随着使用深入&#xff0c;我们往往需要安装各种软件、配置开发环境、部署项目代码。这时候如果每次交付新设备都要从头配置&#xff0c;不仅耗时费力&a…...

别再只用NDVI了!用Python+Sentinel-2数据实战对比5种常用植被指数(附代码)

别再只用NDVI了&#xff01;用PythonSentinel-2数据实战对比5种常用植被指数&#xff08;附代码&#xff09; 遥感植被指数是农业、林业和生态监测的重要工具。许多从业者习惯性地使用NDVI&#xff08;归一化差异植被指数&#xff09;作为"万能指标"&#xff0c;但实…...

Qwen3-VL-8B教育应用:为视障学生实时解说教材插图,打开视觉之窗

Qwen3-VL-8B教育应用&#xff1a;为视障学生实时解说教材插图&#xff0c;打开视觉之窗 想象一下&#xff0c;当一位视障学生翻开一本物理教材&#xff0c;面对描绘“光的折射”原理的复杂插图时&#xff0c;他只能依靠文字描述去想象那个看不见的世界。传统的辅助方式&#x…...

健康160自动挂号工具终极指南:5分钟掌握全自动抢号技巧

健康160自动挂号工具终极指南&#xff1a;5分钟掌握全自动抢号技巧 【免费下载链接】91160-cli 健康160全自动挂号脚本&#xff0c;捡漏神器 项目地址: https://gitcode.com/gh_mirrors/91/91160-cli 还在为健康160平台抢号难而烦恼吗&#xff1f;热门医生的号源总是秒光…...