背景
之前在研究Object Detection的时候,只是知道Precision这个指标,但是mAP(mean Average Precision)具体是如何计算的,暂时还不知道。最近做OD的任务迫在眉睫,所以仔细的研究了一下mAP的计算。其实说实话,mAP的计算,本身有很多现成的代码可供调用了,公式也写的很清楚,但是我认为仔细的研究清楚其中的原理更重要。
AP这个概念,其实主要是在信息检索领域(information retrieval)中的概念,所以这里会比较快速的过一下这个在信息检索领域是如何起作用的。
Precision,Recall,以及Accuracy
Precision和Recall
如下图所示,假如一个用户向系统提交一个查询(例如“什么是猫”),系统返回了一系列查询的结果,这些结果是系统根据用户提交的信息,判定出来系统内所有跟这个信息有关的结果。
在这个结果里,黄色的部分是系统返回的结果,绿色的部分是总共对用户有用的结果。两者的交集,也就是中间的地方,通常叫做True Positive(TP),中文译名是真阳。而返回结果的剩下的部分,则是False Positive。也就是假阳,意思就是说这些本身是对用户没啥用的,但是系统判定这些对用户有用并且提交给用户了,所以叫“假阳”。而绿色部分剩下的,False Negative,假阴,则是本来对用户有用的结果,但是被系统判定没用,“假阴”。剩下的灰色地方则是True Negative,“真阴”,就是真的没啥用的结果。
Precision就是 T P T P + F P \frac{TP}{TP+FP} TP+FPTP,也就是提交给用户的结果里边,究竟有多少是对的,或者反过来说,我们给了用户多少没用的垃圾。Recall是 T P T P + F N \frac{TP}{TP+FN} TP+FN