库名称: transformers
标签:
- 几何
- 数学
许可证: apache-2.0
语言:
- 英文
基础模型:
- Qwen/Qwen2.5-VL-3B-Instruct
Qwen2.5-VL-3B-Instruct-Geo
简介
自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 LLM的结构保持一致。
我们提供了30亿、70亿和720亿参数的三个模型。本仓库包含经过指令调优的30亿参数Qwen2.5-VL模型。更多信息,请访问我们的博客和GitHub。
要求
Qwen2.5-VL的代码已集成至最新版Hugging Face transformers,建议通过以下命令从源码安装:
pip install git+https://github.com/huggingface/transformers accelerate
否则可能遇到以下错误:
KeyError: 'qwen2_5_vl'
快速开始
以下提供简单示例,展示如何使用🤖 ModelScope和🤗 Transformers运行Qwen2.5-VL。
Qwen2.5-VL的代码已集成至最新版Hugging Face transformers,建议通过以下命令从源码安装:
pip install git+https://github.com/huggingface/transformers accelerate
否则可能遇到以下错误:
KeyError: 'qwen2_5_vl'
我们提供了一个工具包,帮助您更便捷地处理各种视觉输入类型(如base64、URL及交错排列的图片和视频),就像使用API一样。可通过以下命令安装:
pip install qwen-vl-utils[decord]==0.0.8
若非Linux系统,可能无法从PyPI安装decord
。此时可使用pip install qwen-vl-utils
,将回退到使用torchvision处理视频。但仍可通过源码安装decord来加载视频时使用decord。
使用🤗 Transformers进行对话
这是一个监督微调模型,使用方式如下:
from transformers import AutoTokenizer, AutoProcessor, AutoModelForImageTextToText
from qwen_vl_utils import process_vision_info
from peft import PeftModel
model = AutoModelForImageTextToText.from_pretrained(
"kxxinDave/Qwen2.5-VL-instruct-3B-Geo",
device_map='auto',
torch_dtype=torch.bfloat16
)
processor = AutoProcessor.from_pretrained("kxxinDave/Qwen2.5-VL-instruct-3B-Geo")
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)
引用
如果您觉得我们的工作有帮助,欢迎引用。
@misc{qwen2.5-VL,
title = {Qwen2.5-VL},
url = {https://qwenlm.github.io/blog/qwen2.5-vl/},
author = {Qwen团队},
month = {一月},
year = {2025}
}
@article{Qwen2VL,
title={Qwen2-VL:增强视觉语言模型在任何分辨率下的世界感知能力},
author={王鹏、白帅、谭思南、王世杰、范志浩、白金泽、陈克勤、刘雪静、王佳琳、葛文斌、范阳、党凯、杜梦飞、任宣成、门睿、刘大一恒、周畅、周靖人、林俊洋},
journal={arXiv预印本 arXiv:2409.12191},
year={2024}
}
@article{Qwen-VL,
title={Qwen-VL:一个多功能视觉语言模型,用于理解、定位、文本阅读等},
author={白金泽、白帅、杨树盛、王世杰、谭思南、王鹏、林俊洋、周畅、周靖人},
journal={arXiv预印本 arXiv:2308.12966},
year={2023}
}