这些是使用 model_main.py 进行 tensorflow 对象检测评估的预期结果吗?

The*_*Wiz 1 evaluation object-detection tensorflow

在 8 个类的自定义数据集上运行 TensorFlow 对象检测 API 训练和评估,关于使用 model_main.py 运行此任务的结果,我有两个问题

  1. 总损失在 10k 步后开始上升(相对)......它在 8000 步后低于 1,但开始从 10k 步缓慢上升到 80k 步并以 1.4 损失结束......为什么会发生这种情况?

  2. 关于评价结果,为什么只有IoU=0.50的精度为0.966,其余都在0.5以下,如下图:

Accumulating evaluation results...
DONE (t=0.07s).
Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.471
Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.966
Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.438
Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = -1.000
Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = -1.000
Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.471
Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.447
Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.562
Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.587
Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = -1.000
Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = -1.000
Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.587
INFO:tensorflow:Finished evaluation at 2019-05-06-03:56:37
INFO:tensorflow:Saving dict for global step 80000: DetectionBoxes_Precision/mAP
Run Code Online (Sandbox Code Playgroud)

dan*_*ang 5

是的,这些结果是合理的。回答您的问题:

  1. 张量板上的总损失实际上是评估损失,如果这个损失开始上升,那么你的模型可能过度拟合。请参阅此处类似案例的较早答案。
  2. 评测结果为COCO评测格式。精确率和召回率是跨不同的 IoU、不同的区域和不同的最大检测数 (maxDets) 计算的。例如,[ IoU=0.50:0.95 | area= all | maxDets=100 ]表示精度计算的 IoU 范围为 0.5 到 0.95(以 0.05 为步长,所有 IoU 在此范围内的检测都被视为正检测),区域范围从小、中、大,以及最大检测数的 100. 可以想象,较低的 IoU 阈值意味着更多的检测将被计为真阳性,因此IoU=0.5具有最高的精度分数,因为它具有最多的阳性检测数,并且当 时IoU=0.95,较少的检测被计为真阳性。IoU=0.50:0.95是不同 IoU 的所有精度的平均值,因此该类别的精度低于 when IoU=0.5

顺便说一句,-1.00area=small, medium表示不存在此类类别,请参见此处。所以这意味着数据集中的所有对象都非常大。

这里很好地说明了为什么较低的 IoU 意味着更多的检测是真阳性。(图片来源

在此处输入图片说明

如果我们包括 IoU=0.4,那么所有三个检测都是正确的检测(真阳性),如果我们设置 IoU=0.6,那么只有两个是正确的,当 IoU=0.9 时,只有一个检测是正确的。

关于如何计算 mAP 的一些进一步阅读