机器学习笔记 - IOU、mAP、ROC、AUC、准确率、召回率、F分数
一、什么是交并比?
1、交并比(IOU)概述
交并比(Intersection over Union) 是一种评估指标,用于衡量目标检测器在特定数据集上的准确性。任何提供预测边界框作为输出的算法都可以使用 IoU 进行评估。
只要有测试集手工标记的边界框和我们模型预测的边界框。就可以计算交并比。
- R1:真实的边界框矩形的范围;
- R2:预测出来的矩形的范围;
- Rol:R1和R2重合的范围。
如下图所示
IOU值体现了单个对象预测的准确性。 一般来说,如果 IOU 分数 > 0.5,则认为它是一个很好的注释。不过,这还是因项目而异。
2、计算交并比(IOU)
参考代码
import numpy as np# get IoU overlap ratio
def iou(a, b):# get area of aarea_a = (a[2] - a[0]) * (a[3] - a[1])# get area of barea_b = (b[2] - b[0]) * (b[3] - b[1])# get left top x of IoUiou_x1 = np.maximum(a[0], b[0])# get left top y of IoUiou_y1 = np.maximum(a[1], b[1])# get right bottom of IoUiou_x2 = np.minimum(a[2], b[2])# get right bottom of IoUiou_y2 = np.minimum(a[3], b[3])# get width of IoUiou_w = iou_x2 - iou_x1# get height of IoUiou_h = iou_y2 - iou_y1# get area of IoUarea_iou = iou_w * iou_h# get overlap ratio between IoU and all areaiou = area_iou / (area_a + area_b - area_iou)return iou# [x1, y1, x2, y2]
a = np.array((50, 50, 150, 150), dtype=np.float32)b = np.array((60, 60, 170, 160), dtype=np.float32)print(iou(a, b))
计算如下两个矩形的交并比
a = np.array((50, 50, 150, 150), dtype=np.float32)
b = np.array((60, 60, 170, 160), dtype=np.float32)
输出
0.627907
可视化
二、什么是mAP?
mAP(mean Average Precision)是目标检测中度量识别精度的指标。多个类别目标检测中,每一个类别都可以根据查全率和查准率绘制P-R曲线,横坐标为查全率,纵坐标为查准率。AP就是该曲线下的面积,mAP是多个类别AP的平均值。
计算公式如下
式中,Q表示目标检测的类别集合;AveP(q)是计算类别下目标的平均准确率。
计算mAP时使用联合交集(IoU)。
mAP计算过程
1、对于每个预测,IoU 是针对图像中的每个地面实况框计算的。
2、然后将这些 IoU 阈值设置为某个值(通常在 0.5 和 0.95 之间),并使用贪婪策略将预测与真实框匹配(即首先匹配最高的 IoU)。
3、然后为每个对象类生成精确召回 (PR) 曲线,并计算平均精确度 (AP)。
4、所有对象类的 AP 的平均值就是 mAP。
比如在评估 COCO 数据集时,使用从 0.5 到 0.95 的 10 个 IoU 阈值重复并取平均值。
三、ROC和AUC
ROC(Receiver Operating Characteristics)和AUC(Area Under TheCurve),是检查任何分类模型性能的最重要的评价指标之一,也可以写成AUROC(接收器工作特性下的面积)。AUC-ROC曲线是在不同阈值设置下分类问题的一种性能度量。ROC是概率曲线,AUC表示可分性的程度或度量。它告诉我们模型在多大程度上能够区分类。AUC越高,模型预测0为0、1为1的能力越强。
ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以TPR为纵坐标,FPR为横坐标绘制的曲线。实际上ROC曲线是对一系列的TPR和FPR的值所构成点的连线绘制,而其中每一个点都代表一个概率分界值,即把大于分界值的部分分为正类,小于分界值的分为负类。对于模型而言,计算出每个样本属于正类的概率,然后对概率值按顺序排序,计算每个概率作为分界点的TPR和FPR,然后绘制曲线,就构成了模型的ROC曲线。
进行学习器比较时,如P-R相似,若一个学习器的ROC曲线被另一个学习器的曲线“包住”,则可断言后者的性能优于前者;若两个学习器的ROC曲线发生交叉,则难以一般性地断言两者孰优孰劣。此时如果一定要进行比较,则较为合理的判断是比较ROC曲线下的面积,即AUC。
四、评估模型整体的准确性
上面说IOU是单个对象预测的准确性评价,但是对于整体模型或者说任务,怎么评价其识别的好坏呢?这就引出了下面的F1分数/F2分数/F3分数等。
1、基础概念
(1)TP/TN/FN/FP
在评估模型在指定数据集上的得分之前,让我们先了解一些术语:
True Positive (TP):正确绘制的 IOU 分数 > 0.5 的注释。
True Negative (TN): 当不需要注释时,不绘制注释。
False Negative (FN): 当需要注释时,不绘制注释。
False Positive (FP): 这些是错误绘制的注释,其 IOU 分数 <0.5。
可以从分类的角度来对比理解下:
- TP:被模型预测为好瓜的好瓜(是真正的好瓜,而且也被模型预测为好瓜)
- TN:被模型预测为坏瓜的坏瓜(是真正的坏瓜,而且也被模型预测为坏瓜)
- FN:被模型预测为坏瓜的好瓜(瓜是真正的好瓜,但是被模型预测为了坏瓜)
- FP:被模型预测为好瓜的坏瓜(瓜是真正的坏瓜,但是被模型预测为了好瓜)
(2)准确率(Accuary)
使用准确度方法来衡量我们的模型的性能。准确性是衡量任务性能最直观的方法,因为它只是正确绘制的注释与总预期注释的比率。
虽然准确性很直观也简单,但它也是最缺乏洞察力的。在大多数现实生活中,存在严重的类不平衡,并且没有考虑 FN 和 FP,这可能导致偏见或错误结论。
(3)精确度(Precision)
精度是正确绘制的注释与绘制的注释总数的比率。
(4)召回率(Recall)
召回率是正确绘制的注释与注释总数的比率。
2、什么是F-score?
(1)F分数概述
F-score(也叫F-measure)常用于信息检索领域,用于衡量搜索、文档分类和查询分类性能。F-score 也用于机器学习。F-score 已广泛用于自然语言处理文献,例如命名实体识别和分词的评估。
F分数使用精度和召回率来衡量测试的准确性。
F-score的一般公式如下:
对于F1分数,β=1;对于F2分数, β=2;依此类推。
sklearn.metrics提供了测量fbeta_score分数的函数。
(2)F1分数
F1分数是 Precision 和 Recall 的调和平均值,可以更好地衡量不正确的注释情况。
# calculate the f1-measure
from sklearn.metrics import fbeta_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
# perfect precision, 50% recall
y_true = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
y_pred = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
p = precision_score(y_true, y_pred)
r = recall_score(y_true, y_pred)
f = fbeta_score(y_true, y_pred, beta=1.0)
print('Result: p=%.3f, r=%.3f, f=%.3f' % (p, r, f))
(3)F2分数
F2分数背后的直觉是它对召回率的权重高于精度。
# calculate the f2-measure
from sklearn.metrics import fbeta_score
from sklearn.metrics import f1_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
# perfect precision, 50% recall
y_true = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
y_pred = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
p = precision_score(y_true, y_pred)
r = recall_score(y_true, y_pred)
f = fbeta_score(y_true, y_pred, beta=2.0)
print('Result: p=%.3f, r=%.3f, f=%.3f' % (p, r, f))
机器学习笔记 - IOU、mAP、ROC、AUC、准确率、召回率、F分数相关推荐
- 准确率,召回率,F值,ROC,AUC
准确率,召回率,F值,ROC,AUC 责任编辑:词汇网 发表时间:2016-4-23 20:08:08 度量表 1.准确率 (presion)p=TPTP+FP 理解为你预测对的正例数占你预测正例总量 ...
- 机器学习中的性能指标:精度、召回率,PR曲线,ROC曲线和AUC,及示例代码
机器学习中的性能指标:精度.召回率.PR曲线,ROC曲线和AUC 精度.召回率 基本概念 F-Score 度量曲线 PR曲线 ROC曲线 PR曲线和ROC曲线的比较 AUC 精度.召回率 基本概念 可 ...
- AP AR mAP ROC AUC(目标检测)
目标检测之AP AR mAP ROC AUC(Evaluation metrics) 混淆矩阵中 TP.TN.FP.FN Precision查准率和Recall召回率 P-R曲线 AP mAP AR ...
- 准确率/召回率/精准率/F值_模型评价
准确率/召回率/精准率/F值 模型选择:对特定任务最优建模方法的选择或者对特定模型最佳参数的选择. 在训练数据集上运行模型(算法)并在测试数据集中测试效果, 迭代进行数据模型的修改, 这种方式被称为交 ...
- 准确率-召回率 - Precision-Recall
Precision-Recall 准确率-召回率 本文翻译自 Precision-Recall 更多翻译可以看 Scikit-learn 某部分的中文翻译 用于评估分类器输出质量的 准确率-召回率 指 ...
- 图像分类 图像分割的评价指标(混淆矩阵 正确率 精准率 召回率 F1分数 IOU dice系数)
在图像分类或者图像分割中,为评价模型的预测效果,在训练过程中通常需要比较预测值与真实标签值的差距,即误差. 目录 图像分类过程的评价指标 混淆矩阵 正确率/准确率 精准率 召回率 F1分数 图像分割过 ...
- 【数据挖掘】K-NN 分类 ( 简介 | 分类概念 | K-NN 分类实例 | K-NN 分类准确度评估 | K-NN 分类结果评价指标 | 准确率 | 召回率 )
文章目录 I . K-NN 简介 II . K-NN 分类 III . K-NN 分类实例 IV . K-NN 分类 准确性评估方法 V . 保持法 VI . kkk-交叉确认法 VII . K-NN ...
- 【深度学习-机器学习】分类度量指标 : 正确率、召回率、灵敏度、特异度,ROC曲线、AUC等
来源于博文:https://blog.csdn.net/tanzuozhev/article/details/79109311 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指 ...
- ROC/AUC、精准率、召回率、真正率,假正率等指标含义,学习笔记
1. 混淆矩阵 对于二分类模型,预测值与真实值的组合情况,行成了混淆矩阵. 第一个字母表示是否预测正确(T/F),第二个表示预测为 P/1 还是 N/0. 2. 准确率 预测正确的结果占总样本的百分比 ...
最新文章
- Galaxy Release 20.05 发布,新增多项可视化体验
- Linux实用命令集
- mysql中decimal与float_MySQL中的float和decimal类型有什么区别
- 进阶学习(3.13) Proxy Pattern 代理模式
- SQLSERVER 2014 SP1 的服务器 日志文件无法收缩的处理
- 数据结构实验之查找七:线性之哈希表
- Tomcat输出catalina.out的大小控制
- 被流氓360设置浏览器主页的解决办法(如果你也遇到了跟我一样的问题,不妨看一下是不是这个原因)...
- 第十一届蓝桥杯青少组Python竞赛真题
- linux7.1怎么安装vnc,51CTO博客-专业IT技术博客创作平台-技术成就梦想
- 3-Scala控制结构
- Spark源码分析之二:Job的调度模型与运行反馈
- ZooKeeper 概念讲的好
- Linux下编译googletest
- cad插件制作教程_站长私藏CAD插件分享(内附使用教程)
- 网站性能优化——雅虎14条
- 北航计算机学院国家奖学金,2019年经管学院研究生国家奖学金预审结果公示
- kodi 自动升级_如何设置您的Kodi库以自动更新
- Jackson –将JSON数组字符串转换为List
- 使用Python统计历年来各种英语高考题中单词的出现频数