码迷,mamicode.com
首页 > 其他好文 > 详细

目标检测的评价标准mAP, Precision, Recall, Accuracy

时间:2019-09-21 23:27:45      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:article   方法   并且   toc   排序   title   类别   line   就是   

metrics 评价方法

注意,在多分类问题中,评价方法是逐个类计算的,不是所有类一起算,是只针对一个类算,每个类别有自己的指标值!

TP , FP , TN , FN

概念

TP = 预测为positive 且ground-truth和预测一致 FP= 预测为positive 且ground-truth和预测不一致

TN=预测为negative 且ground-truth和预测一致 FN=预测为negative 且ground-truth和预测不一致

计算流程

在所有预测为猫咪类的框中, 具有怎么样的特征的框才是 TP 和 FP 呢?

计算流程

  1. 猫咪类别的 Prediction下,对于某一确定 score threshold
  • 将 Prediction 按照 score 排序
  • score 大于 score threshold 的 Prediction 的定义为 Positive
  1. 猫咪类别的 Positive Prediction下,对于某一确定 IOU threshold
  • 猫咪类别的 GT的 IOU 大于 threshold 的 Prediction, 并且 该GT是未被其它Prediction 匹配的,标记为 True Positive(TP),对应的GT标记为已匹配
  • 猫咪类别的 GT的 IOU 小于 threshold 的 Prediction, 或是该GT已经被匹配,则标记为 False Positive(FP)

Accuracy , Precision ,Recall

设样本 \(i\) 的真实标签 \(x_i\),网络输出的置信度为 $ y_i $

准确率Accuracy

\[ \frac{CorrectNum}{TotalNum}=\frac{TP+TN}{TotalNum} \]

精确率Precision 判断对了多少个【都被模型判断为positive,其中判对了多少个】

\[ p(t)=P(x_i \in C\ |\ y_i \ge t ) = \frac{TP}{TP+FP}=\frac{TP}{all\ detections} \]

召回率Recall positive找到了多少个 【在真实标签为positive的所有样本中,找到了多少个】

\[ r(t)=P(y_i \ge t \ | \ x_i \in C) = \frac{TP}{TP+FN}=\frac{TP}{all\ groundtruth} \]

https://blog.csdn.net/asasasaababab/article/details/79994920 这里有解释为什么不能直接用准确率accuracy:

  • 主要是因为类别不平衡问题,如果大部分是negative的 而且大部分模型都很容易判别出来,那准确率都很高, 没有区分度,也没有实际意义(因为negative不是我们感兴趣的)

Precision vs Accuracy

Precision 查准率,针对某一类别,没有说明具体类别的precision是没有意义的,在二分类问题中默认是正样本的precision (比如在目标检测里面针对的是positive类别)

Accuracy 准确率,计算的是分类正确个数占全体样本的比例,针对的是所有类别

Average Precision

平均精确率Average Precision

\[ AP = \frac{1}{11}\sum_{r\in \{0, 0.1, 0.2, ..., 1\}} p_{interp}(r) \p_{interp}(r) = max_{\hat r:\hat r \ge r} p(\hat r) \]

  • 解释第二个式子:r的取值从 0到1 以0.1为间距,共11个取值。从某个r开始 从所有比r大的值中选择某个作为阈值t 计算精度,返回精度的最大值

  • \(AP_{2D}\): 在图像平面上计算的AP 记为\(AP_{2D}\)

3D detection中还会涉及到以下指标:

  • \(AP_{BV}\):将3D检测投影到BEV视角,然后计算\(AP_{BV}\) ,能够避免不同物体投影到2D可能会重叠的情况

  • \(AP_{3D}\):直接计算3D bbox和ground-truth bbox的IoU,但是仍然无法精确衡量bbox方向的精确率

PR曲线

Precision-Recall Curve

  • Recall是横轴, Precision是纵轴,随着Recall的增大,Precision会下降,因为为了使模型找得更全(high recall),可能需要检测更多物体,从而可能有很多false positive(使得precision下降)

  • 以rank为例,计算 每新增一个样本之后,当前序列的precision和recall https://blog.csdn.net/asasasaababab/article/details/79994920 这里有给出图片例子

  • 怎么画的?插值

  • 【局限】只比较不同模型的曲线有时候很难分辨,因为不同的曲线可能经常会交叉,考虑用AP(其实就是曲线和坐标轴围成的面积,是一个数值,可以更直观比较)

AP计算 Average Precision

两种方式:11点插值,或是计算面积(AUC Area Under Precision-Recall Curve)

  • 11点插值:把recall从 0~1 每隔 0.1 取端点 共11个,每个端点对应 \(p_{interp}(r)\) 计算公式如上

  • 计算面积:将曲线平滑成直角折线,从而计算曲线与坐标轴的面积近似于对每小块矩形面积求和

https://github.com/rafaelpadilla/Object-Detection-Metrics

?

mAP

目标检测中衡量识别精度的指标是mAP(mean average precision)

多个类别物体检测中每一个类别都可以根据recall和precision绘制一条曲线,AP就是该曲线下的面积,mAP是多个类别AP的平均值

?
?
?


参考资料

https://blog.csdn.net/asasasaababab/article/details/79994920

https://github.com/rafaelpadilla/Object-Detection-Metrics

目标检测的评价标准mAP, Precision, Recall, Accuracy

标签:article   方法   并且   toc   排序   title   类别   line   就是   

原文地址:https://www.cnblogs.com/notesbyY/p/11565102.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!