VLMEvalKit 评测实践:InternVL2 VS Qwen2VL

news/2024/9/19 8:09:23/ 标签: 人工智能, 学习

在这里插入图片描述

一、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 -ygit 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.ppmy.cn/news/1526545.html

相关文章

MySQL练手题--体育馆的人流量(困难)

一、准备工作 Create table If Not Exists Stadium (id int, visit_date DATE NULL, people int); Truncate table Stadium; insert into Stadium (id, visit_date, people) values (1, 2017-01-01, 10); insert into Stadium (id, visit_date, people) values (2, 2017-01-02…

Linux-LVM逻辑卷管理

一、背景 Linux运维过程中大家有没有想过生产环境服务器磁盘分区如果数据量越来越膨胀(这些都是重要数据,不能删除),那么此时如何来应对这个问题呢? 既要不影响正在运行的程序,同时也不能中断关机等操作。 这么一想就很蛋疼了。假设你运行…

Maven 的多种打jar包方式详细介绍、区别及使用教程——附使用命令

文章目录 1. **标准 JAR 打包****打包方式****配置示例****使用方式****优点****缺点** 2. **可执行 JAR(Executable JAR)****打包方式****配置示例****使用方式****优点****缺点** 3. **Uber JAR(Fat JAR / Shadow JAR)****打包方…

Comsol 利用多孔材料填充复合吸声器,拓宽低频完美吸声

参考文献:Cheng B , Gao N , Huang Y ,et al.Broadening perfect sound absorption by composite absorber filled with porous material at low frequency:[J].Journal of Vibration and Control, 2022, 28(3-4):410-424.DOI:10.1177/1077546320980214. 为了提高低…

优化Web性能:Varnish中精准识别并缓存移动与桌面请求

引言 在现代Web开发中,为了提升用户体验,针对不同类型的设备提供定制化的内容是一项重要的策略。Varnish作为HTTP加速器和缓存代理服务器,能够帮助我们实现这一目标。本文将详细介绍如何利用Varnish来实现基于设备类型(PC端与移动…

Pr:首选项 - 媒体缓存

Pr菜单:编辑/首选项 Edit/Preferences Premiere Pro 首选项中的“媒体缓存” Media Cache选项卡的设置用于管理和优化媒体缓存文件的存储与清理。定期清除媒体缓存是优化 Pr 性能或进行故障排除的最佳做法。 将视频和音频导入 Pr 时,它会将这些文件处理成…

企业的终端安全该怎么防护?

安装金刚钻信息网站数据防泄密系统能够有效防止终端数据泄露,提供全面的安全保障。该系统通过对终端上的敏感数据进行加密,确保只有经过授权的用户才能访问或读取数据,即使设备丢失或遭到入侵,数据也不会被轻易获取。此外&#xf…

单硬盘安装Win10和麒麟V10双系统指导建议

随着信创电脑的普及,国产操作系统也逐渐走进了大家的视野,许多人选择了国产操作系统来体验其开源、安全、高效的特性,而Windows系统也是大多数人习惯使用的操作系统。一台电脑上同时安装银河麒麟V10和Windiows10双系统也成为了非常常见的需求。那么,如何在一台电脑上安装银…

SpringBoot框架下的房产销售系统设计与实现

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于房产销售系统当然也不能排除在外,随着网络技术的不断成熟,带动了房产销售系统,它彻底改变了过去传统的…

Android12_13左上角状态栏数字时间显示右移动

文章目录 问题场景解决问题 一、基础资料二、代码追踪三、解决方案布局的角度解决更改paddingStart 的默认值设置marginLeft 值 硬编码的角度解决 问题场景 1)早期一般屏幕都是方形的,但是曲面屏,比如:好多车机Android产品、魔镜…

Qt ORM模块使用说明

附源码:QxOrm是一个C库资源-CSDN文库 使用说明 把QyOrm文件夹拷贝到自己的工程项目下, 在自己项目里的Pro文件里添加include($$PWD/QyOrm/QyOrm.pri)就能使用了 示例test_qyorm.h写了表的定义,Test_QyOrm_Main.cpp中写了所有支持的功能的例子: 通过自动表单添加…

9.14工作笔记

M psy分析 冰红茶看看他的研究思路 https://bbs.quantclass.cn/thread/45169 psyv4计算:首先算因子H 然后放到回测框架里算12H 衰减加权 和psyv1做比较 transperiod这个函数里面的for循环再看看 比如df是小时数据,hold_period为3D,这里of…

【C++】入门基础(下)

Hi!很高兴见到你~ 目录 7、引用 7.3 引用的使用(实例) 7.4 const引用 【第一分点】 【第二分点1】 【第二分点2】 7.5 指针和引用的关系(面试点) 8、inline 9、nullptr Relaxing Time! ———…

Spring-IOC容器-ApplicationContext

IOC:Inversion of Control 控制反转,是一种设计原则,spring 中通过DI(dependency Injection)来具体实现。 比如原本对象的实例化,是通过程序主动New出来,IOC中的对象实例交给Spring框架来实例化&#xff0…

爬虫全网抓取

爬虫全网抓取是指利用网络爬虫技术,通过自动化的方式遍历互联网上各个网站、论坛、博客等,从这些网页中提取所需的数据。它通常涉及以下几个步骤: 目标设定:确定要抓取哪些类型的网页内容,比如新闻、商品信息、用户评论…

Error: ReferenceError: ReadableStream is not defined

midway项目在build完,docker启动时,莫名地报错Error: ReferenceError: ReadableStream is not defined,之前一直好好地,初时以为是新加的代码引起,后来排除了。 报错如下: 2024-08-20 11:57:51.446 ERROR …

SAP EWM Cross Docking (CD) 越库操作

目录 1 介绍 2 业务流程 3 后台配置主数据 4 业务操作 1 介绍 EWM Cross Docking 又称“越库操作”,即从仓库的一个道口直接跳到另一个道口。这样操作都不用想,肯定是为了仓库工作效率。CD 分两部分,一个是“计划性越库”,另…

asp.net core调用wps实现word转pdf的方法

1,首先安装wps,从官网下载安装包 2,创建.net core控制项目 添加com引用,搜索wps 准备一个word文档,名字叫001.docx,随便编写一些文字内容 3,word转pdf 编写代码 namespace WPSStu01 {inter…

UVM仿真的运行(四)—— objection 机制

0. 引言 前面介绍了uvm仿真的启动,按照domain中指定的DAG的phase node 顺序执行各个组件的phase。 在执行run_phase node的Executing 状态时,以fork...join_none的方式在后台调用run_phase imp的traverse方法去并行执行各个component的run_phase方法,同时会等待task运行结…

Spring security 动态权限管理(基于数据库)

一、简介 如果对该篇文章不了解,请移步上一篇文章:spring security 中的授权使用-CSDN博客 当我们配置的 URL 拦截规则请求 URL 所需要的权限都是通过代码来配置的,这样就比较死板,如果想要调整访问某一个 URL 所需要的权限&…