Mask RCNN预测结果异常,自定义数据集训练后mAP始终为0.0
Mask R-CNN自定义数据集训练mAP为0.0排查建议
- 首先校验数据集标注与格式匹配性
- 确认标注类别ID和配置文件完全对应:单类车辆检测场景下
NUM_CLASSES需要算上背景类设为2,检查标注的category_id是否没有混入其他类ID,也没有把背景类ID(0)当成车辆类使用。 - 排查标注合法性:确认所有标注框满足xmin<xmax、ymin<ymax,没有超出图像边界的坐标;Mask标注的多边形点数量≥3,不存在空标注、重复标注的问题。
- 验证数据增强同步性:可视化3-5张经数据增强后的训练图像和对应标注,确认裁剪、翻转、缩放等操作同时同步调整了bbox和mask坐标,90%以上的新手错误都是只增强图像、忘记同步处理标注,导致训练标注完全错位。
- 确认标注类别ID和配置文件完全对应:单类车辆检测场景下
- 其次排查训练流程配置问题
- 观察训练损失变化:如果所有损失(RPN分类/bbox损失、检测头分类/bbox损失、Mask头损失)全程无明显下降,优先调小初始学习率,基于COCO预训练权重迁移训练时,初始学习率建议设为1e-4及以下,不要使用从头训练的1e-2级别的高学习率。
- 调整正负样本匹配逻辑:如果训练时正样本占比极低,可适当调低
RPN_IOU_NEGATIVE_THRESHOLD、调高RPN_IOU_POSITIVE_THRESHOLD,或者调大RPN_FG_FRACTION参数提升正样本占比,避免模型学不到有效特征。 - 确认预处理逻辑统一:训练和测试阶段的图像预处理(通道顺序、归一化参数、尺寸缩放规则)必须完全一致。
- 最后排查推理与评估逻辑问题
- 调低推理置信度阈值:初始测试时可把
CONFIDENCE_THRESHOLD设为0.05,确认模型是否有有效输出,避免阈值设得过高过滤了所有预测结果。 - 校验预测类别映射逻辑:确认预测输出的ID做了背景类偏移处理,比如预测输出ID=1对应车辆类,不要误把背景类ID0当成车辆类统计。
- 排查mAP计算逻辑bug:确认计算mAP时,预测结果和真值的坐标格式(xyxy/xywh、是否归一化)完全对齐,IOU阈值设置合理;可以先用10张标注完全正确的小数据集跑通全流程,确认mAP可以正常上升后再用全量数据集训练,排除评估代码本身的问题。
- 调低推理置信度阈值:初始测试时可把
内容的提问来源于stack exchange,提问作者Aakriti Sharma
相关产品推荐
相关产品推荐

