VLMEvalKit 评测实践:InternVL2 VS Qwen2VL

news2024/9/18 10:59:14

在这里插入图片描述

一、InternVL2简介

InternVL2是由上海人工智能实验室OpenGVLab发布的一款多模态大模型,其中文名称为“书生·万象”。该模型在多学科问答(MMMU)任务上表现出色,成为国内首个在该任务上性能突破60的模型,被誉为开源多模态大模型性能的新标杆。

在这里插入图片描述

InternVL2主要功能

InternVL 2.0 具有各种指令调整模型,范围从 10 亿到 1080 亿个参数。与最先进的开源多模态大型语言模型相比,InternVL 2.0 超越了大多数开源模型。它在各种功能上展示了与专有商业模式相当的竞争性能,包括文档和图表理解、信息图表 QA、场景文本理解和 OCR 任务、科学和数学问题解决,以及文化理解和集成多模式功能。
在这里插入图片描述

InternVL 2.0 使用 8k 上下文窗口进行训练,并利用由长文本、多张图像、医疗数据和视频组成的训练数据,与 InternVL 1.5 相比,它显着提高了处理这些类型输入的能力。
在这里插入图片描述

如图所示,InternVL2 采用与 InternVL 1.5 相同的架构,特别是各种现有研究中引用的 ViT-MLP-LLM 配置。

InternVL2模型在多个基准测试中表现优异,例如在中文多模态大模型SuperCLUE-V基准测试中,InternVL2-40B模型获得了70.59分,排名第二。这表明该模型在处理多模态数据和跨学科问题方面具有较高的能力。

其使用方法可以参考:Welcome to InternVL’s tutorials! — internvl

二、Qwen2VL简介

Qwen2-VL是阿里巴巴达摩院开源的视觉多模态A!模型,具备高级图像和视频理解能力。Qwen2-VL支持多种语言,能处理不同分辨率和长宽比的图片,实时分析动态视频内容。Qwen2-VL在多语言文本理解、文档理解等任务上表现卓越,适用于多模态应用开发,推动了AI在视觉理解和内容生成领域的进步。
在这里插入图片描述

Qwen2-VL主要增强功能

  1. SoTA 理解各种分辨率和比例的图像:Qwen2-VL 在视觉理解基准上实现了先进的性能,包括 MathVista、DocVQA、RealWorldQA、MTVQA 等。
  2. 理解20分钟以上的视频:借助在线流媒体功能,Qwen2-VL可以通过基于高质量视频的问答、对话、内容创作等来理解20分钟以上的视频。
  3. 可以操作手机、机器人等的智能体:Qwen2-VL具有复杂的推理和决策能力,可以与手机、机器人等设备集成,基于视觉环境和文本指令进行自动操作。
  4. 多语言支持:为了服务全球用户,除了英语和中文之外,Qwen2-VL现在支持图像内不同语言文本的理解,包括大多数欧洲语言、日语、韩语、阿拉伯语、越南语等。

通义千问团队以 Apache 2.0 协议开源了 Qwen2-VL-2B 和 Qwen2-VL-7B,并发布了 Qwen2-VL-72B 的 API。开源代码已集成到 Hugging Face Transformers、vLLM 和其他第三方框架中。

其使用方法可以参考:https://qwenlm.github.io/zh/blog/qwen2-vl/

三、VLMEvalKit简介

VLMEvalKit是一个专为大型视觉语言模型评测设计的开源工具包。它支持在各种基准测试上对大型视觉语言模型进行一键评估,无需进行繁重的数据准备工作,使评估过程更加简便。VLMEvalKit适用于图文多模态模型的评测,支持单对图文输入或是任意数量的图文交错输入。它通过实现70多个基准测试,覆盖了多种任务,包括但不限于图像描述、视觉问答、图像字幕生成等。
在这里插入图片描述

VLMEvalKit的主要用途包括以下几个方面:

  1. 多模态模型评估:VLMEvalKit旨在为研究人员和开发人员提供一个用户友好且全面的框架,以评估现有的多模态模型并发布可重复的评估结果。它支持多种多模态模型和评测集,包括闭源和开源模型,以及多个多模态基准数据集。
  2. 模型性能比较:通过VLMEvalKit,用户可以轻松比较不同多模态模型在各种任务上的性能。该工具包提供了详细的评测结果,并支持将结果发布在OpenCompass的多模态整体榜单上。
  3. 便捷的一站式评测:VLMEvalKit支持一键式评测,无需手动进行数据预处理。用户只需一条命令即可完成对多个多模态模型和评测集的评测。
  4. 易于扩展:VLMEvalKit框架支持轻松添加新的多模态模型和评测集。用户可以根据需要添加新的模型或评测集,并确保原有的评测集和模型仍然适用于新的模型或评测集。
  5. 支持多种模型和评测集:VLMEvalKit支持超过三十个开源多模态模型和十余个开源多模态评测集,包括GPT-4v、GeminiPro、QwenVLPlus等主流模型和MME、MMBench、SEEDBench等评测集。
  6. 提供定量与定性结果:VLMEvalKit不仅提供定量评测结果,还支持对模型的定性分析,帮助用户了解模型在特定任务上的表现和不足之处。

四、使用 VLMEvalKit 评测 InternVL2 及 Qwen2VL

使用VLMEvalKit进行评测需要进行以下步骤:

  1. 环境准备用以下命令安装依赖:

# 基于conda环境
conda create -n vlmeval python=3.10
conda activate vlmeval
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia -y

git clone https://github.com/open-compass/VLMEvalKit.git
cd VLMEvalKit
pip install -e .

注意:

某些 VLM 可能无法在某些特定的 transformers 版本下运行,参考以下设置来评估对应的VLM:

  • 请用 transformers==4.33.0 来运行: Qwen series, Monkey series, InternLM-XComposer Series, mPLUG-Owl2, OpenFlamingo v2, IDEFICS series, VisualGLM, MMAlaya, ShareCaptioner, MiniGPT-4 series, InstructBLIP series, PandaGPT, VXVERSE.
  • 请用 transformers==4.37.0 来运行: LLaVA series, ShareGPT4V series, TransCore-M, LLaVA (XTuner), CogVLM Series, EMU2 Series, Yi-VL Series, MiniCPM-[V1/V2], OmniLMM-12B, DeepSeek-VL series, InternVL series, Cambrian Series, VILA Series, Llama-3-MixSenseV1_1, Parrot-7B, PLLaVA Series.
  • 请用 transformers==4.40.0 来运行: IDEFICS2, Bunny-Llama3, MiniCPM-Llama3-V2.5, 360VL-70B, Phi-3-Vision, WeMM.
  • 请用 transformers==latest 来运行: LLaVA-Next series, PaliGemma-3B, Chame``3``leon series, Video-LLaVA-7B-HF, Ovis series, Mantis series, MiniCPM-V2.6, OmChat-v2.0-13B-sinlge-beta, Idefics-3, GLM-4v-9B, VideoChat2-HD.
  1. 修改文件

$VLMEvalKit/vlmeval/config.py文件中设置在 VLMEvalKit 中支持的 VLM 名称,以及模型路径。

如果你的电脑上面没有该模型的模型文件,则需要自己下载,然后更改模型路径,也可以不修改,在运行模型评测命令的时候会自动下载模型文件。
在这里插入图片描述

注:默认下载使用的是Huggingface,需要进行科学上网,也可以使用modelscope将模型下载到本地,然后更改路径。

将所要评测的模型路径设置好以后就可以开始评测了。

  1. 模型评测

模型评测时可以使用 pythontorchrun 来运行脚本,使用 python 运行时,只实例化一个 VLM,并且它可能使用多个 GPU。使用 torchrun 运行时,每个 GPU 上实例化一个 VLM 实例,这可以加快推理速度。

这里我们在 MME 上 进行推理和评估。

MME涵盖了感知和认知能力的考察。除了OCR外,感知包括对粗粒度和细粒度对象的识别。前者识别对象的存在、数量、位置和颜色。后者识别电影海报、名人、场景、地标和艺术作品。认知包括常识推理、数值计算、文本翻译和代码推理。总共有14个子任务。

使用以下命令开始推理和评估:

torchrun --nproc-per-node=2 run.py --data MME --model qwen2vl --verbose
torchrun --nproc-per-node=2 run.py --data MME --model InternVL2-2B --verbose

参数解释:

  • --data (list[str]): 设置在 VLMEvalKit 中支持的数据集名称(在 vlmeval/utils/dataset_config.py 中定义)
  • --model (list[str]): 设置在 VLMEvalKit 中支持的 VLM 名称(在 vlmeval/config.py 中的 supported_VLM 中定义)
  • --mode (str, 默认值为 'all', 可选值为 ['all', 'infer']):当 mode 设置为 “all” 时,将执行推理和评估;当设置为 “infer” 时,只执行推理
  • --nproc (int, 默认值为 4): 调用 API 的线程数
  • --work-dir (str, default to '.'): 存放测试结果的目录
  • --nframe (int, default to 8): 从视频中采样的帧数,仅对视频多模态评测集适用
  • --pack (bool, store_true): 一个视频可能关联多个问题,如 pack==True,将会在一次询问中提问所有问题

命令运行以后大约需要半小时的时间完成评测,评估结果将作为日志打印出来。此外,结果文件也会在目录 $YOUR_WORKING_DIRECTORY/{model_name} 中生成。以 .csv 结尾的文件包含评估的指标。

Qwen2VLMM``E数据集的评估结果如下:

perceptionreasoningOCRartworkcelebritycode_reasoningcolorcommonsense_reasoningcountexistencelandmarknumerical_calculationpositionpostersscenetext_translation
1467.736194411.785714365142140.588235392.516599.28571429135190171.2550138.3333333161.5646259159170

InternVL2MME数据集的评估结果如下:

perceptionreasoningOCRartworkcelebritycode_reasoningcolorcommonsense_reasoningcountexistencelandmarknumerical_calculationpositionpostersscenetext_translation
1452.857643420.714285795146.25118.529411887.5168.3333333110.7142857143.333333320015545145128.9115646152.5177.5

4.结果分析

通过对Qwen2-VL-2B-Instruct_MME_score.xlsxInternVL2-2B_MME_score.xlsx两个表格中的大模型分数进行比较,我们可以观察到以下差异:

  1. 整体分数对比:两个模型在各项能力上的平均分数存在细微差异,但整体趋势相似,均表现出较高的综合能力。两个模型在多项能力上均表现出较高的水平,但在具体任务上各有侧重。Qwen2-VL-2B-Instruct在感知、名人识别和代码推理方面表现更佳,而InternVL2-2B则在OCR、艺术作品识别和推理能力上有所领先。

  2. 具体能力项差异:

    1. Perception(感知能力):InternVL2-2B的分数(1452.86)略低于Qwen2-VL-2B-Instruct(1467.74),表明在图像或文本等基础信息的理解能力上,后者略胜一筹。
    2. Reasoning(推理能力):InternVL2-2B的分数(420.71)略高于Qwen2-VL-2B-Instruct(411.79),这可能意味着在处理复杂逻辑和关系推理时,InternVL2-2B更具优势。
    3. OCR(光学字符识别):InternVL2-2B的分数(95)明显高于Qwen2-VL-2B-Instruct(65),显示出更强的文本识别和提取能力。
    4. Artwork(艺术作品识别):InternVL2-2B的分数(146.25)略高于Qwen2-VL-2B-Instruct(142),表明在艺术作品的识别和理解上,前者稍有优势。
    5. Celebrity(名人识别):Qwen2-VL-2B-Instruct的分数(140.59)高于InternVL2-2B(118.53),反映出在名人识别能力上,后者稍显不足。
    6. Code Reasoning(代码推理):Qwen2-VL-2B-Instruct的分数(92.5)略高于InternVL2-2B(87.5),显示出在处理代码和逻辑推断上的微弱优势。
    7. 其他能力项:如Commonsense Reasoning(常识推理)、Count(计数)、Existence(存在性判断)、Landmark(地标识别)、Numerical Calculation(数值计算)、Position(位置识别)、Posters(海报识别)、Scene(场景识别)和Text Translation(文本翻译)等,两个模型各有优势,但差异不大。

结语

多模态技术的突破,正在改变我们理解和交互世界的方式。无论是强大的感知能力、复杂的推理分析,还是图文融合的创新应用,InternVL2 与 Qwen2-VL 展现了大模型的无限可能。

更多详细内容请看:

VLMEvalKit:用于评估大型视觉语言模型的🏆工具包:https://github.com/open-compass/VLMEvalKit

InternVL系列模型使用教程:https://internvl.readthedocs.io

Qwen2VL系列模型使用教程:https://qwenlm.github.io/zh/blog/qwen2-vl/

如果你想查看更多的VLM 评估结果,可以到OpenVLM 排行榜进行查看:https://huggingface.co/spaces/opencompass/open_vlm_leaderboard

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

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

相关文章

k8s 微服务 ingress-nginx 金丝雀发布

目录 一 什么是微服务 二 微服务的类型 三 ipvs模式 3.1 ipvs模式配置方式 四 微服务类型详解 4.1 clusterip 4.2 ClusterIP中的特殊模式headless 4.3 nodeport 4.4 loadbalancer 4.5 metalLB 4.6 externalname 五 Ingress-nginx 5.1 ingress-nginx功能 5.2 部署…

5. Python之数据类型

Python数据类型有数值型,字符串型,布尔型等等 内置函数type(),可以查看变量的数据类型 。 一、数值类型 整数(没有小数部分,包含正整数,负整数,0,默认为十进制数)&…

C++ 类域+类的对象大小

个人主页:Jason_from_China-CSDN博客 所属栏目:C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目:C知识点的补充_Jason_from_China的博客-CSDN博客 概念概述 类定义了一个新的作用域,类的所有成员都在类的作用域中&#xff…

华为杯数学建模资料大全、入门指导攻略、获奖数据分析、选题建议

这里收集的资料个人认为已经非常全也非常值了,这么多资料收集成本真的不低 数学建模比赛资料部分(需要私聊找我) 华为杯创办以来每一年的比赛题目原题(包括A到F题)华为杯每年每种题目的优秀获奖作品论文 近几年的华…

2022高教社杯全国大学生数学建模竞赛C题 问题一(2) Python代码演示

目录 1.2 结合玻璃的类型,分析文物样品表面有无风化化学成分含量的统计规律数据预处理绘图热力图相关系数图百分比条形图箱线图小提琴图直方图KED图描述性统计分析偏度系数峰度系数其它统计量1.2 结合玻璃的类型,分析文物样品表面有无风化化学成分含量的统计规律 数据预处理 …

回归预测|基于鲸鱼优化随机森林数据的数据回归预测Matlab程序 多特征输入单输出WOA-RF

回归预测|基于鲸鱼优化随机森林数据的数据回归预测Matlab程序 多特征输入单输出WOA-RF 文章目录 一、基本原理鲸鱼优化算法(WOA)随机森林(RF)WOA-RF的结合总结 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 WOA-R…

服务器断电重启后报XFS文件系统错误 XFS (dm-0)_ Metadata I_O error

一、现象 服务器被意外断电,导致重启机器后报错,系统错误 XFS (dm-0): Metadata I/O error 二、解决方法 2.1 重启服务器,进入单用户模式 服务器系统为: centos7.9 开机按e 定位到ro 然后修改ro为rw(“rw init/sysroot/bin/sh”…

2024-1.2.12-Android-Studio配置

本地博客: https://k1t0111.github.io/ K1T0 最近在做一些app方向的移动技术开发学习,但是由于AS的配置问题,市面上找不到最新的2024版本的AS的相关配置。笔者也是踩了很多坑,因此想写一篇文章记录一下最新的AS 2024 1.2.12的对应java环境的一…

JavaScript 笔记汇总

JavaScript 笔记汇总 引入方式 内部方式 通过 script 标签包裹 JavaScript 代码。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript 基础 - 引入方式</title> </head> <…

java项目之基于web的人力资源管理系统的设计与实现(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的基于web的人力资源管理系统的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; …

2024/9/16 pytorch

一、pytorch两大法宝元素 假设有一个名为pytorch的包 dir()&#xff1a;用于打开包&#xff0c;看里面的内容 help():用于查看具体的内容的用处 二、python文件&#xff0c;python控制台和jupyter的使用对比 三、pytorch读取数据 pytorch读取数据主要涉及到两个类&#xff1…

linux文件系统权限详解

注:目录的执行权限代表是否可以进入。 一、文件权限控制对文件的访问: 可以针对文件所属用户、所属组和其他用户可以设置不同的权限 权限具有优先级。user权限覆盖group权限,后者覆盖other权限。 有三种权限类别:读取、写入和执行 读权限:对文件:可读取文件…

LeetCode[中等] 合并区间

以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 思路 区间排序&#xff1a; 开始位置 ——> 升序排…

Elment-plus组件失效(没有样式)(0916)

在学习Vue3时&#xff0c;使用Element-plus组件库开发登录页面&#xff0c;发现无法显示反馈组件的样式 然后查找相关博客后&#xff0c;发现原来是因为我使用按需导入&#xff0c;然后又在登录页面导入&#xff0c;导致组件样式失效 删除导入语句后&#xff0c;成功显示反馈组…

「C++」类和对象(3)

欢迎大家再次来到海盗猫鸥的博客—— 今天将继续讲解类和对象的后续内容&#xff0c;本篇将讲解类和对象中运算符重载&#xff0c;赋值运算符重载&#xff0c;以及取地址运算符的内容&#xff0c;再结合内容进行Date日期类的实现。 目录 运算符重载 运算符重载 赋值运算符重…

【CMake】使用CMake在Visual Stdudio编译资源文件和多目标编译

一、资源文件的编译 首先&#xff0c;我们的项目结构如下&#xff0c;存在图片和第三方库&#xff1a; 配置主 C M a k e l i s t s CMakelists CMakelists&#xff1a; #需求的最低cmake程序版本 cmake_minimum_required(VERSION 3.12)#本工程的名字 project(OpenGL)#支持的…

[Python数据可视化] Plotly:交互式数据可视化的强大工具

引言&#xff1a; 在数据分析和可视化的世界中&#xff0c;Plotly 是一颗耀眼的明星。它是一个开源的交互式图表库&#xff0c;支持多种编程语言&#xff0c;包括 Python、R 和 JavaScript。Plotly 的强大之处在于它能够创建出既美观又具有高度交互性的图表&#xff0c;使得数据…

变压器数据集,电气设备红外热图像数据集,部分带温度显示。变压器红外数据集,温度显示5000多张

项目背景&#xff1a; 变压器作为电力系统的关键设备之一&#xff0c;其运行状态直接影响到电网的安全稳定。红外热成像技术因其非接触、快速、直观的特点&#xff0c;在电力设备的故障诊断和状态监测中得到了广泛应用。本数据集旨在为基于红外热图像的变压器状态监测提供高质量…

挑战力扣高难度算法、数据库题

一.算法类 1622题,困难,奇妙序列 class Fancy { public:static const int MOD 1e9 7;long long M_total; // cumulative multiplicative factorlong long A_total; // cumulative additive factorvector<long long> val; // original valuesvector<long long> …

AtCoder Beginner Contest 371

A - Jiro &#xff1a; 题目&#xff1a; 代码&#xff1a; #include <bits/stdc.h>using namespace std;typedef long long LL ; typedef pair<int,int> PII;void solve() {string a,b, c;cin>>a>>b>>c;string s(3,a);s[0]a[0];s[1]b[0];s[2…