首先我们为什么要使用这些呢?
举个简单的例子,假设我们图像里面只有1个目标,但是定位出来10个框,1个正确的,9个错误的,那么你要按(识别出来的正确的目标/总的正确目标)来算,正确率100%,但是其实效果不是很好,而且还有框的各种情况,因此我们需要下面的指标来衡量一个目标检测模型的好坏。
1.IOU(Intersection Over Union)
这是关于一个具体预测的Bounding box的准确性评估的数据,意义也就是为了根据这个IOU测定你这个框是不是对的,大于等于IOU就是对的,小于就是错的。对于目标检测任务来说,一个具体的目标预测包括一个bounding box的坐标和它的置信度。通过predict(测量预测的)bndbox(bounding box)和ground truth(物体真实的)bndbox之间的重合度,我们来得出此次预测是true还是false。一旦确定了IOU,那么我们就能决定这个Bounding box是不是对的。计算公式如下图:
通俗来说,也就是(预测的包围盒和物体实际包围盒的交集)/(预测的包围盒和物体实际包围盒的并集)。一般来说,重合区域的面积(上面公式的分子)和2个bndbox的面积并集的比例(上面公式的分母)如果大于50%,那么认为这是一个成功的预测(true),否则认为这是一个失败的预测(false)。公式等号的左边就是IoU,但是这个IOU是根据人来定的。
2.AP(average precision)
这个的意义是为了评估你目标检测模型的对于某一类的准确度。要弄清这个,先等搞清楚2个概念:precision(查准率)和recall(召回率),借用知乎上一张图: (关于2个参数想要了解更多可以去看这个教程https://www.bilibili.com/video/av9912938/?p=68)
在2010年以前,PASCAL VOC CHALLENGE AP是这么定义的:,我们把recall的值从0到1 (0%到100%)划分为11份:0、0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9、1.0,在每个recall尺度上我们计算下准确率(最大值),然后再计算总和并平均,就是AP值
在以后,换了一种计算方法(从后往前算每个recall都取precision的最大值,会让PR曲线递减):多个类别物体检测中,每一个类别都可以根据recall和precision绘制一条曲线,AP就是该曲线下的面积/x,y坐标轴(0,1)范围的面积(也就是1)。类似于下图:
AP的值就是曲线下的面积除以1。
3.mAP(mean average precision)
这个的意义是为了评估你整个目标检测模型的准确度。方法是:计算每个分类的AP,求和再平均,得到的就是mAP。目前基于只有COCO数据集目标检测的模型mAP一般在0.3-0.4 , 但基于PASCAL VOC+COCO数据集训练的模型的mAP可以达到0.8以上
这里要多说几句,因为在mscoco里面,它有这么几句话:(这里先不讨论AR)
1.Unless otherwise specified, AP and AR are averaged over multiple Intersection over Union (IoU) values. Specifically we use 10 IoU thresholds of .50:.05:.95. This is a break from tradition, where AP is computed at a single IoU of .50 (which corresponds to our metric APIoU=.50). Averaging over IoUs rewards detectors with better localization.
2.AP is averaged over all categories. Traditionally, this is called "mean average precision" (mAP). We make no distinction between AP and mAP (and likewise AR and mAR) and assume the difference is clear from context.
也就是说:它是直接把mAP当成AP,然后再把IOU值大于0.5的AP(mAP),以0.05的增量,到0.95,也就是以(0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95)IOU值的AP(mAP)的平均值当成AP(at IoU=.50:.05:.95),mscoco进行这样IOU增量平均的考虑可能是:只以0.5IOU为阀值的时候不一定就是更好的模型,可能仅仅在0.5阀值表现的很好,在0.6,0.7...阀值表现的很差,为了更好地评估整体模型的准确度,从而计算一个模型在各个IOU值的AP(mAP),取平均值。
参考链接:
http://cocodataset.org/#detections-eval
http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf (第11页)
https://www.zhihu.com/question/41540197
http://blog.sina.com.cn/s/blog_9db078090102whzw.html
https://www.zhihu.com/question/53405779