我很想测量物体检测器的预测结果。我从一些教程中了解到,在测试训练有素的对象检测器时,针对测试图像中的每个对象,提供了以下信息:
<object>
<name>date</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>451</xmin>
<ymin>182</ymin>
<xmax>695</xmax>
<ymax>359</ymax>
</bndbox>
</object>
但是,我仍然不清楚1)物体检测器如何获取这些信息以测量精度,以及2)在这种情况下如何计算“损耗”。有点像严格的比较吗?例如,如果对于对象“日期”,我得到以下输出:
<object>
<name>date</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>461</xmin> <---- different
<ymin>182</ymin>
<xmax>695</xmax>
<ymax>359</ymax>
</bndbox>
</object>
那我会相信我的物体检测器做错了什么?或者他们可以容忍一些小的变化量,以便如果边界框的漂移很小,则可以接受。但是,如果“标签”完全错误,那肯定是错误的吗?
对我来说,这就像一个“黑匣子”,如果有人可以对此有所启发,那就太好了。谢谢。
答案 0 :(得分:1)
用于对象检测任务。通常的性能指标是平均平均精度(mAP)。
1)以上信息包含检测到的对象类别以及边界框。计算mAP都需要它们。 Here是一个有关如何计算mAP的不错的博客。 mAP计算中的一个关键概念称为 Union Intersection Over Union(IoU),它指定检测到的边界框与地面真实框重叠的程度。通常,所检测到的边界框的IoU至少应高于阈值(例如0.5),才能算作正确定位对象。根据IoU阈值,可以将检测框标记为“真阳性”,“ TN”,“ FP”和“ FN”,以便可以计算出进一步的准确性指标。
2)对象检测丢失任务由两部分组成。分类损失和边界框回归损失,总损失通常是这两者的加权和。 (因此,他们可以调整以专注于边界框回归或分类)
对于您给出的示例,检测结果已正确分类了对象,但边界框并不完全准确,在这种情况下,分类损失为0,而边界框回归损失不是。因此,该模型在某种程度上知道预测结果仍然不理想,因此必须进一步学习才能提供更好的预测。如果标签错误,则只会丢失分类。
实际损失的计算也与IoU有关。将为模型预定义一个IoU,以选择将选择哪些预测边界框来参与损耗计算。之所以需要这样做,是因为通常很多预测框会围绕同一对象堆叠在一起,因此最好选择其中一个或多个而不是全部。