多模态模型图片换算tokens规则

qwen系统vl模型换算规则:

计算公式:图像Token = h_bar * w_bar / token_pixels + 2

h_bar、w_bar:缩放后的图像长宽,模型在处理图像前会进行预处理,会将图像缩小至特定像素上限内,像素上限与max_pixels和vl_high_resolution_images参数的取值有关,
相关章节:处理高分辨率图像。

token_pixels:每视觉Token对应的像素值,不同模型情况不同:

Qwen3-VL、qwen-vl-max-2025-08-13、qwen-vl-plus-2025-08-15、qwen-vl-plus-2025-07-10:每个Token对应 32x32像素

QVQ及其他Qwen2.5-VL模型:每个Token对应28x28像素

以下代码演示了模型内部对图像的大致缩放逻辑,可用于估算一张图像的Token,实际计费请以 API 响应为准。

import math
# 使用以下命令安装Pillow库:pip install Pillow
from PIL import Image

def token_calculate(image_path, max_pixels, vl_high_resolution_images):
    # 打开指定的PNG图片文件
    image = Image.open(image_path)

    # 获取图片的原始尺寸
    height = image.height
    width = image.width

    # 根据不同模型,将宽高调整为32或28的整数倍
    h_bar = round(height / 32) * 32
    w_bar = round(width / 32) * 32

    # 图像的Token下限:4 个 Token
    min_pixels = 4 * 32 * 32
    # 若 vl_high_resolution_images 设置为True,则输入图像Token上限为16386,对应的最大的像素值为16384 * 32 * 32 或 16384 * 28 * 28,否则为max_pixels设置的值
    if vl_high_resolution_images:
        max_pixels = 16384 * 32 * 32
    else:
        max_pixels = max_pixels

    # 对图像进行缩放处理,调整像素的总数在范围[min_pixels,max_pixels]内
    if h_bar * w_bar > max_pixels:
        # 计算缩放因子beta,使得缩放后的图像总像素数不超过max_pixels
        beta = math.sqrt((height * width) / max_pixels)
        # 重新计算调整后的宽高
        h_bar = math.floor(height / beta / 32) * 32
        w_bar = math.floor(width / beta / 32) * 32
    elif h_bar * w_bar < min_pixels:
        # 计算缩放因子beta,使得缩放后的图像总像素数不低于min_pixels
        beta = math.sqrt(min_pixels / (height * width))
        # 重新计算调整后的高度
        h_bar = math.ceil(height * beta / 32) * 32
        w_bar = math.ceil(width * beta / 32) * 32
    return h_bar, w_bar

if __name__ == "__main__":
    # 将test.png替换为本地的图像路径
    h_bar, w_bar = token_calculate("xxx/test.jpg", vl_high_resolution_images=False, max_pixels=16384*28*28, )
    print(f"缩放后的图像尺寸为:高度为{h_bar},宽度为{w_bar}")
    # 系统会自动添加<vision_bos>和<vision_eos>视觉标记(各计1个Token)
    token = int((h_bar * w_bar) / (28 * 28))+2
    print(f"图像的Token数为{token}")
posted @ 2025-12-10 09:52  RolandHe  阅读(0)  评论(0)    收藏  举报