ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Qwen2.5-VL 视觉输入像素控制实操:qwen-vl-utils 3 个函数搞定尺寸与帧数

Qwen2.5-VL 视觉输入像素控制实操:qwen-vl-utils 3 个函数搞定尺寸与帧数 Qwen2.5-VL 视觉输入像素控制实操qwen-vl-utils 3 个函数搞定尺寸与帧数【免费下载链接】Qwen3-VLQwen3-VL is the multimodal large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen3-VL把一张 4000×3000 的照片或一段十分钟的视频直接丢给 Qwen2.5-VL结果大概率是报错或者 token 爆掉图像宽高没对齐、总像素超预算、视频抽的帧多到塞不进上下文。qwen-vl-utils 这个工具包就是为 Qwen2.5-VL 的视觉输入做像素控制的smart_resize 管图像尺寸smart_nframes 管视频帧数process_vision_info 作为统一入口把原始文件变成模型能吃的张量。为什么模型吃图前要先压一压Qwen-VL 系列对视觉输入有几条硬性约定图片宽高都要是 28 的倍数patch 尺寸 14 × 空间合并 2整图总像素有上下限对应约 4 个到 16384 个视觉 token视频要按指定帧率抽帧且每帧同样受像素预算约束。这些计算手工做容易出错qwen-vl-utils 的定位就是把它们固化成几个函数你只管把路径写进 messages它负责缩放、抽帧、转 RGB、对齐尺寸。一条命令安装三步完成首次调用安装pip install qwen-vl-utils第一次调用把消息列表交给 process_vision_info 即可from qwen_vl_utils import process_vision_info messages [{ role: user, content: [ {type: image, image: file:///path/to/your/image.jpg}, {type: text, text: 描述这张图片}, ], }] images, videos process_vision_info(messages)返回值是两个列表images 装着缩放后的 PIL 图像videos 装着抽好帧的视频张量没有对应输入时是 None。Qwen2.5-VL 还需要第三个返回值传给 processor 时展开使用images, videos, video_kwargs process_vision_info(messages, return_video_kwargsTrue) inputs processor(texttext, imagesimages, videosvideos, paddingTrue, return_tensorspt, **video_kwargs)图像尺寸怎么定smart_resize 的对齐与预算规则它负责什么输入高宽输出对齐后的目标高宽。怎么调from qwen_vl_utils import smart_resize h, w smart_resize(800, 600, factor28)关键参数含义factor宽高必须整除的因子图像预处理里通常是 28min_pixels/max_pixels总像素的上下限不传时默认对应 4 个 token约 3136 像素和 16384 个 token约 12845056 像素。图太小会被放大到下限太大则等比缩到上限内原图宽高比超过 200:1 会直接抛 ValueError属于异常素材建议前置检查。视频抽多少帧才合理smart_nframes 的计算逻辑它负责什么根据视频时长和你给的配置算出最终抽取的帧数。怎么调from qwen_vl_utils import smart_nframes nframes smart_nframes({fps: 2.0}, total_frames300, video_fps30)关键参数含义配置 dict 里二选一nframes直接指定帧数会取整到偶数因为帧对齐因子 FRAME_FACTOR 为 2或fps按视频时长 × 采样帧率计算fps 模式下还有min_frames默认 4和max_frames默认 768兜底且最终帧数不会超过视频总帧数total_frames、video_fps是视频本身的总帧数与原始帧率通常由读取后端自动填好。统一入口做了什么process_vision_info 的三条流水线它负责什么把 messages 里所有视觉条目批量转成可进模型的格式。怎么调见上一节的最小示例图像与视频条目混在同一个 messages 里也没问题。内部做三件事提取遍历消息内容挑出所有 image / image_url / video 条目图像流水线兼容本地路径file://、URL、base64、PIL 对象四种来源统一转 RGB再按 smart_resize 缩放到目标尺寸视频流水线选定读取后端打开视频用 smart_nframes 决定帧数、smart_resize 缩放每帧输出 TCHW 张量。若你传的是已抽好的帧列表而不是视频路径内部会用线程池并行处理各帧。图像输入实战一张照片的完整走查messages [{ role: user, content: [ {type: image, image: file:///abs/path/to/bird.jpg, resized_height: 280, resized_width: 420}, {type: text, text: 描述这张图片}, ], }] images, videos process_vision_info(messages)参数解读resized_height/resized_width是期望的目标尺寸工具会自动对齐到 28 的倍数280×420 本身恰好对齐。不传这两个字段时就按原图比例在像素预算内自适应缩放一般场景更推荐省掉、交给默认逻辑。下面这张图就是一个典型的图像输入素材1920×1080风景照里带文字、小目标预处理后才会以远小于原图尺寸的形式进入模型视频输入实战抽帧与分辨率一起交代清楚messages [{ role: user, content: [ {type: video, video: file:///abs/path/to/driving.mp4, fps: 2.0, resized_height: 280, resized_width: 280}, {type: text, text: 描述这段视频}, ], }] images, videos, video_kwargs process_vision_info( messages, return_video_kwargsTrue)参数解读fps采样密度2.0 表示每 0.5 秒取一帧最终帧数落在 4~768 之间resized_height/resized_width每帧的目标尺寸同样自动对齐 28min_frames/max_frames可选在 fps 模式下进一步收紧帧数边界video_kwargs是 Qwen2.5-VL 调用 processor 时需要的视频参数含实际采样 fps务必展开传入。自动驾驶视角的视频帧是常见的多目标长视频素材抽帧加缩放在这里尤其能省 token环境变量开关什么时候需要手动设置代码之外还有几个环境变量按需设置即可多数场景保持默认没毛病FORCE_QWENVL_VIDEO_READER把视频读取后端钉死为decord、torchvision或torchcodec之一。不设置时按 torchcodec → decord → torchvision 的顺序探测谁装了用谁排查明明装了 decord 却走了别的后端这类问题时用它锁定 TORCHCODEC_NUM_THREADStorchcodec 后端解码时使用的 ffmpeg 线程数默认 8。CPU 核数少或机器上并发任务多时调小VIDEO_MAX_PIXELS按模型可接受的最大 token 数给视频总像素设上限例如export VIDEO_MAX_PIXELS32000*28*28*0.9防止长视频撑爆上下文MODEL_SEQ_LEN上下文长度默认 128000它会影响每帧像素的默认分配换用长上下文模型时可以同步调整。批量、内存与排错性能建议四条批量处理帧video 字段直接传帧列表时内部已用 ThreadPoolExecutor 并行缩放各帧最多 8 个 workerMAX_NUM_WORKERS_FETCH_VIDEO你自己再套一层线程池通常没有收益控内存单帧分辨率由 max_pixels / resized_height / resized_width 决定长视频优先用 max_frames 压帧数比压分辨率更不伤理解效果线程调优解码是重头开销TORCHCODEC_NUM_THREADS 对着 CPU 核数微调即可别盲目拉满读视频失败怎么办选定的后端抛错时工具会打一条 warning 并自动降级到 torchvision 重读流程不会中断。排查时看两个地方stderr 里打印的实际后端qwen-vl-utils using xxx to read video.以及降级 warning 里的原始报错——常见原因包括容器缺解码依赖、http(s) 路径在旧版 torchvision 上不受支持需 0.19.0 以上、素材本身损坏。写在最后尺寸对齐、像素预算、帧数计算这些细节交给 qwen-vl-utils 之后你的代码里只剩一条 messages。想继续深入实现细节可以直接翻 qwen-vl-utils/src/qwen_vl_utils/vision_process.py需要自己训练场景下的数据拼装qwen-vl-finetune/ 里的示例可以直接参考。【免费下载链接】Qwen3-VLQwen3-VL is the multimodal large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen3-VL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表