/chat/completions
接口时,构造包含 图片 url
或 base64 编码图片
的 message
消息内容进行调用。通过 detail
参数控制对图像的预处理方式。
low
,high
,auto
三个 detail
参数选项。
对于目前支持的模型,detail
不指定或指定为 high
时会采用 high
(“高分辨率”)模式,而指定为 low
或者 auto
时会采用 low
(“低分辨率”)模式。
message
消息格式示例InternVL
系列模型注意:建议将 {"type": "text", "text": "text-prompt here"}
放在请求体 content
的图片后面,以获得最佳效果。 Qwen2-VL
最高支持像素是 3584 * 3584= 12845056
,最低支持像素是 56 * 56 = 3136
,会对先对每张图片长短边均放缩至28的倍数 (h * 28) * (w * 28)
。如果不在最小像素和最大像素区间内,再等比缩放至该区间。
detail=low
时将所有图片resize 成 448 * 448
尺寸,最终对应 256 tokens
;detail=high
时等比缩放,首先将长宽按照最近的 28
倍数向上取整,然后再等比缩放至像素区间 (3136, 12845056)
,并保证长宽均为 28
整数倍。224 * 448
和 1024 x 1024
和 3172 x 4096
的图片,选择 detail=low
时,均消耗 256 tokens
;224 * 448
的图片,选择 detail=high
时,因为 224 * 448
在像素区间内,且长宽均为 28
倍数,消耗 (224/28) * (448/28) = 8 * 16 = 128 tokens
;1024 * 1024
的图片,选择 detail=high
时,将长宽按照 28
的倍数向上取整至 1036 * 1036
,该数值在像素区间内,消耗 (1036/28) * (1036/28) = 1369 tokens
;3172 * 4096
的图片,选择 detail=high
时,将长宽按照 28
的倍数向上取整至 3192 * 4116
,该值超过最大像素,再将长宽等比例缩小至 3136 * 4060
,消耗 (3136/28) * (4060/28) = 16240 tokens
。InternVL2
实际处理的像素以及消耗的 tokens
数与原始图片的长宽比例有关。最低处理像素为 448 * 448
,最高为 12 * 448 * 448
。
detail=low
时将所有图片 resize 成 448 * 448
尺寸,最终对应 256 tokens
;detail=high
时会根据长宽比例,将图片 resize 成长宽均为 448
的倍数,(h * 448) * (w * 448)
,且 1 <= h * w <=12
。
h * w
按照如下规则选择:
h
和 w
均为整数,在满足 1 <= h * w <= 12
约束下,按照 h * w
从小到大的组合遍历;(h, w)
组合,如果原始图片长宽比例更接近 h / w
,那么选择该 (h, w)
组合;(h, w)
组合,如果原始图片像素大于 0.5 * h * w * 448 * 448
,那么选择数值更大的 (h, w)
组合。h * w = 1
,那么消耗 256 tokens
;h * w > 1
,按 448 * 448
滑动窗口,每个窗口均额外消耗 256 token
,一共 (h * w + 1) * 256 tokens
。224 * 448
、1024 * 1024
和 2048 * 4096
的图片,选择 detail=low
时,均消耗 256 tokens
;224 * 448
的图片,选择 detail=high
时,长宽比为1:2
,会缩放至 448 x 896
,此时 h = 1, w = 2
,消耗 (h * w + 1) * 256 = 768 tokens
;1024 * 1024
的图片,选择 detail=high
时,长宽比为1:1
,会缩放至 1344 * 1344 (h = w = 3)
,因为 1024 * 1024 > 0.5 * 1344 * 1344
. 此时 h = w = 3
,消耗 (3 * 3 + 1) * 256 = 2560 tokens
;2048 * 4096
的图片,选择 detail=high
时,长宽比为1:2
,在满足 1 <= h * w <= 12
条件下数值最大的 (h, w)
组合为 h = 2, w = 4
,所以会缩放至 896 * 1792
,消耗(2 * 4 + 1) * 256 = 2304 tokens
。