要理解mAp,首先要知道Ap。mAp是网络模型对不同类别Ap的平均值。那么什么是Ap。我们知道precision和recall。我们将预测出来的detector框(网络计算输出框后进过nms去重后的),按照confidence从高到底进行排序。这个时候我们按照顺序拿取我们的预测框与groundtruth做比较,根据其与对应类别的groundtruth的iou来判断其是正样本还是负样本。如果判断为正样本则把该groundtruth框去掉,并且更新precision和recall值。所以整个过程我们的recall必然是一个逐渐增长的过程,而precision随着我们的confidence标准越来越低,precision会慢慢减小。所以最后会形成一个pr曲线,而我们的AP值其实就是pr曲线的面积。这里有一点需要注意下,实际预测的时候我们目标检测会给框的置信度设定一个阈值,当预测框的confidence超过这个阈值了我们才会把框标出来,这里算pr曲线的时候我们的这个阈值实际上是动态的从高到底滑动到recall接近于1的时候停止。下面是当前计算mAp的示意图: