召回率(tp/(tp+fn))和查准率(tp/(tp+fp))相对比较好理解,平均精度的理解相对比较难些,主要是物理意义不够明确,可参考(ap的计算 - 程序员大本营),至少对我来讲是这样的,做项目的使用用到openmmlab,一个很好的ai框架,在使用他们的检测框架时,默认会打印出上述三个参数。他们其实也会受一些超参数(阈值)的影响。比如,NMS_thresh, iou_thresh, confidence_thresh, 分别对应的物理意义是:
conf_thresh, 就是检测物体框的置信度,它包含物体的概率或分数
Nms_thresh, 就是极大值抑制里面的一个参数,主要用于减少重复预测框的数量
iou_thresh, 就是预测和GT两个框的交并比参数,高于就代表有正,低于代表负
下面主要针对这三个参数的调整进行直观的说明:
conf_thresh=0.05, nms_thresh=0.6, iou_thresh=0.25
图表中gts是每个类的框的个数,dets是最终预测框的个数,它是和上面的三个参数有关的额
conf_thresh=0.25, nms_thresh=0.6, iou_thresh=0.25
把conf_thresh从0.05提高的0.25, dets的数量明显减少,这是因为提高了预测框的置信度门槛,从而减少了预测框,一定程度会使recall降低, 同时也就减少了fp,precsition从而提高了。因为训练的模型预测处的框会远远多于实际框数量,所以才进行后续的滤除,若部滤除的话,如果一张图里面有5个目标,也就是需要预测5个框即可,但是可能预测处1000个框,那这100个框就很容易包括那真实的5个框,这样的话查全率(recall)比如很高,但是这又造成了大量的fp,所以查准率(precision)会很低,如上图所示。
conf_thresh=0.05, nms_thresh=0.5, iou_thresh=0.25
把nms_thr从0.6降低为0.5,这样极大值抑制时,使消除框门槛降低,从而使消除框的数量增加,fp数量进一步减少,precision进一步提高,同时recall的也受影响并微弱降低。