一、模型分类目标
数据的分类情况为两类正例(Postive)和负例(Negtive),分别取P和N表示。
同时在预测情况下,分类正确表示为T(True),错误表示为F(False);便有了以下四类表示:
TP:(True Positive 正确的判断为正例 实际正例) |
TN:(True Negtive 正确的判断为负例 实际负例) |
FP:(Fasle Positive 错误的判断为正例 实际负例) |
FN:(False Negtive 错误的判断为负例 实际正例) |
Ps.其中的P和N为分类器认为的正例和负例,实际的正例和负例要结合分类是否正确来看
二、分类评估指标
①精确度(Precision)
(TP在所有判断为正例中占的比例)
Precision = TP / ( TP +FP )
②召回率(Recall)
(TP在实际正例中占的比例)
Recall = TP / ( TP + FN ) = TP / P
③F1 Score
P = Precision R = Recall
④support
支持度:原始的真实数据中属于该类的个数
⑤准确率(Acc)
预测为正确类的在总数中的比例
⑥加权平均(weighted avg)
weighted avg =
权重为该样本的support
三、目标检测评估指标
①IoU
交并比,即预测框(prediction)和实际目标(ground truth)的交集和并集的比值。用以确定预测目标的置信度,当一个预测框的IoU大于某个阈值时才认定其为正分类(一般为0.5或0.3)
即 通俗点理解就是重叠面积和总面积之比
②AP
平均精确度(Average Precision),表示PR曲线下的面积。PR曲线即分别以Precision和Recall为XY轴的曲线,获得方法如下:
1.将模型预测结果按照预测值置信度降序排列
2.依据Recall分别选取11组不同的数据(Recall = [0,0.1...0.9,1.0])
3.以这11组数据绘制图像
而
在目标检测的情况下,Precision和Recall可以简化为以下公式:
以下放的图像为例(绿色为ground truth,红色为prediction)
1.处理时将预测框按照置信度从高低到排列,绘制下表(其中ACC表示累加)
例如对于对象K,ACC TP = K前面所有TP的个数(含K), ACC FP同理;而对象K的求解Precision和Recall的公式可以简化为:
(15为实际存在的目标个数)
2.处理完成后将所有的点绘制为PR图
3.计算AP
AP = A1+A2+A3+A4,对于每组Recall,取P值最大的一个计算即可,例如图形A3=(0.4-0.13333)x0.4285=0.1142
③mAP
所有类别的AP求和取平均
mAP仅作为一个相对较好的度量指标,用以对比目标检测算法新旧之间的差别。
三、代码实现
参见:mAP的绘制,绘制时需要以下两个txt文件作为数据源:
detection-results:预测结果的坐标(第一维为置信度)
ground-truth:真实目标的坐标
可以自己编写程序,将VOC库的xml文件转换为 ground-truth且将预测结果输出为detection-results
如果需要绘制所有类的混合mAP图则需要修改
修改循环,将所有类依次绘制到同一张图中,最后再保存,涉及到清除plt控件(plt.cla)和保存图片(plt.savefig),详见plt控件的应用
转载:https://blog.csdn.net/weixin_37878740/article/details/128643370