视觉多模态
🕒 阅读时间:约 16 分钟
📅 2026-03 深度精选
Qwen2.5-VL 视觉语言大模型:动态分辨率解析、文档抽取与视频理解实录
支持任意长宽比与长视频序列的 Qwen2.5-VL 彻底重构了视觉多模态体验。本文从动态分辨率原理切入,给出镜像高速下载与端到端高精度图表抽取代码实战。
👁️ 一、Qwen2.5-VL 视觉架构新突破
Qwen2.5-VL 在视觉特征提取上摒弃了传统强制缩放到固定正方形尺寸(如 448x448)的做法,引入原生动态分辨率(Naive Dynamic Resolution):
- 根据图像原始长宽比切分为变长 Token 序列,细小文字与图表密集区域不再因下采样而模糊失真。
- 支持解析长达数十分钟的超长视频序列,具备细粒度时间戳事件定位能力。
⚡ 二、镜像拉取 7B / 72B 视觉权重
export HF_ENDPOINT="https://hf-mirror.net"
# 推荐拉取 Qwen2.5-VL-7B-Instruct (适合单卡 24G RTX 3090/4090)
huggingface-cli download Qwen/Qwen2.5-VL-7B-Instruct \
--local-dir /data/models/Qwen2.5-VL-7B-Instruct \
--local-dir-use-symlinks False
📝 三、Python 端到端文档抽取代码
import torch
from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor
from qwen_vl_utils import process_vision_info
model_path = "/data/models/Qwen2.5-VL-7B-Instruct"
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
model_path, torch_dtype="auto", device_map="auto"
)
processor = AutoProcessor.from_pretrained(model_path)
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": "invoice.jpg"},
{"type": "text", "text": "提取图片中的发票编号、开票日期、价税合计金额并返回结构化JSON。"}
]
}
]
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").to("cuda")
generated_ids = model.generate(**inputs, max_new_tokens=512)
result = processor.batch_decode(generated_ids, skip_special_tokens=True)
print(result[0])