大雁与飞机

假设现在有这样一个测试集,测试集中的图片只由大雁和飞机两种图片组成,如下图所示:
目标检测中的precision,recall,AP,mAP计算详解

假设你的分类系统最终的目的是:能取出测试集中所有飞机的图片,而不是大雁的图片。

现在做如下的定义:
True positives : 飞机的图片被正确的识别成了飞机。
True negatives: 大雁的图片没有被识别出来,系统正确地认为它们是大雁。
False positives: 大雁的图片被错误地识别成了飞机。
False negatives: 飞机的图片没有被识别出来,系统错误地认为它们是大雁。

假设你的分类系统使用了上述假设识别出了四个结果,如下图所示:
目标检测中的precision,recall,AP,mAP计算详解

那么在识别出的这四张照片中:
True positives : 有三个,画绿色框的飞机。
False positives: 有一个,画红色框的大雁。

没被识别出来的六张图片中:
True negatives : 有四个,这四个大雁的图片,系统正确地没有把它们识别成飞机。
False negatives: 有两个,两个飞机没有被识别出来,系统错误地认为它们是大雁。

Precision 与 Recall

Precision其实就是在识别出来的图片中,True positives所占的比率:
目标检测中的precision,recall,AP,mAP计算详解
其中的n代表的是(True positives + False positives),也就是系统一共识别出来多少照片 。
在这一例子中,True positives为3,False positives为1,所以Precision值是 3/(3+1)=0.75。
意味着在识别出的结果中,飞机的图片占75%。

Recall 是被正确识别出来的飞机个数与测试集中所有飞机的个数的比值:
目标检测中的precision,recall,AP,mAP计算详解 ,通常(t_p+f_n)在目标检测中指groundTruth中的真实目标数量,
Recall的分母是(True positives + False negatives),这两个值的和,可以理解为一共有多少张飞机的照片。
在这一例子中,True positives为3,False negatives为2,那么Recall值是 3/(3+2)=0.6。
意味着在所有的飞机图片中,60%的飞机被正确的识别成飞机.。

 

AP(Average Precision)

AP是Precision-Recall曲线所围成的面积。具体计算可如下图所见:

这是预测结果框(红色)和GroundTruth(绿色)的对比。

目标检测中的precision,recall,AP,mAP计算详解

 

 通过这张图,我们可以将每个候选框的预测信息标记出来。这里设定IOU>0.5为TP,否则为FP。

目标检测中的precision,recall,AP,mAP计算详解

根据这张图可以画出PR曲线,按照置信度进行一次新的排序,就更加清晰明了。

 目标检测中的precision,recall,AP,mAP计算详解

由上表,将这些(recall,precision)点标记在坐标轴中:

目标检测中的precision,recall,AP,mAP计算详解

 根据这个代码进行计算。

 目标检测中的precision,recall,AP,mAP计算详解

参考:  

https://blog.csdn.net/asasasaababab/article/details/79994920

https://www.jianshu.com/p/fbb96bb49782

https://blog.csdn.net/hysteric314/article/details/54093734