跳转至

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 使用

小结

多模态数据预处理工具,将各种格式的图像/视频统一为模型可接受的张量格式。