基于 Qwen3-VL-32B-Instruct 配置 |源码:image_processing_qwen2_vl.py
输入图像尺寸,实时计算 resize 后的大小和最终 token 数。
| 参数 | 值 | 说明 |
|---|---|---|
max_position_embeddings |
262,144 | 最大上下文长度(256K tokens) |
max_pixels |
16,777,216 | 单张图最大像素数(4096² = 16M) |
min_pixels |
65,536 | 单张图最小像素数(256²) |
patch_size |
16 | 每个 patch 覆盖 16×16 像素 |
spatial_merge_size |
2 | 2×2 patch 合并为 1 个 token |
factor (= patch × merge) |
32 | resize 后尺寸必须是 32 的整数倍 |
image_mean / std |
[0.5, 0.5, 0.5] | 归一化参数 |
| 宽高比上限 | 200:1 | 超过则报错 |
将 $H \times W$ 调整为 $\bar{H} \times \bar{W}$,满足:
每 1024 像素 = 1 个 LLM token
① 对齐:$\bar{H} = \text{round}(H / 32) \times 32$,$\bar{W}$ 同理
② 超过上限($\bar{H}\bar{W} > \text{max\_pixels}$):
$$\beta = \sqrt{\frac{HW}{\text{max\_pixels}}}, \quad \bar{H} = \max\!\Big(32, \Big\lfloor \frac{H}{\beta \cdot 32} \Big\rfloor \times 32\Big)$$③ 低于下限($\bar{H}\bar{W} < \text{min\_pixels}$):
$$\beta = \sqrt{\frac{\text{min\_pixels}}{HW}}, \quad \bar{H} = \Big\lceil \frac{H\beta}{32} \Big\rceil \times 32$$④ 在范围内:直接使用对齐后的尺寸。