MLLM | Mini-Gemini: 挖掘多模态视觉语言大模型的潜力

news2025/1/15 23:38:23

香港中文、SmartMore

论文标题:Mini-Gemini: Mining the Potential of Multi-modality Vision Language Models

Code and models are available at https://github.com/dvlab-research/MiniGemini

一、问题提出

通过更高分辨率的图像增加视觉标记的数量可以丰富LLM中的视觉嵌入。然而,这种改进伴随着计算需求和相关成本的不断增加,特别是在处理多个图像时。此外,现有的数据质量、模型能力和应用范围仍然不足以加速训练和开发过程。这种情况引发了一个关键的问题:如何在学术环境中以可接受的成本推动 VLM 接近成熟的模型?

为了回答这个问题,从三个战略方面探讨了VLM的潜力,即高效高分辨率解决方案、高质量数据和扩展程序。

二、Mini-Gemini

1、Dual Vision Encoders

Mini-Gemini的框架在概念上:利用双视觉编码器来提供低分辨率的和高分辨率的视觉嵌入;提出patch信息挖掘以在高分辨率区域和低分辨率视觉query之间进行patch-level挖掘;LLM用于将文本与图像结合起来,同时进行理解和生成。

高分辨率图像、低分辨率图像(高分辨率双线性插值而来),然后双编码器并行处理成多网格视觉嵌入。对于LR,使用CLIP vit,这样,N个视觉块之间的长程关系就可以很好地保留下来,以便后续在LLM中进行交互。对于HR,采用基于 CNN 的编码器进行自适应且高效的 HR 图像处理。使用 LAION 预训练 ConvNeXt作为 HR 视觉编码器。因此,可以通过将不同卷积阶段的特征上采样并concate到1/4输入尺度来获得HR特征图。

2、Patch Info Mining

为了维持 LLM 中最终visual tokens的数量以提高效率,将低分辨率LR的visual embedding作为query,高分辨率HR作为Key和Value,旨在从 HR  visual embedding中检索相关视觉线索。Q 中的低分辨率块与 K 和 V 中相应的高分辨率子区域相关,包含 M^2 个像素级特征。因此,patch信息挖掘过程可以表述为:

其中 φ和 MLP 分别表示a projection layer和multi-layer perceptron。

如图 3a 所示,该公式封装了合成和细化视觉线索的过程,从而生成增强的视觉标记 Tv,用于后续的 LLM 处理。它确保每个query的挖掘仅限于 HR 具有 M^2 个特征的相应子区域,从而保持效率。这种设计允许在不扩展视觉标记数量的情况下提取 HR 细节,保持细节丰富度和计算可行性之间的平衡。

此外,还支持视觉令牌扩展。如图 3b 所示,可以将视觉标记扩展到 5N 以捕获更多细节。这是通过将原始图像与其 2× 放大的对应图像合并来实现的,从而产生批量输入 XL∈R5×H′×W′×3。可以使用 LR 视觉编码器得到编码后的视觉嵌入 X′ L ∈ R5×N×C,如第 3.1 节所述。

3、Text and Image Generation

通过挖掘的视觉标记 Tv 和输入文本标记 Tt ,将它们拼接起来作为 LLM 的输入以进行自回归生成。Mini-Gemini 支持纯文本和文本图像生成作为输入和输出,即任意到任意的推理。Mini-Gemini 将用户指令转化为高质量的prompt,从而在潜在扩散模型中生成上下文相关的图像。这种方法反映在后续的高质量图像生成框架中,例如DALLE 3和SORA,它们利用VLM的生成和理解能力来获取用于生成任务的更高质量的文本条件。

Text-image Instructions.

为了更好的跨模态对齐和指令微调,从公开来源收集高质量的数据集。特别是,对于跨模态对齐,利用来自 LLaVA 过滤的 CC3M 数据集的 558K 图像标题对和来自 ALLaVA 数据集的 695K 采样的 GPT-4V response caption。至于指令微调,从 LLaVA数据集中采样了 643K 单轮和多轮对话(不包括 21K TextCaps数据),从 ShareGPT4V中采样了 100K QA 对,从 ShareGPT4V中采样了 10K LAION-GPT-4V 字幕、来自 ALLaVA 数据集的 700K GPT-4V 响应指令对,以及来自 LIMA和 OpenAssistant2的 6K 纯文本多轮对话。为了增强 OCR 相关能力,进一步收集了 28K QA 对,其中包括 10K DocVQA、4K ChartQA、10K DVQA 和 4K AI2D数据。一般来说,图像理解大约有 1.5M 的指令相关对话。此外,还收集了 13K 对用于图像相关的生成。

Generation-related Instructions.

为支持图像生成,使用 GPT-4 Turbo 进一步构建了 13K 指令数据集。如图 4 所示,训练数据包含两个任务:(a)简单指令重述:采用 LAION-GPT-4V 中的 8K 描述性图像标题,让 GPT-4 逆向推断相应用户的短输入和稳定扩散 (SD) 域中的目标标题。 (b) 上下文提示生成:基于 LIMA和 OpenAssistant2中的一些高质量的真实对话上下文,生成提示,生成适合对话上下文的图像,总共带来 5K 条指令。对于这两种数据,在每次对 GPT-4 的query中,从 GigaSheet 中随机采样 5 个高质量 SD 文本到图像提示作为上下文示例,以获得生成的目标提示。格式化数据以使用 <GEN> 作为触发器来启动生成过程并将目标标题包装在 <h>...</h> 内。文本生成后,Mini-Gemini 提取目标标题并利用 SDXL生成相应的图像。

三、实验

1、Implementation Details.

为高效训练,固定两个视觉编码器,并优化各个阶段的Patch Info Mining的projector。同时,仅在指令调优阶段对LLM进行优化。使用 AdamW 优化器和余弦学习计划优化 1 epoch 的所有模型。在大多数情况下,模态对齐和指令调整的初始学习率分别设置为 1e−3 和 2e−5,Mixtral-8×7B 和 Hermes-2-Yi-34B 的调整率为 1e−5确保指令调优稳定。该框架涉及在标准机器配置的 8 个 A800 GPU 上进行训练。对于最大的模型 Hermes-2-Yi-34B,利用 4 台机器,使用 DeepSpeed Zero3 策略在 2 天内完成优化。对于HD版本,由于LLM视觉令牌的扩展,总成本增加到大约4天。

对于模型优化,构建高质量数据以进行跨模态理解和生成。它主要包括用于模态对齐的 1.2M 标题对和用于指令调整的 1.5M 单轮或多轮对话。

2、Main Results

Normal Resolution

在多种设置(包括正常分辨率和高分辨率)下与之前的领先方法进行了比较,并且还考虑了私有模型。在正常分辨率下,Mini-Gemini 在各种LLM中始终优于现有模型。

High Resolution

为验证扩展视觉标记的框架,对表 1 中 LR 视觉编码器的输入大小为 672,HR 视觉编码器的输入大小为 1536 进行实验。尽管分辨率提高了,LLM 处理的视觉标记的有效数量仍然与 LR 输入大小 672 保持一致,确保了计算效率。这种方法的好处在注重细节的任务中尤其明显。

3、Component-wise Analysis

Patch Info Mining

通过集成 ConvNeXt-L 作为 HR 图像的视觉编码器获得了显着的收益。

Vision Encoder

与默认的ConvNeXt-L相比,添加了两个编码器进行对比试验,即ConvNeXt-B和ConvNeXt-XXL。借助基本的 ConvNeXt-B,模型在 TextVQA 和 MM-Vet中表现更好。然而,ConvNeXt-L 编码器始终提供峰值结果,尤其是在 MME 和 MM-Vet 数据集中,表明在处理详细视觉信息方面具有卓越的平衡。可以从表中得出结论,HR 图像的较大视觉编码器对候选质量的贡献更大,但模型会与 ConvNeXt-XXL 等过大的编码器收敛。因此,考虑到有效性和计算效率之间的平衡,选择ConvNeXt-L作为默认的HR视觉编码器。这一决定是基于其提供高质量视觉信息挖掘的能力,同时保持合理的计算需求,跨基准的比较性能证明了这一点。

High-quality Data

高质量的数据对于提升LLM和VLM能力的重要性怎么强调都不为过。

Visual Token Extension

如图 3b 所示,扩展的视觉标记,从而在不同的输入分辨率下推广其实用性。我们在表 3 中验证了有效性。当增加 LR 和 HR 输入分辨率时,该模型在所有基准测试中都取得了显着的增益。分辨率的提高显着减少了幻视,从而使图像理解更加准确和可靠。一般来说,随着视觉令牌数量的增加,Mini-Gemini 可以扩展到更好的能力。

4、Qualitative Results

Visual Understanding

为确定 Mini-Gemini 在现实环境中的视觉理解能力,将其应用于图 5 中的各种理解和推理任务。得益于补丁信息挖掘和高质量的数据,Mini-Gemini 可以很好地解决多种复杂情况。

Image Generation

对Mini-Gemini的生成能力进行了全面评估。与最近的研究(例如 AnyGPT和 ChatIllusion)相比,更强的多模态理解能力使模型能够生成与给定指令更好地对齐的文本到图像标题,从而产生更适合上下文的图像文本答案。如图  6 所示,它能够熟练地基于多模式人类指令和纯文本训练数据生成高质量内容。这一能力凸显了 Mini-Gemini 强大的图像文本对齐和语义解释能力,这些能力在推理阶段有效发挥作用。利用LLM强大的推理能力,可以在单轮或多轮对话中产生合理的图文输出。

四、Conclusion and Discussion

仍有很大的潜力需要进一步挖掘。对于视觉理解来说,计数能力和复杂的视觉推理能力还远远不能令人满意。这可能是由于缺乏相应的训练数据,特别是在预训练阶段。同时,对于基于推理的生成,在这项工作中使用文本来桥接 VLM 和扩散模型,因为没有发现基于嵌入的方法有明显的增益。将尝试寻找一种更先进的方式来进行视觉理解、推理和生成。

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

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

相关文章

ScanNet 数据集常见文件的作用极其读取方式

ScanNet 数据集是一个大规模的 RGB-D 视频数据集&#xff0c;它包含了丰富的三维场景理解任务所需的数据&#xff0c;如三维物体分类、语义体素标签和 CAD 模型检索等。数据集中的每个文件都有特定的作用&#xff0c;以下是一些常见文件及其作用的解释&#xff1a; _vh_clean.p…

【八股文】Spring 谈谈你对AOP的理解

AOP AOP(Aspect-Oriented Programming&#xff0c;面向切面编程)&#xff1a;是一种新的方法论&#xff0c;是对传统 OOP(Object-Oriented Programming&#xff0c;面向对象编程)的补充。 面向对象是纵向继承&#xff0c;面向切面是横向抽取。 OOP思想是一种垂直纵向的继承体…

C# DataSet结合FlyTreeView显示树状模型数据

目录 关于 FlyTreeView DataSet 数据准备 涉及表结构创建脚本 范例运行环境 方法设计 代码实现 方法代码 调用示例 小结 关于 FlyTreeView NineRays.WebControls.FlyTreeView 是 9rays.net 推出的一款功能强大的树状模型数据显示控件&#xff0c;本文将介绍使用其 As…

运营高手都在用的9款办公软件!一定要收藏

最近&#xff0c;运营群里的00后天天都在搞新花样&#xff0c;每天都有新的idea&#xff0c;各种跟热点、做品牌联名、拍好玩的视频、做创意海报……。但奇怪的是&#xff0c;工作量增加了、业绩增长了&#xff0c;却不见有人加班。一问&#xff0c;原来因为用上了办公神器啊&a…

通过使用XShell工具、Nginx环境实现服务器项目构建与发布

前言&#xff1a; 在信息化和数字化的今天&#xff0c;网站和应用的构建与发布已成为企业发展的重要一环。为了确保项目的顺利上线和稳定运行&#xff0c;选择合适的工具和环境至关重要。本文将详细介绍如何通过XShell工具以及Nginx环境来实现服务器项目的构建与发布&#xff0…

数据洞察创新挑战赛之智能运维赛参赛攻略--皮卡丘的皮卡

关联比赛: 数据洞察创新挑战赛之智能运维赛 背景和参赛动机 1.个人背景和专业领域 四川大学本科&#xff0c;中南大学研究生&#xff0c;专业是医学图像处理。目前就职于深信服&#xff0c;主要做云安全相关的业务开发工作。 2.何时开始关注和参与数据科学竞赛&#xff1f…

IDEA插件-通义灵码 VS ChatGPT-EasyCode

智能编码助手新时代&#xff1a;通义灵码 vs ChatGPT-EasyCode 随着人工智能技术的飞速发展&#xff0c;智能编码助手逐渐成为程序员的必备工具。它们可以帮助程序员提高编码效率&#xff0c;降低代码缺陷率&#xff0c;并解放创造力。 目前市场上涌现出了众多智能编码助手&a…

如何在Windows 10中打开和自定义搜索?这里提供详细步骤

使用Windows 10中的搜索功能&#xff0c;你可以快速查找计算机上的文件、应用程序或设置。在本文&#xff0c;你可以学习如何在Windows 10中打开和控制搜索。 打开Windows 10搜索面板 打开Windows 10搜索面板很容易。通常&#xff0c;你可以在任务栏上找到搜索图标。只需单击…

Redis篇:缓存击穿及解决方案

1.何为缓存击穿 缓存击穿问题也叫热点Key问题&#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了&#xff08;有可能是正好过期了&#xff09;&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击。 常见的解决方案有两种&#xff1a; 互斥锁 逻…

仓库管理存在的问题及改进对策?

大部分人都指导仓库问题会影响一个仓库操作或与之相关的整个流程链的速度、效率和生产力。但在大多数情况下&#xff0c;只有在流程开始甚至完成后才能识别这些错误。 到那时通常已经来不及阻止错误了&#xff0c;甚至可能来不及减少造成的损害。 所以这也是我写这篇内容的目…

C++-DAY1

思维导图 有以下定义&#xff0c;说明哪些量可以改变哪些不可以改变&#xff1f; const char *p; const (char *) p; char *const p; const char* const p; char const *p; (char *) const p; char const* const p; const char *p&#xff1a;指针 p 所指向的内容不可改…

mybatis 生成器,是否功能实现,需写测试类

一、看视频步骤 请按视频流程走 mybatis-18-CSDN直播 二、视频报错 解决思路 网址&#xff1a; 使用配置 | MyBatis-Plus (baomidou.com) 添加代码&#xff1a; 效果图&#xff1a;√ Tests passed: 前面✔&#xff0c;表示正确。 1为最终结果

揭开ChatGPT面纱(1):准备工作(搭建开发环境运行OpenAI Demo)

文章目录 序言&#xff1a;探索人工智能的新篇章一、搭建开发环境二、编写并运行demo1.代码2.解析3.执行结果 本博客的gitlab仓库&#xff1a;地址&#xff0c;本博客对应01文件夹。 序言&#xff1a;探索人工智能的新篇章 随着人工智能技术的飞速发展&#xff0c;ChatGPT作为…

代码随想录训练营Day 29|Python|Leetcode|● 860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球

860.柠檬水找零 在柠檬水摊上&#xff0c;每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品&#xff0c;&#xff08;按账单 bills 支付的顺序&#xff09;一次购买一杯。 每位顾客只买一杯柠檬水&#xff0c;然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确…

【Python-类型注解】

Python-类型注解 ■ Python-类型注解■ 类型注解■ 数据类型注解■ 容器类型注解 ■ 函数方法■ 方法形参类型注解 (形参名&#xff1a;类型)■ 方法返回值类型注解 ( -> 返回值类型) ■ # type:类型 &#xff08;在注释中进行类型注解&#xff09;■ Union类型 &#xff08…

指令和界面【Linux】

指令和界面 前言一、指令 vs 界面交互的需求满足需求的第一阶段——指令满足需求的第二阶段-界面时间 二、指令和界面交互区别为什么要学命令行总结 前言 Linux操作系统提供了丰富的命令行界面和图形用户界面工具&#xff0c;用户可以根据自己的需求选择适合的界面进行操作。命…

使用 ECharts 绘制咖啡店各年订单的可视化分析

使用 ECharts 绘制咖啡店各年订单的可视化分析 在这篇博客中&#xff0c;我将分享一段使用 ECharts 库创建可视化图表的代码。通过这段代码&#xff0c;我们可以直观地分析咖啡店各年订单的情况。 饼图 这段代码包含了两个 ECharts 图表&#xff0c;一个是饼图&#xff0c;用…

【C++庖丁解牛】C++11---右值引用和移动语义

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1 左值引用和右值引用2 左…

手把手教数据结构与算法:有序线性表设计

问题描述 设计一个有序线性表类&#xff0c;要求完成初始化&#xff0c;插入和遍历功能&#xff0c;使得表内元素实现有序排列&#xff08;从小到大&#xff09;。同时实现合并功能&#xff0c;使得两个线性表能够合并为一个线性表&#xff08;可能存在重复元素&#xff09;。…

Redis中的缓存击穿、缓存穿透、缓存雪崩问题

1.什么是缓存击穿&#xff1f; 客户端恶意访问一个不存在的数据&#xff0c;从而造成穿透缓存&#xff0c;请求直接到达数据库&#xff0c;频繁的发送这一类的请求&#xff0c;直接查询数据库&#xff0c;数据库的压力变大。 1.1如何解决缓存击穿呢&#xff1f; 1&#xff0…