vision_utils.py — 多模态视觉处理¶
文件路径: verl/utils/dataset/vision_utils.py
文件概述¶
处理多模态(图像和视频)输入的工具函数。支持 Qwen2-VL 等视觉语言模型的数据格式。
核心函数¶
1. 图像处理¶
def process_image(image, image_patch_size=14):
"""将图像字典或 PIL Image 转为标准 RGB 格式"""
if isinstance(image, Image.Image):
return image.convert("RGB")
if "bytes" in image:
image["image"] = Image.open(BytesIO(image["bytes"]))
return fetch_image(image, image_patch_size=image_patch_size)
支持从字节流、文件路径或 PIL Image 对象加载图像。
2. 视频处理¶
def process_video(video, image_patch_size=14, nframes=None, fps=None, ...):
"""将视频字典转为 [n_frames, 3, H, W] 张量"""
return fetch_video(video, image_patch_size=image_patch_size, ...)
支持从视频文件或帧列表加载,可以指定帧数或 FPS。
3. MiniCPM-o 专用处理¶
def process_multi_modal_inputs_for_minicpmo(input_ids, attention_mask, position_ids, cu_seqlens, multi_modal_inputs):
"""为 MiniCPM-o 模型调整图像边界和像素值"""
与其他模块的关系¶
- 依赖
qwen_vl_utils库进行图像/视频获取 - 被
rl_dataset.py和multiturn_sft_dataset.py使用
小结¶
多模态数据预处理工具,将各种格式的图像/视频统一为模型可接受的张量格式。