
回复
多模态大模型的目标检测任务可以通过GRPO训练增强,因此今天本文介绍的代码适用于需要预测边界框的多模态任务,代码将围绕"边界框预测任务"构建一套奖励机制,用于评估模型输出的质量,奖励以下维度:
extract_bbox(response)
:从模型输出文本中提取边界框信息。模型输出需用</think>
和<|FunctionCallEnd|>
包裹边界框数据(如[{"Position": [x1,y1,x2,y2], "Confidence": 0.9}, ...]
)。处理格式错误(如单引号转双引号、补全截断的JSON结构),返回解析后的边界框列表或None
(解析失败)。calculate_iou(bbox1, bbox2)
:计算两个边界框的交并比(IoU),衡量重叠程度。输入:两个边界框的坐标(x1,y1,x2,y2)
(左上角和右下角)。输出:IoU值(0~1,值越高重叠越好)。sort_and_calculate_iou(list1, list2, iou_threshold=0.5)
:将预测边界框与真实边界框匹配,计算IoU结果。步骤:
输出:列表[(iou1, confidence1), (iou2, confidence2), ...]
,记录每个预测框的匹配质量。
remove_duplicates(bbox_list)
:移除重复的边界框(通过坐标去重),确保每个边界框唯一。compute_reward_iou
:IoU(衡量位置准确性),匹配成功(IoU>0)时,置信度越高奖励越高;匹配失败(IoU=0)时,高置信度会被惩罚(奖励降低)。compute_reward_confidence
:衡量模型对预测的确定性。accuracy_reward_iou
:基于边界框IoU的准确性奖励。输入:模型预测(completions
)和标准答案(solution
)。1. 提取预测和真实的边界框,去重后计算IoU匹配结果。2. 用compute_reward_iou
计算奖励(0~1,值越高预测越准)。accuracy_reward_confidence
:基于预测置信度的准确性奖励。逻辑与accuracy_reward_iou
类似,但奖励更侧重预测框的置信度合理性(例如:匹配成功时高置信度加分,匹配失败时高置信度扣分)。format_reward
:与DeepSeek-R1那样对模型输出格式进行奖励。这里不多介绍。本文转载自大模型自然语言处理 作者:余俊晖