上海AI Lab开源首个可替代GPT-4V的多模态大模型
与开源和闭源模型相比,InternVL 1.5 在 OCR、多模态、数学和多轮对话等 18 个基准测试中的 8 个中取得了最先进的结果。
上海AI Lab 推出的 InternVL 1.5 是一款开源的多模态大语言模型 (MLLM),旨在弥合开源模型和专有商业模型在多模态理解方面的能力差距。

论文称,InternVL 1.5 在四个特定基准测试中超越了 Grok-1.5V、GPT-4V、Claude-3 Opus 和 Gemini Pro 1.5 等领先的闭源模型,特别是在与 OCR 相关的数据集中。
GPT-3.5研究测试:
yeschat
GPT-4研究测试:
Hello, LLMs
Claude-3研究测试(全面吊打GPT-4):
AskManyAI
论文用下面一张图非常生动地展示了他们为 达到 AGI 星球 所做的努力:

图中主要涉及 InternVL 的三个改进:(1)强视觉编码器:为大规模视觉基础模型 InternViT-6B 探索了一种持续学习策略,提高了其视觉理解能力,并使其可以在不同的LLM中迁移和重用。(2)动态高分辨率:根据输入图像的长宽比和分辨率,将图像划分为1到40个448×448像素的图块,最高支持4K分辨率输入。(3)高质量的双语数据集:收集了高质量的双语数据集,涵盖常见场景、文档图像,并用英文和中文问答对进行注释,显着提高了 OCR 和中文相关任务的性能。

总体的结构则是采用与流行的多模态大模型类似的 ViT-MLP-LLM 架构,通过MLP映射器将预训练好的InternViT-6B与InternLM2-20b结合在一起。同时还使用一个简单的Pixel Shuffle 技巧将视觉标记的数量减少到四分之一。
对于动态高分辨率,研究人员则是从预定义的比例中动态匹配最佳宽高比,将图像划分为448×448像素大小的块,并为全局上下文创建缩略图。该方法最大限度地减少了纵横比失真,并在训练期间适应不同的分辨率。

▲图4.动态分辨率。
在训练过程中,视觉标记的数量范围为 256 到 3,328。在测试过程中,图块数量最多可以增加到 40 个,从而产生 10,496 个视觉标记,从而实现最高4K分辨率的输入。
论文中也提供了模型在预训练和微调阶段使用的各类任务以及对应的数据集,并且都是公开数据集。为了构建大规模 OCR 数据集,研究人员还利用 PaddleOCR 对 Wukong 数据集的图像执行中文 OCR,对 LAION-COCO 数据集的图像执行英文 OCR。

▲图5.(a) 预训练阶段使用的数据集

▲图5.(b) 微调阶段使用的数据集。
而InternVL 1.5 的具体性能表现如何?如下图所示,InternVL 1.5 在大多数基准测试中都表现出领先的性能!

▲图6.在 16 个多模式基准上与 SoTA 模型进行比较。
与 TextMonkey、DocOwl-1.5 和 LLaVA-NeXT 等其他开源模型相比,InternVL 1.5 在这些基准测试中显着缩小了与专有模型的差距。
然而,虽然 InternVL 1.5 超越了 MM1,并且在 MMMU 上与 Gemini Pro 1.0 相当,但它比其前身 InternVL 1.2 略有下降。作者也对此进行了分析,并称这可以被认为是适当的降低,且可以归因于语言模型规模较小,这种现象也可以在下图中的 MMT-Bench 结果中观察到。

▲图7. 在ConvBench和MMT-Bench上与SoTA模型的比较。
针对InternVL在不同分辨率下的性能,研究人员也进行了实验。论文称,尽管在训练期间仅使用 1 到 12 个图块,但可以在测试期间将零样本任务扩展到 40 个图块(即,4K分辨率)。
但是作者也发现并不是所有任务都需要高分辨率,从图8来看,与 OCR 相关的任务(例如 DocVQA、InfoVQA、TextVQA 和 OCRBench)受益于分辨率的提高,而 AI2D、MMMU、MMBench 和 HallusionBench 等任务在更高分辨率下表现出轻微下降。

▲图8.不同图像分辨率下 InternVL 1.5 性能的比较。X 轴代表图块数量,Y 轴代表基准性能。最高值及其相应的图块数量会突出显示。
总体而言,InternVL 1.5 对动态分辨率表现出很强的鲁棒性。它可以根据每项任务的具体要求调整分辨率,确保在高分辨率有利的情况下实现最佳性能,在不利于高分辨率的情况下节省资源。
为了充分践行自己对标 GPT-4V的目标,论文中的 General QA、OCR-related QA、科学理解、中国传统文化、目标定位、多图像对话的示例上均与 GPT-4V进行对比,蓝色字体显示出色的答案,而红色字体显示错误的答案。
为了方便读者阅读,(如果非中文)下面的蓝色(或红色)字体的部分均进行中文翻译。

▲General QA 的示例。

▲OCR-related QA 示例。

▲科学理解的例子。

▲中国传统文化的范例。蓝色突出显示了出色的答案

▲目标定位的示例。

▲多图像对话示例。
最后,我们也可以在官方demo中进行试玩:
https://internvl.opengvlab.com

不得不说,这个效果真的很惊喜!不过也存在一些问题,比如说当用 InternVL 1.5 的 arxiv 首页询问的时候,它居然杜撰了自己的作者!看来多模态大模型上的幻觉问题也要赶紧着手研究了~


相关文章:
上海AI Lab开源首个可替代GPT-4V的多模态大模型
与开源和闭源模型相比,InternVL 1.5 在 OCR、多模态、数学和多轮对话等 18 个基准测试中的 8 个中取得了最先进的结果。 上海AI Lab 推出的 InternVL 1.5 是一款开源的多模态大语言模型 (MLLM),旨在弥合开源模型和专有商业模型在多模态理解方面的能力差距…...
Python教程:一文了解PageObject模式
PageObject 模式是一种用于测试自动化的设计模式,它将页面的功能和页面的实现分开,提高了代码的可维护性和可重用性。本文将从基础概念开始,逐步介绍 Python 中的 PageObject 模式,并提供详细的代码示例。 1. 什么是 PageObject 模…...
SpringBoot 启动时查询数据库数据,并赋值给全局变量
创建一个组件 AreaData import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component;import java.u…...
【Python】selenium爬虫常见用法和配置,以及常见错误和解决方法
欢迎来到《小5讲堂》 这是《Python》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言无执行文件代码报错信息错误路径手动下载自动下载 选项配置Ch…...
minio上传文件失败如何解决
1. 做了什么操作 通过接口上传excel文件,返回响应值 2. 错误如图 2. 如何解决 根据错误描述定位到了部署minio的地方minio通过docker部署,找到docker - compose发现配置文件中minio有两个端口,一个是用于api的,一个是用于管理界面…...
Java自动化测试框架--TestNG详解
一. 什么是TestNG TestNG是一个开源的自动化测试框架,它受JUnit和NUnit启发,其中“NG”即表示Next Generation,其功能更强大使用更方便。 二. TestNG配置 2.1 POM文件配置 在maven工程的pom.xml文件中加入以下依赖: <depe…...
【分布式 | 第五篇】何为分布式?分布式锁?和微服务关系?
文章目录 5.何为分布式?分布式锁?和微服务关系?5.1何为分布式?5.1.1定义5.1.2例子5.1.3优缺点(1)优点(2)缺点 5.2何为分布式锁?5.2.1定义5.2.2必要性 5.3区分分布式和微服…...
JavaScript百炼成仙自学笔记——13
函数七重关之六(“new”一个函数) 看个代码: function hello(){console.log(this); } 1、this:也是JavaScript中的一个关键字,永远指向当前函数的调用者 解释一下,有两层意思: ①this要嘛不出现&#…...
【skill】小米10让app永驻后台
小米10(国行), 8128不能让app驻留后台我也忍了,但是12256依然如此,各种尝试,全网检索不杀app的方法,除了在系统设置里调,什么adb、shizuku冰箱冰柜的没一个能用 系统版本试过国行版…...
《架构风清扬-Java面试系列第29讲》聊聊DelayQueue的使用场景
DelayQueue是BlockingQueue接口的一个实现类之一 这个属于基础性问题,老规矩,我们将从使用场景和代码示例来进行讲解 来,思考片刻,给出你的答案 1,使用场景 实现:延迟队列,其中元素只有在其预定…...
说说SpringBoot自动配置原理
Spring Boot的自动配置原理可以概括为:通过读取jar包中的配置信息,并根据项目依赖和条件注解自动配置应用程序所需的bean,从而减少手动配置的工作量。 第一、代码入口 SpringBootApplication 👇 EnableAutoConfiguration &#…...
bash: docker-compose: 未找到命令
bash: docker-compose: 未找到命令 在一台新的服务器上使用 docker-compose 命令时,报错说 docker-compose 命令找不到,在网上试了一些安装方法,良莠不齐,所以在这块整理一下,如何正确快速的安装 docker-compose cd…...
linux 权限和权限的设置
在Linux中,文件和目录的权限是一个重要的安全特性。这些权限决定了哪些用户可以读取、写入或执行某个文件或目录。以下是关于Linux权限和如何设置它们的基本信息。 权限类型 Linux中有三种基本的权限类型: 读取(r):…...
基于Springboot的旅游管理系统(有报告)。Javaee项目,springboot项目。
演示视频: 基于Springboot的旅游管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…...
springboot3项目练习详细步骤(第一部分:用户业务模块)
目录 环境准备 用户模块 注册 注册接口文档 编辑 实现结构 Spring Validation 登录 登录的接口文档 实现登录逻辑 JWT令牌 完善登录认证 拦截器 获取用户详细信息 接口文档 Usercontroller类中编写方法接口 忽略属性返回 优化代码ThreadLocal 更新用户基本信…...
推荐算法顶会论文博客笔记合集
小小挖掘机学习笔记 https://mp.weixin.qq.com/s/rp2xXueEyT8IKvTr2Qss3A 推荐系统学习笔记 https://blog.csdn.net/wuzhongqiang/category_10128687.html SIGIR SIGIR 2022 | 推荐系统相关论文分类整理:8.74 https://mp.weixin.qq.com/s/vH0qJ-jGHL7s5wSn7Oy…...
DRM/RESP无法连接linux上redis的原因
问题一: redis.conf配置文件 进入到自己的redis软件目录 vim redis.conf 将bind 127.0.0.1 : 1 注释掉,改成bind 0.0.0.0,让远程所有ip都可以访问 将daemonize yes 守护进程,修改后可在后台运行 protected-mod…...
vim怎么选中多行后在头部插入#(随手记)
方法1 进入可视行模式: 按下 V(大写 V),选中整行,包括行尾空白字符。使用 v(小写 v),然后移动光标选择从行中间开始的多行。 插入 #: 选中多行后,使用 I&…...
Objective-C的对象复制与拷贝选项
对象复制与拷贝 文章目录 对象复制与拷贝copy与mutablecopycopy与mutablecopy的简介示例:不可变对象的复制可变对象的复制 NSCopying和NSMutableCopying协议深复刻和浅复刻浅拷贝(Shallow Copy):深拷贝(Deep Copy&…...
HTML5 中的离线缓存机制,即应用缓存(Application Cache 或 AppCache)已被废弃并正在被逐步移除
HTML5 中的离线缓存机制,即应用缓存(Application Cache 或 AppCache)已被废弃并正在被逐步移除。这是因为应用缓存存在一些设计上的缺陷和限制,导致它在实际应用中经常出现问题。 取而代之的是一种更强大、更灵活的技术——Servi…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
