目标检测——yolov4模型评价
目标检测模型的好坏通常用mAP和FPS来评价,一个代表准确度,一个代表速度。
mAP的评价指标确切的说无模型无关。
mAP--mean Average Precision.
我们用Precision表示模型预测的精度,即模型预测的所有正例中真正正例的比例
用recall表示模型的召回率,即模型预测的真正正例中占所有正例的比例。文字描述比较费劲。
画一个图就好理解了。
Precision = TP / (TP+ FN) 预测正确的框 / 所有的预测的框
Recall = TP / (TP+ FN) 预测正确的框 / 所有的框
在目标检测如何判断预测正确呢,通常计算预测框与真实框的iou,一般设定阈值为0.5, 即大于0.5的判断为预测正确(TP)
因为一个GT只能对应一个预测框,那么只有与GT框 iou最大的,且大于0.5的为TP,其余均为FP 。
举一个例子,例子来源知乎AICV的回答:
预测框为红色,GT框为绿色,图片中的百分数为置信度,置信度为88%的框与GT框iou小于0.5,所以这个预测框为FP,依次可以类推出所有的预测框是TP or FP
将置信度从大到小排列
求出所有的TP数量和FP数量,求出不同置信度下的Precision和Recall,绘制PR曲线,横坐标为Recall,纵坐标为Precision
![](https://img2020.cnblogs.com/blog/2177978/202012/2177978-20201211224717942-309861705.png)
计算PR曲线下的面积,即为所求的AP值
如何计算面积呢?
在VOC2012之前,只需要选取当Recall >= 0, 0.1, 0.2, ..., 1共11个点时的Precision最大值,然后AP就是这11个Precision的平均值。
需求根据之前的PR曲线插值求出Recall 分别等于0.1,0.2,0.3.。。。1时的Precision值.
在VOC2012之后,需要针对每一个不同的Recall值(包括0和1),选取其大于等于这些Recall值时的Precision最大值,
然后计算PR曲线下面积作为AP值。
( 0.0666-0)*1 + (0.1333-0.0666)*(0.6666)+ (0.2-0.1333)*(0.4285)+(0.2666-0.2)*(0.4285)+(0.3333-0.2666)*(0.4285)
+(0.4-0.3333)*(0.4285)+ (0.46666-0.4)*(0.3043)+(1-0.46666)* 0 = 0.245627808
最终求得AP值为24.56%
要计算 mAP,就把所有类别的 AP 计算出来,然后求取平均即可。