Qwen2-VL 发布:开源 2B/7B 视觉语言模型和 72B API,具备最先进的图像、视频和多语言能力
TL;DR
Qwen 发布了 Qwen2‑VL,一个新的视觉语言模型系列(2B、7B 开源,72B 通过 API),在图像、多图像和长视频理解方面实现了最先进的性能,支持图像中的数十种语言,并且可以作为移动设备和机器人等设备的视觉代理。
Qwen2‑VL 概览
Qwen2‑VL 是基于 Qwen2 语言骨干构建的最新视觉语言模型系列。此次发布包括三种模型规模:
- Qwen2‑VL‑2B – 为移动部署优化的紧凑模型。
- Qwen2‑VL‑7B – 兼具成本效益且保留图像、多图像和视频能力的模型。
- Qwen2‑VL‑72B – 通过 API 提供的大型模型,提供顶级性能,常常超越闭源竞争对手如 GPT‑4o 和 Claude 3.5‑Sonnet。
这三种变体共享一种将 Vision Transformer(≈600 M 参数)与 Qwen2 大语言模型耦合的通用架构,并以 Apache 2.0 许可证发布(2B 和 7B),或通过商业 API(72B)提供。
关键技术进展
简单动态分辨率
Qwen2‑VL 引入了 Naive Dynamic Resolution,它将任意图像分辨率映射到动态数量的视觉标记。此方法消除了早期模型固定大小标记的瓶颈,更贴近人类视觉感知,使模型能够在不丢失细节的情况下处理任何图像尺寸。
多模态旋转位置嵌入 (M‑ROPE)
M‑ROPE 机制将原始旋转嵌入分解为三个组件(时间、高度、宽度)。通过这种方式,模型同时对 1‑D 文本、2‑D 视觉和 3‑D 视频位置信息进行编码,提升了对空间和时间关系的推理能力。
性能亮点
图像与文档理解
- 最先进 在 MathVista、DocVQA、RealWorldQA 和 MTVQA 等基准上。
- 7B 模型在文档中心任务(DocVQA)和多语言文本图像理解(MTVQA)方面表现出色,取得了可比规模开源模型中最高的报告分数。
- 尽管体积小,2B 模型在文档和视频任务上仍然超越了许多同类模型。
视频理解
- Qwen2‑VL 能够处理超过 20 分钟 的视频,实现高质量的视频问答、对话和内容创作。
- 在视频基准上,72B 模型相较于 GPT‑4o 和 Claude 3.5‑Sonnet 展现出明显优势,而 7B 和 2B 模型在成本敏感的应用中仍具竞争力。
图像中的多语言文本
- 除了英语和中文,模型还能理解图像中大多数欧洲语言、日语、韩语、阿拉伯语、越南语以及其他文字脚本。
展示的能力
增强的对象与手写文本识别
Qwen2‑VL 能够识别复杂的对象关系,并准确读取多语言的手写文本。在提供的示例中,它精确列出了堆叠盒子的颜色和编号。
视觉推理与代码生成
模型能够解决以截图形式呈现的算法问题,生成正确的 Python 实现。它还能够解释图表和高度失真的宽高比图像,将视觉感知与逻辑推理相结合。
视频摘要与实时交互
Qwen2‑VL 能生成详细的视频描述,回答后续问题(例如,“宇航员的衣服是什么颜色?”),并保持实时聊天流,充当个人视频助理。
视觉代理与函数调用
通过将视觉线索与函数调用相结合,Qwen2‑VL 能根据所见获取实时数据(航班状态、天气、包裹追踪)。此能力为移动设备、机器人及其他设备的自主运行铺平了道路。
局限性
- 模型无法从视频中提取音频。
- 知识截止于 2023 年 6 月。
- 对复杂指令的准确性无法保证。
- 在计数、细粒度字符识别和 3‑D 空间感知方面仍存在不足。
入门指南
API 访问(72B)
from openai import OpenAI
import os, base64
def encode_image(path):
with open(path, "rb") as f:
return base64.b64encode(f.read()).decode("utf-8")
image_path = "dog_and_girl.jpeg"
base64_image = encode_image(image_path)
client = OpenAI(api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
completion = client.chat.completions.create(
model="qwen-vl-max-0809",
messages=[{"role": "user",
"content": [{"type": "text", "text": "What is this?"},
{"type": "image_url",
"image_url": {"url": "https://.../dog_and_girl.jpeg"}},
{"type": "image_url",
"image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}]
}],
top_p=0.8, stream=True, stream_options={"include_usage": True})
for chunk in completion:
print(chunk.model_dump_json())
开源模型(2B 与 7B)
从源码安装最新的 Transformers,以避免 KeyError: 'qwen2_vl':
pip install git+https://github.com/huggingface/transformers
安装 visual‑utility 包:
pip install qwen-vl-utils
使用 Hugging Face Transformers 的最小推理脚本(7B):
from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
from qwen_vl_utils import process_vision_info
model = Qwen2VLForConditionalGeneration.from_pretrained(
"Qwen/Qwen2-VL-7B-Instruct", device_map="auto")
processor = AutoProcessor.from_pretrained("Qwen/Qwen2-VL-7B-Instruct")
messages = [{"role": "user",
"content": [{"type": "image",
"image": "https://.../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")
generated_ids = model.generate(**inputs, max_new_tokens=128)
output = processor.batch_decode(generated_ids[:, inputs.input_ids.shape[-1]:],
skip_special_tokens=True)
print(output)
仓库还提供了量化(AutoGPTQ、AutoAWQ)、使用 vLLM 部署以及通过 Llama‑Factory 微调的指南。
许可证与可用性
- Qwen2‑VL‑2B 与 Qwen2‑VL‑7B – Apache 2.0 许可证,托管于 Hugging Face 和 ModelScope。
- Qwen2‑VL‑72B – 商业 API(DashScope),按使用量计费。
未来方向
Qwen 的路线图提到将在即将推出的语言骨干上构建更强的视觉语言模型,并扩展到更多模态,目标是实现能够在统一框架中处理视觉、音频及其他感官数据的“全能模型”。