在进行目标检测任务之前,需要了解下检测任务中常用的评估指标,这样可以更好地帮我们了解模型的实用性。
常用的目标检测模型评估指标总结如下,
- TP、FP、TN、FN、Recall、Precision
- TPR、TNR、FPR、FNR
- AP、mAP、P-R曲线
- ROC曲线、AUC
- IOU
- FPS、FLOPS
- GOPS
1. TP、FP、TN、FN、Recall、Precision
目标检测问题同时是一个回归和分类问题。首先,为了评估定位精度,需要计算IoU(Intersection over Union,介于0到1之间),其表示预测框与真实框(ground-truth box)之间的重叠程度。IoU越高,预测框的位置越准确。因而,在评估预测框时,通常会设置一个IoU阈值(如0.5),只有当预测框与真实框的IoU值大于这个阈值时,该预测框才被认定为真阳性(True Positive, TP),反之就是假阳性(False Positive,FP)。
TP(True Postive):实际是正例,预测为正例;
FP(False Positive):实际为负例,预测为正例;
TN(True Negative):实际为负例,预测为负例;
FN(False Negative),实际为正例,预测为负例。
召回率(Recall) = 系统检测到的相关文件(TP) / 系统所有相关的文件总数(Ground Truth);
准确率(Precision) = 系统检测到的相关文件(TP) / 系统所有检测到的文件总数。
2. TPR、TNR、FPR、FNR
TPR(True Positive Rate):真正率,又称灵敏度(sensitivity);
TNR(True Negative Rate):真负率,又称特指度(specificity);
FPR(False Positive Rate):假正率;
FNR(False Negative Rate):假负率,又称虚警率(False alarm)。
3. AP、mAP、P-R曲线
P-R曲线(准确率-召回率曲线):以召回率为横坐标,精确率为纵坐标,用不同的阀值,统计出一组不同阀值下的精确率和召回率。
AP(Average precision)——P-R曲线下的面积;
mAP(Mean average precision)——多个类别AP的平均值。
对于二分类,AP(Average Precision)是一个重要的指标,这是信息检索中的一个概念,基于P-R曲线计算出来。对于目标检测,首先要单独计算各个类别的AP值,这是评估检测效果的重要指标。取各个类别的AP的平均值,就得到一个综合指标mAP(Mean Average Precision),mAP指标可以避免某些类别比较极端化而弱化其它类别的性能这个问题。
对于目标检测,mAP一般在某个固定的IoU上计算,但是不同的IoU值会改变TP和FP的比例,从而造成mAP的差异。COCO数据集提供了官方的评估指标,它的AP是计算一系列IoU下(0.5:0.05:0.9,见说明)AP的平均值,这样可以消除IoU导致的AP波动。其实对于PASCAL VOC数据集也是这样,Facebook的Detectron上的有比较清晰的实现。
4. ROC曲线、AUC
ROC曲线:用不同的阀值,统计出一组不同阀值下的TPR(真阳率)和FPR(假阳率)的关系。
AUC(Area Under Curve):ROC曲线下的面积。
ROC曲线优点:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。
5. IoU
IOU(Intersection over Union):是一种测量在特定数据集中检测相应物体准确度的一个标准,一般来说,这个score > 0.5 就可以被认为一个不错的结果了。
6. FPS、FLOPS
除了检测准确度,目标检测算法的另外一个重要性能指标是速度,只有速度快,才能实现实时检测,这对一些应用场景极其重要。评估速度的常用指标是每秒帧率(Frame Per Second,FPS),即每秒内可以处理的图片数量。当然要对比FPS,你需要在同一硬件上进行。另外也可以使用处理一张图片所需时间来评估检测速度,时间越短,速度越快。
FPS (Frames Per Second):每秒处理图像的帧数
FLOPS:每秒浮点运算次数、每秒峰值速度
7. GOPS
10亿次/每秒是衡量处理器计算能力的指标单位。