Mono-InternVL 多模型大模型测评

一、简介

      上海人工智能实验室的代季峰教授团队最近开发了一种新型多模态大模型Mono-InternVL,该模型在多模态任务中表现卓越,显示出技术上的显著优势。Mono-InternVL通过内嵌视觉专家,优化了视觉感知与理解的集成,大幅提高了处理效率。该模型采用了增量预训练方法,有效降低了训练中的信息遗忘问题,并通过内生视觉预训练方法,增强了模型在复杂任务中的性能。在多项多模态基准测试中,Mono-InternVL展现了优于现有模型的能力,特别是在OCR、问答系统和图表解析等方面表现出色。

二、环境安装

https://huggingface.co/OpenGVLab/Mono-InternVL-2B

conda create -n mono python==3.9conda activate monopip install transformers==4.37.2conda install pytorch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 pytorch-cuda=11.8 -c pytorch -c nvidiapip install decordpip install peftpip install einopspip install sentencepiecepip install fastapipip install python-multipartpip install uvicornexport HF_ENDPOINT=https://hf-mirror.com

三、测试代码

官方给的测试代码:

import numpy as np
import torch
import torchvision.transforms as T
from decord import VideoReader, cpu
from PIL import Image
from torchvision.transforms.functional import InterpolationMode
from transformers import AutoModel, AutoTokenizerIMAGENET_MEAN = (0.485, 0.456, 0.406)
IMAGENET_STD = (0.229, 0.224, 0.225)def build_transform(input_size):MEAN, STD = IMAGENET_MEAN, IMAGENET_STDtransform = T.Compose([T.Lambda(lambda img: img.convert('RGB') if img.mode != 'RGB' else img),T.Resize((input_size, input_size), interpolation=InterpolationMode.BICUBIC),T.ToTensor(),T.Normalize(mean=MEAN, std=STD)])return transformdef find_closest_aspect_ratio(aspect_ratio, target_ratios, width, height, image_size):best_ratio_diff = float('inf')best_ratio = (1, 1)area = width * heightfor ratio in target_ratios:target_aspect_ratio = ratio[0] / ratio[1]ratio_diff = abs(aspect_ratio - target_aspect_ratio)if ratio_diff < best_ratio_diff:best_ratio_diff = ratio_diffbest_ratio = ratioelif ratio_diff == best_ratio_diff:if area > 0.5 * image_size * image_size * ratio[0] * ratio[1]:best_ratio = ratioreturn best_ratiodef dynamic_preprocess(image, min_num=1, max_num=12, image_size=448, use_thumbnail=False):orig_width, orig_height = image.sizeaspect_ratio = orig_width / orig_height# calculate the existing image aspect ratiotarget_ratios = set((i, j) for n in range(min_num, max_num + 1) for i in range(1, n + 1) for j in range(1, n + 1) ifi * j <= max_num and i * j >= min_num)target_ratios = sorted(target_ratios, key=lambda x: x[0] * x[1])# find the closest aspect ratio to the targettarget_aspect_ratio = find_closest_aspect_ratio(aspect_ratio, target_ratios, orig_width, orig_height, image_size)# calculate the target width and heighttarget_width = image_size * target_aspect_ratio[0]target_height = image_size * target_aspect_ratio[1]blocks = target_aspect_ratio[0] * target_aspect_ratio[1]# resize the imageresized_img = image.resize((target_width, target_height))processed_images = []for i in range(blocks):box = ((i % (target_width // image_size)) * image_size,(i // (target_width // image_size)) * image_size,((i % (target_width // image_size)) + 1) * image_size,((i // (target_width // image_size)) + 1) * image_size)# split the imagesplit_img = resized_img.crop(box)processed_images.append(split_img)assert len(processed_images) == blocksif use_thumbnail and len(processed_images) != 1:thumbnail_img = image.resize((image_size, image_size))processed_images.append(thumbnail_img)return processed_imagesdef load_image(image_file, input_size=448, max_num=12):image = Image.open(image_file).convert('RGB')transform = build_transform(input_size=input_size)images = dynamic_preprocess(image, image_size=input_size, use_thumbnail=True, max_num=max_num)pixel_values = [transform(image) for image in images]pixel_values = torch.stack(pixel_values)return pixel_valuespath = './'
model = AutoModel.from_pretrained(path,torch_dtype=torch.bfloat16,low_cpu_mem_usage=True,trust_remote_code=True).eval().cuda()
tokenizer = AutoTokenizer.from_pretrained(path, trust_remote_code=True, use_fast=False)# set the max number of tiles in `max_num`
pixel_values = load_image('./examples/image2.jpg', max_num=12).to(torch.bfloat16).cuda()
generation_config = dict(max_new_tokens=1024, do_sample=True)# # pure-text conversation (纯文本对话)
# question = 'Hello, who are you?'
# response, history = model.chat(tokenizer, None, question, generation_config, history=None, return_history=True)
# print(f'User: {question}\nAssistant: {response}')# question = 'Can you tell me a story?'
# response, history = model.chat(tokenizer, None, question, generation_config, history=history, return_history=True)
# print(f'User: {question}\nAssistant: {response}')# # single-image single-round conversation (单图单轮对话)
# question = '<image>\nPlease describe the image shortly.'
# response = model.chat(tokenizer, pixel_values, question, generation_config)
# print(f'User: {question}\nAssistant: {response}')# single-image multi-round conversation (单图多轮对话)
question = '<image>\n识别图片中的文字'
response, history = model.chat(tokenizer, pixel_values, question, generation_config, history=None, return_history=True)
print(f'User: {question}\nAssistant: {response}')

四、Mono-InternVL 和qwen2vl-7B 效果测评

目前开源的是:Mono-InternVL-2B  比qwen2vl-7B要小,所以速度更快,显存占用更小,但是效果要差一些。

Mono-InternVL-2Bqwen2vl-7B
这张图片中的动物是一只红熊猫。红熊猫是一种小型的熊科动物,以其浓密的粉红色毛皮和独特的黑白相间的头部花纹(被称为“熊猫头”)而闻名。图片中的红熊猫正趴在木制的平台上,似乎正在休息或观察周围的环境。红熊猫常见于中国的云贵高原地区,是一种濒危物种,目前已经被记录在《濒危野生动植物种国际贸易公约》(CITES)中,受到严格保护。 

这张图片展示了一只小熊猫。小熊猫的毛色主要是橙红色,带有白色的面部和耳朵。它正靠在一个木制的平台上,背景是树木和绿色的叶子。小熊猫看起来很可爱,表情温和。

从图中可以看到直角ABC,其中AB=15, BC=9,直角三角形ABC中,直角边的长度等于斜边的一半。因为这是一个直角三角形,其中直角边长为9,所以斜边长为:\n\n斜边 = 直角边的1.5倍, \n斜边 = 9 x 1.5 = 13.5\n\n于是,\n\nx = 10.5,\n\n所以x的值为10.5。\n\n这种题目通常是通过找到三角形三个特定边的比值,来求其斜边。

这是一个直角三角形,其中一条直角边长为9,斜边长为15。我们可以使用勾股定理来计算未知边长x的值。\n\n勾股定理公式为:\\(a^2 + b^2 = c^2\\),其中c是斜边长,a和b是直角边长。\n\n在这个问题中,a = 9,c = 15,我们需要找到b(即x的值)。\n\n将已知值代入公式中,得到:\n\\[9^2 + x^2 = 15^2\\]\n\\[81 + x^2 = 225\\]\n\\[x^2 = 225 - 81\\]\n\\[x^2 = 144\\]\n\\[x = \\sqrt{144}\\]\n\\[x = 12\\]\n\n所以,x的值是12。

 

 

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

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

相关文章

springboot快递物流管理系统-计算机设计毕业源码85178

目 录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2 快递物流管理系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.2.2 数据修改流程 2.2.3 数据…

《过山车之星2》启动不了解决方法

过山车之星2如果遇到启动不了的情况&#xff0c;玩家可以采取多种有效的办法进行解决&#xff0c;其中包括等待服务器维护结束、优化网络连接以及验证游戏文件完整性等。 过山车之星2启动不了怎么办 等待服务器维护结束 在维护期间会对服务器进行优化、修复Bug和更新&#xf…

【C#】创建一个主菜单和弹出菜单系统

文章目录 1. 创建WinForms项目2. 设计窗体3. 添加MenuStrip4. 配置菜单项5. 添加TextBox6. 编写事件处理代码7. 运行和测试 根据您提供的文件内容&#xff0c;看起来您需要在C# WinForms应用程序中设置一个窗体&#xff0c;其中包含一个文本框和几个菜单项&#xff0c;用于改变…

加权电价是什么?如何快速查询工商加权电价?

在电力市场中&#xff0c;电价是调节供需关系的重要杠杆。对于工商业用户而言&#xff0c;了解并合理利用电价结构&#xff0c;不仅能有效控制成本&#xff0c;还能提升运营效率。加权电价&#xff0c;作为电价计算中的一个重要概念&#xff0c;尤其值得关注和掌握。 一、加权电…

二叉树的前序遍历---一个简单高效的算法

今天刷了一道题&#xff0c;对一个二叉树进行前序遍历&#xff1a;根节点--》左子树节点--》右子树节点。 题目要求将一棵树的每个非Null节点的值用一个List列表返回&#xff1b; 我的思路&#xff1a;执行函数创建List并加入当前值&#xff0c;因为函数是递归调用的&#xff…

DotNet使用CsvHelper快速读取和写入CSV文件的操作方法

在日常开发中使用CSV文件进行数据导入和导出、数据交换是非常常见的需求&#xff0c;以下来讲讲在DotNet中如何使用CsvHelper这个开源库快速实现CSV文件读取和写入&#xff0c;需要的朋友可以参考下 CsvHelper类库介绍 CsvHelper是一个.NET开源、快速、灵活、高度可配置、易于…

Layui layui.treeTable 树表格组件 去除图标展示

下面的样式设置是为了在layui树形表格中移除默认的文件夹和叶子节点图标&#xff0c;以及如何设置节点展开和子节点的图标为空 /* 节点未展开时的图标 */.layui-icon-folder:before { content: "";}/* 节点展开时的图标 */.layui-icon-folder-open:before {content: …

网络编程——Python简单TCP通信功能代码实践

这里写目录标题 Python简单TCP通信功能代码实践阅读本博客前需准备的几个问题1. 网络通信的机制是什么&#xff1f;2. 什么是python进行网络编程&#xff1f;3. IP地址和端口是什么&#xff1f; 一个简单的TCP通信功能示例&#xff1a;client端.pysever端.pyPYCHARM运行结果 Py…

ESP32开发__搭建VSCode开发环境试编译项目

目录 1. 概述 2. 安装相关必要插件 3. VSCode及相关扩展件安装 3.1. VS Code 3.2. ESP-IDF Visual Studio Code Extension 3.3. Configure ESP-IDF 4. Demo试运行 4.1. 打开工程 4.2. 连接设备并配置端口 4.3. 配置工程 4.3.1. 设置“目标”芯片 4.3.2. menuconfig…

丹摩征文活动|Llama3.1的部署与使用指南

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 丹摩征文 1. 初识Llama3.12. 部署流程创建实例登录实例部署LLama3.1 3. 实践使用教程4. 实践感想 前言&#xff1a;人工智能&#xff08;AI&…

柔性鞋材振动刀智能视觉裁切机市场报告:未来几年年复合增长率CAGR为5.4%

震动刀切割设备是一种利用振动刀片在各种非金属材料表面上切割的设备&#xff0c;振动刀切割机利用刀片高频振动和360度旋转&#xff0c;能保证每分钟上万次的振动频率&#xff0c;可在平面进行垂直切割&#xff0c;锋利裁剪。震动刀切割设备切割速度快&#xff0c;可以单层切割…

全面盘点多模态融合算法及应用场景

一、引言 多模态融合的定义 多模态融合&#xff08;Multimodal Fusion&#xff09;是指结合来自不同模态&#xff08;如视觉、听觉、文本等&#xff09;的数据&#xff0c;以提升信息处理和理解能力的技术方法。多模态数据通常具有不同的物理性质和信息特征&#xff0c;通过融…

双十一当天有哪些数码好物值得购买,双十一爆款数码好物大盘点

在数字化时代&#xff0c;数码产品已成为我们生活中不可或缺的一部分。无论是提升工作效率的笔记本电脑&#xff0c;还是丰富娱乐生活的智能设备&#xff0c;或是健康监测的智能穿戴&#xff0c;每一款产品都在以不同的方式改善着我们的生活质量。 双十一&#xff0c;作为一年中…

.wslconfig:6 中的未知密钥 ‘boot.systemd‘ 问题解决

我的环境 wsl 2 centos 9 部分博客通过修改 windows上 .wslconfig, 添加如下配置 来启动 systemd [boot] systemdtrue完全误人子弟, 倘若如此配置, 启动 wsl 时会遇到如下错误: C:\Users\2024>wsl wsl: C:\Users\2024\.wslconfig:6 中的未知密钥 boot.systemd正确启用…

独家|京东上线自营秒送,拿出二十年底牌和美团竞争

京东自营秒送开启招商&#xff0c;即时零售也要全托管&#xff1f; 作者|王迟 编辑|杨舟 据「市象」独家获悉&#xff0c;京东将在近期上线自营秒送业务&#xff0c;目前已经开始邀约制招商。「市象」获得的招商资料显示&#xff0c;和5月刚升级上线的京东秒送以POP模式不同&…

使用微信云开发,实现链接激活微信小程序(微信内部和外部H5访问)

首先小程序项目开发&#xff0c;需得支持云开发如何开通云开发&#xff1f;&#xff08;网上教程很多&#xff0c;也很全面&#xff0c;这里仅带过&#xff09; 配置云函数在项目根目录找到 project.config.json 文件&#xff0c;新增 cloudfunctionRoot 字段&#xff0c;指定本…

【ComfyUI +LaMa】图像修复(根据mask移除目标)——comfyui-lama-remover

相关资源下载&#xff1a;https://pan.baidu.com/s/18IL23I-NuXeQMp0W3F6kdA?pwd1111 comfyui-lama-remover &#xff08;手动涂mask或者上传mask&#xff09; https://github.com/Layer-norm/comfyui-lama-remover 原始项目链接 https://github.com/advimman/lama 方法1…

什么是 WPF 中的转换器?如何自定义一个值转换器?

WPF&#xff08;Windows Presentation Foundation&#xff09;中的“转换器”&#xff08;Converter&#xff09;是用来在绑定过程中&#xff0c;将源数据转换为目标数据格式的工具。它常常用于将数据模型中的值转换为视图需要的格式&#xff0c;或反向转换。转换器通常实现IVa…

网络安全之命令注入漏洞解析

漏洞简介 Atlassian Bitbucket Server 和 Data Center 是 Atlassian 推出的一款现代化代码协作平台&#xff0c;支持代码审查、分支权限管理、CICD 等功能。 受影响的Bitbucket Server 和 Data Center版本存在使用环境变量的命令注入漏洞&#xff0c;具有控制其用户名权限的攻…

关于我重生到21世纪学C语言这件事——函数详解

与诸君共进步&#xff01;&#xff01;&#xff01; 文章目录 1. 函数是什么2. 库函数3. 自定义函数4. 函数参数5. 函数调用6. 函数的嵌套调用和链式访问7. 函数的声明和定义8. 函数递归8.1 什么是递归8.2 递归的限制条件8.3 递归的举例8.4 递归与迭代 1. 函数是什么 数学中我们…