tensorboard(Tensorflow Object Detection API)上的mAP分数都是0,即使损失值很低

数据挖掘 深度学习 张量流 计算机视觉 物体检测
2021-10-03 10:12:37

我在自定义数据集上的 tensorflow 对象检测 API 上训练了一个 fast-rcnn 模型。我发现在 3.5k 步后损失约为 2。但是,当我运行 eval.py 时,mAP 分数几乎都是 0,如下所示。

Tensorboard 上的类别 mAP 分数

我不明白为什么会这样。但是,当我查看 3.5k 步的图像时,模型已经捕获了一些框,如下所示

Faster-RCNN 模型在 3.5k 次迭代后的输出

有人可以解释为什么 mAP 分数接近于零,即使模型已经学会了输出很多框?

1个回答

我建议您进行几项检查,以确保您获得对象检测 API 的合理 mAP@IoU 分数:

  1. 尝试改变 Intersection over Union (IoU) 阈值,例如 0.2-0.5,看看平均精度是否有所提高。您将不得不修改matching_iou_threshold参数object_detection/utils/object_detection_evaluation.py
  2. 尝试不同的评估器类(默认是EVAL_DEFAULT_METRIC = 'pascal_voc_detection_metrics')。如果您在Open Image Dataset上进行训练,那么使用它是有意义的open_images_V2_detection_metrics
  3. 检查您的 eval 配置文件并增加评估集中使用的示例数量,例如

    eval_config: { num_examples: 20000 num_visualizations: 16 min_score_threshold: 0.2 # Note: The below line limits the evaluation process to 10 evaluations. # Remove the below line to evaluate indefinitely. max_evals: 1 }

  4. 训练对象检测器进行更多迭代
  5. 根据报告的指标检查当前 mAP(例如 COCO mAP@IoU=0.5): IoU=0.5 时的 COCO mAP