定义
Accuracy:准确率
✔️ 准确率=预测正确的样本数/所有样本数,即预测正确的样本比例(包括预测正确的正样本和预测正确的负样本,不过在目标检测领域,没有预测正确的负样本这一说法,所以目标检测里面没有用Accuracy的)。
Precision:查准率
✔️ recision表示某一类样本预测有多准。
✔️ Precision针对的是某一类样本,如果没有说明类别,那么Precision是毫无意义的(有些地方不说明类别,直接说Precision,是因为二分类问题通常说的Precision都是正样本的Precision)。
Recall:召回率
✔️ Recall和Precision一样,脱离类别是没有意义的。说道Recall,一定指的是某个类别的Recall。Recall表示某一类样本,预测正确的与所有Ground Truth的比例。
✍️ Recall计算的时候,分母是Ground Truth中某一类样本的数量,而Precision计算的时候,是预测出来的某一类样本数。
F1 Score:平衡F分数
F1分数,它被定义为查准率和召回率的调和平均数
更加广泛的会定义
分数,其中
和
分数在统计学在常用,并且,
分数中,召回率的权重大于查准率,而
分数中,则相反。
AP: Average Precision
以Recall为横轴,Precision为纵轴,就可以画出一条PR曲线,PR曲线下的面积就定义为AP,即:
由于计算积分相对困难,因此引入插值法,计算AP公式如下:
计算面积:
原理:
代码详解
computer_mAP.py
from voc_eval import voc_eval
import os
mAP = []
# 计算每个类别的AP
for i in range(8):
class_name = str(i) # 这里的类别名称为0,1,2,3,4,5,6,7
rec, prec, ap = voc_eval('path/{}.txt', 'path/Annotations/{}.xml', 'path/test.txt', class_name, './')
print("{} :t {} ".format(class_name, ap))
mAP.append(ap)
mAP = tuple(mAP)
print("***************************")
#