Qwen2.5-VL 是什么

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

🚀 快速阅读

模型介绍:Qwen2.5-VL 是阿里通义千问团队开源的旗舰视觉语言模型,具有3B、7B和72B三种不同规模。

主要功能:支持视觉理解、长视频处理、结构化输出和设备操作。

技术原理:采用 ViT 加 Qwen2 的串联结构,支持多模态旋转位置编码(M-ROPE)和任意分辨率图像识别。

正文(附运行示例)

Qwen2.5-VL 是什么

Qwen2.5-VL 是阿里通义千问团队开源的旗舰视觉语言模型,具有3B、7B和72B三种不同规模。该模型在视觉理解方面表现出色,能够识别常见物体,分析图像中的文本、图表等元素。

Qwen2.5-VL 具备作为视觉Agent的能力,可以推理并动态使用工具,初步操作电脑和手机。在视频处理上,Qwen2.5-VL 能够理解超过1小时的长视频,精准定位相关片段捕捉事件。模型还支持发票、表单等数据的结构化输出。

Qwen2.5-VL 在多个性能测试中表现优异,在文档和图表理解方面优势明显,7B模型在多项任务中超越了GPT-4o-mini。模型的推出为开发者提供了强大的工具,能够在多种应用场景中发挥重要作用。

Qwen2.5-VL 的主要功能

视觉理解:能识别常见物体,如花、鸟、鱼和昆虫,能分析图像中的文本、图表、图标、图形和布局。

视觉Agent能力:可以直接作为一个视觉Agent,推理并动态地使用工具,初步具备使用电脑和使用手机的能力。

理解长视频和捕捉事件:能理解超过1小时的视频,精准定位相关视频片段来捕捉事件。

视觉定位:可以通过生成bounding boxes或者points来准确定位图像中的物体,能为坐标和属性提供稳定的JSON输出。

结构化输出:对于发票、表单、表格等数据,支持其内容的结构化输出。

Qwen2.5-VL 的技术原理

模型结构:Qwen2.5-VL 延续了上一代 Qwen-VL 中 ViT 加 Qwen2 的串联结构,三个不同规模的模型都采用了 600M 规模大小的 ViT,支持图像和视频统一输入。使模型能更好地融合视觉和语言信息,提高对多模态数据的理解能力。

多模态旋转位置编码(M-ROPE):Qwen2.5-VL 采用的 M-ROPE 将旋转位置编码分解成时间、空间(高度和宽度)三部分,使大规模语言模型能同时捕捉和整合一维文本、二维视觉和三维视频的位置信息,赋予了模型强大的多模态处理和推理能力。

任意分辨率图像识别:Qwen2.5-VL 可以读懂不同分辨率和不同长宽比的图片,对图像的清晰度或大小能轻松识别。基于 naive dynamic resolution 支持,能将任意分辨率的图像映射成动态数量的视觉 token,保证了模型输入和图像信息的一致性。

网络结构简化:与 Qwen2-VL 相比,Qwen2.5-VL 增强了模型对时间和空间尺度的感知能力,进一步简化了网络结构以提高模型效率。

如何运行 Qwen2.5-VL

1. 安装依赖

首先,确保安装了必要的依赖库:

pip install git+https://github.com/huggingface/transformers accelerate

如果你不使用 Linux,可能无法安装 decord,可以使用 pip install qwen-vl-utils 来回退到使用 torchvision 进行视频处理。但你可以通过 安装 decord from source 来使用 decord。

2. 加载模型

加载模型并准备进行推理:

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-7B-Instruct", torch_dtype="auto", device_map="auto"

)

# 加载处理器

processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-VL-7B-Instruct")

# 准备消息

messages = [

{

"role": "user",

"content": [

{

"type": "image",

"image": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg",

},

{

"type": "text", "text": "Describe this image."},

],

}

]

# 准备推理

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)

资源

项目官网:https://qwenlm.github.io/blog/qwen2.5-vl

GitHub 仓库:https://github.com/QwenLM/Qwen2.5-VL

千问模型在线体验:https://chat.qwenlm.ai/

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

Copyright © 2022 破界远征沙盒工坊 All Rights Reserved.