The*_*Wiz 1 evaluation object-detection tensorflow
在 8 个类的自定义数据集上运行 TensorFlow 对象检测 API 训练和评估,关于使用 model_main.py 运行此任务的结果,我有两个问题
总损失在 10k 步后开始上升(相对)......它在 8000 步后低于 1,但开始从 10k 步缓慢上升到 80k 步并以 1.4 损失结束......为什么会发生这种情况?
关于评价结果,为什么只有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)
是的,这些结果是合理的。回答您的问题:
[ 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 的一些进一步阅读。
| 归档时间: |
|
| 查看次数: |
1265 次 |
| 最近记录: |