Mini-Gemini: 探索多模态视觉语言模型的新境界

一、背景

        在数字化时代,人工智能的发展正以前所未有的速度推进。特别是在多模态学习领域,结合视觉和语言的能力已成为研究的热点。最近,一篇名为“Mini-Gemini: Mining the Potential of Multi-modality Vision Language Models”的文章在arXiv上发表,为我们展示了一个简单而有效的框架,旨在提升多模态视觉语言模型(VLMs)的性能。它即能直接提升图像感知能力,也能作为多模态环境下图像生成任务的前置prompt生成器。主要探索了如何增强图像全局感受野,以及探索了如何融合现有ocr工具来增强图像中文本感知能力。

论文:https://arxiv.org/pdf/2403.18814.pdf

代码:https://github.com/dvlab-research/MiniGemini

二、原理

本文的核心训练逻辑围绕Mini-Gemini框架的三个关键方面展开:高效的高分辨率解决方案、高质量数据和扩展应用。以下是这些方面的具体训练逻辑:

  1. 高效的高分辨率解决方案

    • 利用ConvNet作为HR视觉编码器,以高效地生成高分辨率候选图像,同时保持LLMs的视觉标记数量不变。
    • 通过双编码器系统(LR和HR)和注意力机制,使得在推理时,LR编码器生成视觉查询,而HR编码器提供候选键和值,从而在不增加计算负担的情况下增强视觉细节。
  2. 高质量数据

    • 通过整合来自不同公共资源的高质量数据集,确保数据的基础丰富多样。
    • 收集和生成基于公共资源的更多数据,包括高质量的响应、面向任务的指令和与生成相关的数据,以提高整体性能并扩展模型的能力。
  3. 扩展应用

    • 采用任何到任何(any-to-any)的范式,处理图像和文本作为输入和输出。
    • 集成最新的LLMs和生成模型,提升VLM性能和用户体验。
    • 支持并行图像和文本生成,通过无缝集成VLM与先进的生成模型,利用VLM指导图像生成,提供LLMs生成的文本。

训练过程

  • 实现Mini-Gemini时,使用CLIP预训练的ViTL作为LR视觉编码器,使用LAION预训练的ConvNext-L作为HR视觉编码器。
  • 为了高效训练,保持两个视觉编码器固定,并优化所有阶段的补丁信息挖掘投影器。
  • 在指令调整阶段,只优化LLM。
  • 使用AdamW优化器和余弦学习率调度策略进行模型优化,通常设置学习率为1e−3(模态对齐)和2e−5(指令调整),对于较大的模型(如Mixtral-8×7B和Hermes-2-Yi-34B),调整学习率以确保稳定的指令调整。
  • 训练在标准的机器配置上进行,对于最大的模型,使用DeepSpeed Zero3策略在4天内完成优化。

数据集

  • 模型优化使用的数据集主要包括1.2M图像标题对用于模态对齐,以及1.5M单轮或多轮对话用于指令调整。
  • 在多个零样本图像基准数据集上报告结果,包括VQAT、MMB、MME、MM-Vet、MMMU和MathVista等。

通过这种核心训练逻辑,Mini-Gemini框架能够有效地提升VLMs的性能,并在各种设置中实现先进的多模态任务处理能力。

三、效果

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

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

相关文章

05 MySQL--字段约束、事务、视图

1. CONSTRAINT 约束 创建表时,可以给表的字段添加约束,可以保证数据的完整性、有效性。比如大家上网注册用户时常见的:用户名不能为空。对不起,用户名已存在。等提示信息。 约束包括: 非空约束:not null检…

【C++类和对象】const成员函数及流插入提取

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

Java一键发送邮件:封装好的工具类详解

一、引言 在Java应用中,邮件发送功能经常用于通知、验证等场景。然而,每次发送邮件都需要编写大量的代码来配置SMTP服务器、认证信息、邮件内容等,这不仅效率低下,而且容易出错。为了解决这个问题,我们可以封装一个邮…

Elasticsearch 开放 inference API 增加了对 OpenAI chat completions 的支持

作者:Tim Grein 我们很高兴地宣布在 Elasticsearch 中推出的最新创新:在 Elastic 的 inference API 中集成了 OpenAI Chat Completions 功能。这一新特性标志着我们在整合尖端人工智能能力至 Elasticsearch 的旅程中又迈出了一步,提供了生成类…

凭证自动拆分

凭证自动拆分 一、设置拆分中间科目 OBX2配置凭证拆分的中间科目 二、销售开票凭证拆分 SE18创建BADI "FI_BILL_ISSUE_SPLIT"的实施 修改实施类:ZCL_FI_BILL_ISSUE_SPLIT中IF_EX_FI_BILL_ISSUE_SPLIT~ACTIVATE_AUTOMATIC_SPLIT方法,代码…

ruoyi-vue前端的一些自定义插件介绍

文章目录 自定义列表$tab对象打开页签关闭页签刷新页签 $modal对象提供成功、警告和错误等反馈信息(无需点击确认)提供成功、警告和错误等提示信息(类似于alert,需要点确认)提供成功、警告和错误等提示信息&#xff08…

vue 的生命周期--图解

生命周期函数中的this指向是vm 或 组件实例对象。 常用的生命周期钩子: mounted: 发送ajax请求、启动定时器、绑定自定义事件、订阅消息等【初始化操作】。beforeDestroy: 清除定时器、解绑自定义事件、取消订阅消息等【收尾工作】。 关于销毁Vue实例 销毁后借助Vu…

常见排序算法(插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序,基数排序,桶排序)

一.排序的概念 1.排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作 2.稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排…

Basic TCP Server Client

Server #include <stdio.h> #include <string.h> #include <unistd.h> // read and write (TCP); sendto and recvfrom (UDP) #include <arpa/inet.h> // 包含#include <sys/socket.h>int main(int argc, char* argv[]) {// 1. 创建监听fdint f…

【C++】List容器(2)-内存管理-创建-插入-删除-遍历-排序-查找-底层分析-构造和析构函数-内存泄漏等

std::list 是 C STL 中的一种双向链表容器&#xff0c;它提供了一系列的迭代器来访问元素&#xff0c;包括前方迭代器、后方迭代器和const迭代器。std::list 采用双向链表实现&#xff0c;每个节点都存储了数据以及两个指向前一个节点和后一个节点的指针。 内存管理 在 C 中&…

MATLAB设置变量

您可以通过简单的方式分配变量。例如&#xff0c; 示例 x 3 %定义x并用值初始化它 MATLAB将执行上述语句并返回以下结果- x 3 它创建一个名为x的1乘1矩阵&#xff0c;并将值3存储在其元素中。再举一个实例&#xff0c; 示例 x sqrt(16) %定义x并用表达式初始化它 MATLAB将…

自动化测试Selenium(3)

目录 WebDriver相关API 打印信息 打印title 打印url 浏览器的操作 浏览器最大化 设置浏览器的宽,高 操作浏览器的前进, 后退, 刷新 控制浏览器滚动条 键盘事件 键盘单键用法 键盘组合按键用法 鼠标事件 WebDriver相关API 打印信息 打印title 即打印该网址的标题.…

在PostgreSQL中,如何创建一个触发器并在特定事件发生时执行自定义操作?

文章目录 解决方案示例代码1. 创建自定义函数2. 创建触发器 解释 在PostgreSQL中&#xff0c;触发器&#xff08;trigger&#xff09;是一种数据库对象&#xff0c;它能在特定的事件&#xff08;如INSERT、UPDATE或DELETE&#xff09;发生时自动执行一系列的操作。这些操作可以…

css-Echarts图表初始显示异常非完全显示

1.echarts图表初始加载异常 2.问题原因 初次加载时&#xff0c;由于外层使用%比 echarts dom元素没有完全加载完成&#xff0c;canvas绘画继承本身宽高&#xff0c;造成Echarts图表初始显示异常非完全显示。 3.使用echarts图表可参考以下代码&#xff08;实现一定的自适应&am…

* 玩转数据魔方Plotly Express实战8例

大家好&#xff01;今天我们要一起探索Plotly Express这个超级棒的数据可视化神器。想象一下&#xff0c;你的数据故事能以炫酷图表的形式跃然纸上&#xff0c;是不是很兴奋&#xff1f;Plotly Express就像魔法棒&#xff0c;让复杂数据瞬间变得生动起来。接下来&#xff0c;让…

mac qt android开发环境

1,安装Android Studio 下载 Android Studio 和应用工具 - Android 开发者 | Android Developers (google.cn)

MyBatis 核心配置讲解(上)

大家好&#xff0c;我是王有志&#xff0c;一个分享硬核 Java 技术的互金摸鱼侠。 前两篇的文章中我们分别介绍了 MyBatis 和 MyBaits 的应用组成&#xff0c;到这里基础篇的内容就结束了。 从今天开始&#xff0c;我们正式进入 MyBatis 学习的第二阶段&#xff1a;MyBatis 的…

Linux网络实战(一)- DNS配置

Linux网络实战&#xff08;一&#xff09;- DNS配置 1 Linux 本机DNS配置编程要求预期输出输入 2 安装DNS服务软件编程要求测试说明输入 3 DNS服务器启动/关闭编程要求测试说明输入 4 DNS服务器配置编程要求测试说明输入 1 Linux 本机DNS配置 编程要求 在右侧命令行中配置本地…

【Qt 学习笔记】Qt常用控件 | 显示类控件LCD Number的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 显示类控件LCD Number的使用及说明 文章编号&#xff1a…

“华为杯“华南理工大学程序设计竞赛(同步赛)

目录 最长回文子串 又一道好题 信号塔 网格树 异色边2 M 最长回文子串 构造马拉车 #define int long long//__int128 2^127-1(GCC) #define PII pair<int,int> //#define f first //#define s second const int inf 0x3f3f3f3f3f3f3f3f, N 1e5 5, mod 1e9 7;…