模型特性简介
Qwen3-VL 在空间感知能力上有了显著提升,2D grounding 从绝对坐标转向相对坐标,支持判断物体方位、视角变化及遮挡关系,甚至能实现 3D grounding,为复杂场景下的空间推理和具身智能打下基础。OCR 方面,支持语言从 10 种扩展到 32 种,在复杂光线、模糊或倾斜等挑战性场景下表现更稳定。
其核心改进主要体现在三点:
一是采用 MRoPE-Interleave 位置编码。原始 MRoPE 将特征维度按时间、高度和宽度顺序分块,导致时间信息全部分布在高频维度。Qwen3-VL 采取 t, h, w 交错分布形式,实现对全频率覆盖,在保证图片理解能力的同时提升了对长视频的理解鲁棒性。
二是引入 DeepStack 技术。融合 ViT 多层次特征,将以往多模态大模型单层输入视觉 tokens 的范式,改为在大型语言模型的多层中进行注入。这种多层注入方式配合优化的视觉特征 token 化策略,能有效保留从底层到高层的丰富视觉信息,显著提升图文对齐精度。
三是升级视频时序建模机制。将原有的 T-RoPE 升级为文本时间戳对齐机制,采用'时间戳 - 视频帧'交错的输入形式,实现帧级别的时间信息与视觉内容的细粒度对齐,显著提升了模型对视频中动作、事件的语义感知与时间定位精度。
环境配置
首先创建独立的 Conda 环境并安装依赖。注意命令中需指定环境名称 -n。
conda create -n qwen3-vl python=3.10 -y
conda activate qwen3-vl
pip install accelerate
pip install qwen-vl-utils==0.0.14
uv pip install -U vllm>=0.11.0
获取代码与权重
若网络受限无法直接访问 GitHub,可下载压缩包后解压。使用 Git 克隆仓库:
git clone https://github.com/QwenLM/Qwen3-VL
模型权重文件较大,建议使用 ModelScope 进行下载。先安装库,再执行下载命令:
pip install modelscope
modelscope download --model Qwen/Qwen3-VL-2B-Instruct
推理测试
加载模型前,请确保路径指向已下载的本地权重目录。以下示例展示了如何加载模型并进行多模态查询,适用于本地显存约 10GB 的环境(如 RTX 3080)。
from transformers import Qwen3VLForConditionalGeneration, AutoProcessor
import torch
from PIL import Image
def load_qwen3_vl_4b_model():
"""加载 Qwen3-VL-4B-Instruct 模型和处理器"""
model = Qwen3VLForConditionalGeneration.from_pretrained(
"Qwen/Qwen3-VL-4B-Instruct",
torch_dtype=torch.bfloat16,
device_map="auto",
attn_implementation="flash_attention_2" # 可选,用于加速
)
processor = AutoProcessor.from_pretrained("Qwen/Qwen3-VL-4B-Instruct")
return model, processor
def process_multimodal_query():
image = Image.(image_path).convert()
messages = [
{
: ,
: [
{: , : image},
{: , : text_query}
]
}
]
inputs = processor.apply_chat_template(
messages, tokenize=, add_generation_prompt=,
return_dict=, return_tensors=
)
generated_ids = model.generate(
**inputs, max_new_tokens=, do_sample=,
temperature=, top_p=
)
generated_ids_trimmed = [
out_ids[(in_ids):] in_ids, out_ids (inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
generated_ids_trimmed, skip_special_tokens=, clean_up_tokenization_spaces=
)
output_text[] output_text
__name__ == :
model, processor = load_qwen3_vl_4b_model()
image_path =
query =
result = process_multimodal_query(model, processor, image_path, query)
(, result)


