一文讲清楚目标检测中mAP、AP、precison、recall、accuracy、TP、FP、FN、TN
- TP、FP、FN、TN
- 分类中TP、FP、FN、TN含义
- 目标检测中TP、FP、FN、TN的含义
- precision 、recall 、accuracy
- precision
- recall
- accuracy
- 抽样范围
- 一个疑问
- AP、mAP
- AP
- mAP
- 一个例子
- P-R曲线
- 思考
TP、FP、FN、TN
分类中TP、FP、FN、TN含义
首先理解下在机器学习分类中的含义:
TP(True Positive):指正确分类的正样本数,即预测为正样本,实际也是正样本。
FP(False Positive):指被错误的标记为正样本的负样本数,即实际为负样本而被预测为正样本。
TN(True Negative):指正确分类的负样本数,即预测为负样本,实际也是负样本。
FN(False Negative):指被错误的标记为负样本的正样本数,即实际为正样本而被预测为负样本。
由此可知:
样本总数:TP+FP+TN+FN 。
实际正样本数:TP+FN。
预测结果为正样本的总数(包括预测正确的和错误的):TP+FP。
实际负样本数:FP+TN。
预测结果为负样本的总数(包括预测正确的和错误的):TN+FN。
预测正确的样本数:TP+TN。
目标检测中TP、FP、FN、TN的含义
目标检测中的每一个预测结果包含三部分,类别(class),预测框(bounding box)和置信概率(P confidence)。对应的还有真实的检测框,Ground Truth。
什么样的检测结果才叫正确?
1、类别正确
2、预测框(score、confidence)的置信度大于一定阀值
3、预测框与真实框的交并比IoU(Intersection Over Union)大于一定阀值
由此引入两个评价参数。
交并比阈值记为IoU_th,在VOC中一般取0.5(0.5意味着框与框大约有2/3交叉。)
置信度阈值记为confidence_th。
我们将confidence>confidence_th的检测框记为Positive。
TP:IoU>IoU_th 的检测框数量(同一 Ground Truth 只计算一次)。
FP:IoU<IoU_th的检测框数量,或者是检测到同一个 GT 的多余检测框的数量。
TN:(用不到这个概念)。
FN:没有检测到的 GT 的数量。
假设红色的框是Ground Truth,绿色的框是检测结果, IoU_th 、confidence_th均设为0.5:
这张图中的绿色框就是一个TP。
这张图中的绿色框IoU<IoU_th,所以它就是一个FP。
这张图中有两个检测框且IoU>IoU_th,那么置信度较高的那个就是TP,剩下的就是FP。
这张图虽然检测到了框,类别也正确,但是由于confidence<confidence_th,那么这里红色框就是一个FN。注意,FN是从Ground Truth中取,就是如果有n个类似这种的confidence<confidence_th的检测框,我们仍然记FN=1。
precision 、recall 、accuracy
这几个概念是从信息检索领域来的。
precision
precision = TP/(TP+FP)
个人认为翻译成查准率比较好。
recall
recall = TP/(TP+FN)
个人认为翻译成查全率或者召回率比较好。TP+FN其实就是所有的Ground Truth的数量。
accuracy
accuracy = (TP+TN)/(TP+FN+FP+TN)
在目标检测领域中一般不会用。
抽样范围
precision 和 recall 的抽取样本方式不同:recall是从数据集的同一标签的样本抽样;而precision是从已经预测为同一类别的样本抽样。
一个疑问
(在网上看到下面这张图,我不知道应该怎么理解。)
AP、mAP
这两个概念都是为了衡量模型性能。
AP
AP( Average Precision ):衡量单类别的模型平均准确度。
mAP
mAP(mean Average Precision)
目标检测通常有多个类别,mAP是多个类别平均准度的综合度量,用来衡量模型性能。
简单来说把所有类的AP值取平均。比如有两类,类A的AP值是0.5,类B的AP值是0.2,那么mAP=(0.5+0.2)/2=0.35。
下面通过一个例子介绍AP的计算
一个例子
假如我们计算目标类别为Dog:
有5张Image,共包含7只Dog,也即GT(GroundTruth)数量为7。预测得到了Dog的10个预测结果,然后按confidence从高到低排序。
其中,BB表示BoundingBox,GT=1表示GT与预测的BoundingBox的IoU>=IoU_th,BoundingBox序号相同代表所对应的GT是同一个。
在衡量模型性能时,IoU_th一般取一个定值,然后综合考虑不同的confidence_th取值时的性能。
Index | BB | confidence | GT |
---|---|---|---|
1 | BB1 | 0.91 | 1 |
2 | BB2 | 0.83 | 1 |
3 | BB1 | 0.75 | 1 |
4 | BB3 | 0.56 | 0 |
5 | BB4 | 0.49 | 0 |
6 | BB5 | 0.46 | 1 |
7 | BB6 | 0.35 | 0 |
8 | BB7 | 0.23 | 0 |
9 | BB8 | 0.18 | 1 |
10 | BB9 | 0.09 | 1 |
如果设置confidence_th=0,所有的BoundingBox都是Positive。则有 TP=5 (BB1, BB2, BB5, BB8, BB9),FP=5 (重复检测到的BB1也算FP)。除了表里检测到的5个GT以外,我们还有2个GT没被检测到, FN = 2。
precision = TP/(TP+FP) = 5/(5+5) = 0.5
recall = TP/(TP+FN) = 5/(1+6) = 5/7 = 0.71
Index | BB | confidence | GT | TP | FP | FN |
---|---|---|---|---|---|---|
1 | BB1 | 0.91 | 1 | Y | N | |
2 | BB2 | 0.83 | 1 | Y | N | |
3 | BB1 | 0.75 | 1 | Y | N | |
4 | BB3 | 0.56 | 0 | N | Y | |
5 | BB4 | 0.49 | 0 | N | Y | |
6 | BB5 | 0.46 | 1 | Y | N | |
7 | BB6 | 0.35 | 0 | N | Y | |
8 | BB7 | 0.23 | 0 | N | Y | |
9 | BB8 | 0.18 | 1 | Y | N | |
10 | BB9 | 0.09 | 1 | Y | N | |
合计 | 5 | 5 | 2 |
如果设置confidence_th=0.9,只有BB1为Positive,则有 TP=1 (BB1),FP=0。我们还有6个GT没被检测到, FN = 6。
precision = TP/(TP+FP) = 1/(1+0) = 1
recall = TP/(TP+FN) = 1/(1+6) = 1/7 = 0.14
Index | BB | confidence | GT | TP | FP | FN |
---|---|---|---|---|---|---|
1 | BB1 | 0.91 | 1 | Y | N | |
2 | BB2 | 0.83 | 1 | N | N | |
3 | BB1 | 0.75 | 1 | N | N | |
4 | BB3 | 0.56 | 0 | N | N | |
5 | BB4 | 0.49 | 0 | N | N | |
6 | BB5 | 0.46 | 1 | N | N | |
7 | BB6 | 0.35 | 0 | N | N | |
8 | BB7 | 0.23 | 0 | N | N | |
9 | BB8 | 0.18 | 1 | N | N | |
10 | BB9 | 0.09 | 1 | N | N | |
合计 | 1 | 0 | 6 |
以此类推,设定不同的confidence_th(每次增加一个BoundingBox为Positive),然后计算对应的Precision和Recall。
Top1 confidence_th=0.9 precision=1.00 and recall=0.14
Top2 confidence_th=0.82 precision=1.00 and recall=0.29
Top3 confidence_th=0.74 precision=0.66 and recall=0.29
Top4 confidence_th=0.55 precision=0.50 and recall=0.29
Top5 confidence_th=0.48 precision=0.40 and recall=0.29
Top6 confidence_th=0.45 precision=0.50 and recall=0.43
Top7 confidence_th=0.34 precision=0.43 and recall=0.43
Top8 confidence_th=0.22 precision=0.38 and recall=0.43
Top9 confidence_th=0.17 precision=0.44 and recall=0.57
Top10 confidence_th=0.08 precision=0.50 and recall=0.71
P-R曲线
以Precision为Y轴,Recall为X轴,画出P-R 曲线。
随着confidence_th不断降低,Recall稳步变大,Precision局部波动但整体减小。(这也很好理解,阈值越低,能找到的目标越多,但同时精度也可能会下降。)
AP(Average Precision)的计算为Interpolated PR曲线下的面积。
Interpolated PR曲线是将取Recall大于等于r时最大的Precision的点(图中红色点)连起来。即下图中红色虚线所示:
大家可以算一下,这里AP=0.5。
思考
1、mAP虽然综合考虑了平均模型准确度,使得模型优劣的评判标准不随confidence_th和IoU_th取值变化而变化。
但在工程应用中,物体是否被正确检测到,还是需要具体的confidence_th和IoU_th,工程上更关心在固定的confidence_th和IoU_th下的准确率。
2、在工程应用中,根据对于confidence和IoU的侧重不同,来设计loss函数。
参考:
https://www.jianshu.com/p/fbb96bb49782
https://blog.csdn.net/asasasaababab/article/details/79994920
https://zhuanlan.zhihu.com/p/56961620
一文讲清楚目标检测中mAP、AP、precison、recall、accuracy、TP、FP、FN、TN相关推荐
- 对于目标检测中mAP@0.5的理解
文章目录 前言 mAP@0.5 AP是Precision-Recall Curve(PRC)下面的面积!!! 理一下思路 参考 前言 一直不是很理解目标检测中的mAP是如何的,今天具体来写一下,加深一 ...
- 目标检测中map的计算
文章目录 前言 一.IoU和TP.FP.TN.FN的概念 IoU(Intersection over Union): TP.FP.TN.FN 二.Precision和Recall 1.Precisio ...
- 刷网课会被检测出来吗_目标检测中的Precision和Recall
目标检测中常用的性能评价指标有Precision,Recall和F1 score. 当面对不同的任务时,该如何提高recall和precision? 思考:对于Precision值,其代表的是你所预测 ...
- 目标检测 TP\FP\FN\TN如何理解?FN和TN无意义
1.TP TN FP FN的概念 TP TN FP FN里面一共出现了4个字母,分别是T F P N. T是True: F是False: P是Positive: N是Negative. T或者F代表的 ...
- 目标检测中的precision,recall,AP,mAP计算详解
大雁与飞机 假设现在有这样一个测试集,测试集中的图片只由大雁和飞机两种图片组成,如下图所示: 假设你的分类系统最终的目的是:能取出测试集中所有飞机的图片,而不是大雁的图片. 现在做如下的定义: Tru ...
- 目标检测中召回率(Recall),精确率(Precision),平均正确率(Average_precision(AP) ),交除并(Intersection-over-Union(IoU))
前言 在训练YOLO v2的过程中,系统会显示出一些评价训练效果的值,如Recall,IoU等等.为了怕以后忘了,现在把自己对这几种度量方式的理解记录一下. 这一文章首先假设一个测试集,然后围绕这一 ...
- 目标检测中对precision和recall的理解
首先有四个基本概念是由二分类的混淆矩阵得来,需要了解. TP:将实际正样本预测为正样本 FP:将负样本预测为正样本 TN:将负样本预测为负样本 FN:将正样本预测为正样本 最开始的时候分类可能认准了准 ...
- 通俗地讲解目标检测中AP指标
声明:以下内容全是我的个人见解,如有问题,欢迎指正! AP(Average Precision)即平均精度,是目标检测中的一个常用指标. 一.精确率和召回率 说道AP,那不得不提准确率和召回率.首先我 ...
- 目标检测中准确率accuracy的计算(precision是精度、查准率)(Recall是召回率、查全率)
准确率定义为: 查准率P和查全率R分别定义为: 查准率关心的是"预测出正例的正确率"即从正反例子中挑选出正例的问题. 查全率关心的是"预测出正例的保证性"即从正 ...
最新文章
- 源数据文件(.csv)中的空格串和空串对pandas读取结果的影响
- 发现了一个好用的在线勾图的站点
- 问题 D: 巧求和(思维)
- matlab 小波变换_连续小波变换实现方法的总结及其程序详解
- java 控制 crt_secureCRT关闭连接自动关闭tomcat服务
- 单片机搭建环境烧录方法_单片机仿真器的工作原理解析
- js中prototype用法
- Java中httpClient中的设置超时时间
- 计算机职称考试知识点,职称计算机考试复习知识点
- Mybatis非mapper代理配置
- 【转】android fragment 博客 学习
- .NET Remoting学习笔记(二)激活方式
- Centos上PostgreSQL9.3的安装
- 【网络教程】群晖修改 sn 和 MAC,生成器,cpolar内网穿透
- 搞定短视频!批量下载快手视频(附源码)
- java 汉字乱码_【转】Java中文乱码的解决
- 文档没保存可以找回吗?文件丢失恢复方法
- GPS时钟装置(时钟同步设备)在华能某水电公司应用方案
- 使用终端模拟器通过wifi连接eclipse
- 我想知道怎么提升csgo枪法