理解和跟踪对象检测中的指标

Posted

技术标签:

【中文标题】理解和跟踪对象检测中的指标【英文标题】:Understanding and tracking of metrics in object detection 【发布时间】:2018-07-05 19:44:28 【问题描述】:

如果我对自己的数据集进行一些培训或评估,我会对指标有一些疑问。我对这个话题还是新手,只是尝试了 tensorflow 和 googles 对象检测 api 和 tensorboard...

所以我做了所有这些事情来使用对象检测 api 启动和运行,并在一些图像上进行训练并在其他图像上进行了一些评估。

所以我决定使用加权 PASCAL 指标集进行评估: 在 tensorboard 中,我得到了每个班级的 IoU 以及 mAP,这很好看,现在问题来了。

IoU 为我提供了 ground-truth 和预测框的重叠程度的值,并衡量了我的对象检测器的准确性。

第一个问题:如果没有检测到具有ground-truth的对象,是否会对IoU产生影响?

第二个问题:如果一个ground-truth对象被预测为false negativ,是否会影响IoU?

第三个问题:如果没有真实对象的假阳性呢?

编码问题:

第四个问题:是否有人修改了对象检测 API 的评估工作流程以引入更多指标,例如准确度或 TP/FP/TN/FN?如果可以的话,可以为我提供一些带有解释的代码或您使用的教程 - 那将是很棒的!

第五个问题:如果我要监控一些过度拟合,并从我的 70% 训练数据中提取 30% 并进行一些评估,哪个参数表明我的数据集存在一些过度拟合?

也许这些问题是新手问题,或者我只需要阅读和理解更多 - 我不知道 - 所以感谢您帮助理解更多!

谢谢

【问题讨论】:

1 和 2 有什么区别?没有被检测到的真实物体是假阴性…… 3. 如果没有真实物体,那么它是假阳性,而不是真阳性。 4. 一开始你说你已经有准确度,这里你说你没有…… Q2 确实有一个预测框,并且覆盖了真实框,但有一个假阴性预测,并且 Q1 没有预测框,所以 IoU 可能会降低!?到 Q3 jep 并更正!我刚刚说过,IoU 衡量的是对象检测器的准确度,但其值是预测框与地面实况的覆盖程度 【参考方案1】:

让我们从定义特定对象类的精确度开始:它的良好预测与该类的所有预测的比例,即它的 TP / (TP + FP)。例如,如果您有狗、猫和鸟检测器,则狗精度将是所有标记为狗的预测中正确标记的狗的数量(即包括错误检测)。

要计算精度,您需要确定每个检测到的框是 TP 还是 FP。为此,您可以使用 IuO 度量,即,如果检测到的框与某个真实框有显着重叠(例如,50% *),则如果两个框属于同一类,则其 TP ,否则它的FP(如果检测到的任何框都不匹配它也是FP)。

* 这就是 @0.5IUO 快捷方式的来源,您可能已经在 Tensorboard 的 PASCAL 指标图表标题中发现了它。

如果估计器输出一些质量度量(甚至是概率),您可能会决定放弃所有质量低于某个阈值的检测。通常,估计器被训练为输出 0 到 1 之间的值。通过更改阈值,您可以调整估计器的召回指标(正确发现对象的比例)。降低阈值会增加召回率(但会降低精度),反之亦然。 平均精度 (AP) 是在不同阈值上计算的类预测的平均值,在 PASCAL 度量中,阈值范围为 [0, 0.1, ... , 1],即其精度的平均值不同召回级别的值。它试图以单个数字捕获检测器的特征。

平均平均精度是所有类别的平均预测的平均值。例如,对于我们的狗、猫、鸟检测器,它将是 (dog_AP + cat_AP + bird_AP)/3。

更严格的定义可以在 PASCAL 挑战 paper,第 4.2 节中找到。

关于你关于过度拟合的问题,可能有几个指标,其中一个可能是,在独立测试/验证集上计算的 AP/mAP 指标开始下降,而损失仍然下降。

【讨论】:

好的 - 我理解并且知道如果 IoU 的值大于 0.5 并且检测到的框与地面实况框属于同一类,则它是 TP。但是,如果一个真实框没有预测框,是否会降低 IoU?如果我的评估测试集上有一个很好的 IoU,并且我看到有一个没有真实框的预测框,即所谓的 FP,该怎么办?如果最后提到的出现了,我必须在我的片场上进行更多的训练吗?或者这意味着什么? 是的,没有匹配的 ground truth 框的预测框会降低精度度量。如果您在评估中有很多此类案例,您可以尝试将更多不包含对象的图像添加到训练集中。

以上是关于理解和跟踪对象检测中的指标的主要内容,如果未能解决你的问题,请参考以下文章

深度学习在视频多目标跟踪中的应用综述

多目标跟踪MOT16数据集和评价指标

目标跟踪入门:使用OpenCV实现质心跟踪

目标跟踪(3)MultiTracker : 基于 OpenCV (C++/Python) 的多目标跟踪

从 haar 检测结果中使用光流 PyrLK 跟踪多个对象

对象跟踪中的遮挡处理