许可证:apache-2.0
语言:
- 英文
任务标签:图像文本到文本
标签:
- 多模态
库名称:transformers
基础模型:
- Qwen/Qwen2.5-VL-32B-Instruct
Qwen2.5-VL-32B-Instruct
最新更新:
除了原有的功能外,我们通过强化学习进一步提升了Qwen2.5-VL-32B的数学和问题解决能力。这显著改善了模型的主观用户体验,调整了响应风格以更符合人类偏好。特别是在数学、逻辑推理和知识问答等客观查询方面,回答的详细程度和格式清晰度有了明显提升。
简介
自Qwen2-VL发布以来的五个月里,众多开发者在Qwen2-VL视觉语言模型的基础上构建了新模型,并提供了宝贵反馈。在此期间,我们专注于打造更具实用性的视觉语言模型。今天,我们很高兴推出Qwen家族的最新成员:Qwen2.5-VL。
主要增强功能:
- 视觉理解能力:Qwen2.5-VL不仅擅长识别常见物体如花鸟鱼虫,还能高效分析图像中的文本、图表、图标、图形和布局。
- 代理能力:Qwen2.5-VL可直接作为视觉代理,具备推理和动态调用工具的能力,适用于计算机和手机操作场景。
- 长视频理解与事件捕捉:Qwen2.5-VL能理解超过1小时的视频,并新增了通过精确定位相关片段来捕捉事件的能力。
- 多格式视觉定位:Qwen2.5-VL能通过生成边界框或点来精确定位图像中的对象,并稳定输出坐标和属性的JSON格式数据。
- 结构化输出生成:针对发票扫描件、表格等数据,Qwen2.5-VL支持内容的结构化输出,适用于金融、商业等领域。
模型架构更新:
- 视频理解的动态分辨率与帧率训练:
通过动态FPS采样将动态分辨率扩展至时间维度,使模型能适应不同采样率的视频理解。同时,我们在时间维度更新了mRoPE,结合ID和绝对时间对齐,使模型能学习时间序列和速度,最终获得精确定位特定时刻的能力。
- 精简高效的视觉编码器:
通过策略性地在ViT中实现窗口注意力机制,提升了训练和推理速度。ViT架构进一步采用SwiGLU和RMSNorm优化,与Qwen2.5大语言模型结构保持一致。
我们提供30亿、70亿和720亿参数的三款模型。本仓库包含经过指令调优的320亿参数Qwen2.5-VL模型。更多信息请访问我们的博客和GitHub。
评估
视觉能力
数据集 |
Qwen2.5-VL-72B (🤗🤖) |
Qwen2-VL-72B (🤗🤖) |
Qwen2.5-VL-32B (🤗🤖) |
MMMU |
70.2 |
64.5 |
70 |
MMMU Pro |
51.1 |
46.2 |
49.5 |
MMStar |
70.8 |
68.3 |
69.5 |
MathVista |
74.8 |
70.5 |
74.7 |
MathVision |
38.1 |
25.9 |
40.0 |
OCRBenchV2 |
61.5/63.7 |
47.8/46.1 |
57.2/59.1 |
CC-OCR |
79.8 |
68.7 |
77.1 |
DocVQA |
96.4 |
96.5 |
94.8 |
InfoVQA |
87.3 |
84.5 |
83.4 |
LVBench |
47.3 |
- |
49.00 |
CharadesSTA |
50.9 |
- |
54.2 |
VideoMME |
73.3/79.1 |
71.2/77.8 |
70.5/77.9 |
MMBench-Video |
2.02 |
1.7 |
1.93 |
AITZ |
83.2 |
- |
83.1 |
Android Control |
67.4/93.7 |
66.4/84.4 |
69.6/93.3 |
ScreenSpot |
87.1 |
- |
88.5 |
ScreenSpot Pro |
43.6 |
- |
39.4 |
AndroidWorld |
35 |
- |
22.0 |
OSWorld |
8.83 |
- |
5.92 |
文本能力
模型 |
MMLU |
MMLU-PRO |
数学 |
GPQA-diamond |
MBPP |
人类评估 |
Qwen2.5-VL-32B |
78.4 |
68.8 |
82.2 |
46.0 |
84.0 |
91.5 |
Mistral-Small-3.1-24B |
80.6 |
66.8 |
69.3 |
46.0 |
74.7 |
88.4 |
Gemma3-27B-IT |
76.9 |
67.5 |
89 |
42.4 |
74.4 |
87.8 |
GPT-4o-Mini |
82.0 |
61.7 |
70.2 |
39.4 |
84.8 |
87.2 |
Claude-3.5-Haiku |
77.6 |
65.0 |
69.2 |
41.6 |
85.6 |
88.1 |
要求
Qwen2.5-VL的代码已集成至最新版Hugging Face transformers库,建议通过以下命令从源码安装:
pip install git+https://github.com/huggingface/transformers accelerate
否则可能遇到以下错误:
KeyError: 'qwen2_5_vl'
快速开始
以下提供简单示例展示如何使用🤖 ModelScope和🤗 Transformers运行Qwen2.5-VL。
我们提供工具包帮助更方便地处理各类视觉输入(如base64、URL及交错排列的图像视频),安装命令如下:
pip install qwen-vl-utils[decord]==0.0.8
若非Linux系统可能无法通过PyPI安装decord,可使用pip install qwen-vl-utils
回退到torchvision处理视频,但仍可从源码安装decord。
使用🤗 Transformers对话
以下是使用transformers
和qwen_vl_utils
的聊天模型代码片段:
from transformers import Qwen2_5_VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
"Qwen/Qwen2.5-VL-32B-Instruct", torch_dtype="auto", device_map="auto"
)
processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-VL-32B-Instruct")
messages = [
{
"role": "user",
"content": [
{
"type": "image",
"image": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg",
},
{"type": "text", "text": "描述这张图片。"},
],
}
]
text = processor.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
text=[text],
images=image_inputs,
videos=video_inputs,
padding=True,
return_tensors="pt",
)
inputs = inputs.to("cuda")
generated_ids = model.generate(**inputs, max_new_tokens=128)
generated_ids_trimmed = [
out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_text)
多图推理
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": "file:///path/to/image1.jpg"},
{"type": "image", "image": "file:///path/to/image2.jpg"},
{"type": "text", "text": "找出这些图片的共同点。"},
],
}
]
视频推理
messages = [
{
"role": "user",
"content": [
{
"type": "video",
"video": [
"file:///path/to/frame1.jpg",
"file:///path/to/frame2.jpg",
"file:///path/to/frame3.jpg",
"file:///path/to/frame4.jpg",
],
},
{"type": "text", "text": "描述这段视频。"},
],
}
]
更多使用技巧
图像分辨率优化
模型支持多种分辨率输入。默认使用原始分辨率,但更高分辨率可提升性能(需更多计算)。用户可通过设置最小/最大像素数实现最优配置(如256-1280 token范围):
min_pixels = 256 * 28 * 28
max_pixels = 1280 * 28 * 28
processor = AutoProcessor.from_pretrained(
"Qwen/Qwen2