一、什么是交并比?

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分数相关推荐

  1. 准确率,召回率,F值,ROC,AUC

    准确率,召回率,F值,ROC,AUC 责任编辑:词汇网 发表时间:2016-4-23 20:08:08 度量表 1.准确率 (presion)p=TPTP+FP 理解为你预测对的正例数占你预测正例总量 ...

  2. 机器学习中的性能指标:精度、召回率,PR曲线,ROC曲线和AUC,及示例代码

    机器学习中的性能指标:精度.召回率.PR曲线,ROC曲线和AUC 精度.召回率 基本概念 F-Score 度量曲线 PR曲线 ROC曲线 PR曲线和ROC曲线的比较 AUC 精度.召回率 基本概念 可 ...

  3. AP AR mAP ROC AUC(目标检测)

    目标检测之AP AR mAP ROC AUC(Evaluation metrics) 混淆矩阵中 TP.TN.FP.FN Precision查准率和Recall召回率 P-R曲线 AP mAP AR ...

  4. 准确率/召回率/精准率/F值_模型评价

    准确率/召回率/精准率/F值 模型选择:对特定任务最优建模方法的选择或者对特定模型最佳参数的选择. 在训练数据集上运行模型(算法)并在测试数据集中测试效果, 迭代进行数据模型的修改, 这种方式被称为交 ...

  5. 准确率-召回率 - Precision-Recall

    Precision-Recall 准确率-召回率 本文翻译自 Precision-Recall 更多翻译可以看 Scikit-learn 某部分的中文翻译 用于评估分类器输出质量的 准确率-召回率 指 ...

  6. 图像分类 图像分割的评价指标(混淆矩阵 正确率 精准率 召回率 F1分数 IOU dice系数)

    在图像分类或者图像分割中,为评价模型的预测效果,在训练过程中通常需要比较预测值与真实标签值的差距,即误差. 目录 图像分类过程的评价指标 混淆矩阵 正确率/准确率 精准率 召回率 F1分数 图像分割过 ...

  7. 【数据挖掘】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 ...

  8. 【深度学习-机器学习】分类度量指标 : 正确率、召回率、灵敏度、特异度,ROC曲线、AUC等

    来源于博文:https://blog.csdn.net/tanzuozhev/article/details/79109311 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指 ...

  9. ROC/AUC、精准率、召回率、真正率,假正率等指标含义,学习笔记

    1. 混淆矩阵 对于二分类模型,预测值与真实值的组合情况,行成了混淆矩阵. 第一个字母表示是否预测正确(T/F),第二个表示预测为 P/1 还是 N/0. 2. 准确率 预测正确的结果占总样本的百分比 ...

最新文章

  1. Galaxy Release 20.05 发布,新增多项可视化体验
  2. Linux实用命令集
  3. mysql中decimal与float_MySQL中的float和decimal类型有什么区别
  4. 进阶学习(3.13) Proxy Pattern 代理模式
  5. SQLSERVER 2014 SP1 的服务器 日志文件无法收缩的处理
  6. 数据结构实验之查找七:线性之哈希表
  7. Tomcat输出catalina.out的大小控制
  8. 被流氓360设置浏览器主页的解决办法(如果你也遇到了跟我一样的问题,不妨看一下是不是这个原因)...
  9. 第十一届蓝桥杯青少组Python竞赛真题
  10. linux7.1怎么安装vnc,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  11. 3-Scala控制结构
  12. Spark源码分析之二:Job的调度模型与运行反馈
  13. ZooKeeper 概念讲的好
  14. Linux下编译googletest
  15. cad插件制作教程_站长私藏CAD插件分享(内附使用教程)
  16. 网站性能优化——雅虎14条
  17. 北航计算机学院国家奖学金,2019年经管学院研究生国家奖学金预审结果公示
  18. kodi 自动升级_如何设置您的Kodi库以自动更新
  19. Jackson –将JSON数组字符串转换为List
  20. 使用Python统计历年来各种英语高考题中单词的出现频数

热门文章

  1. 哪个主板可供选择?ATX,Micro-ATX还是Mini-ITX?
  2. '\0'和\0的区别
  3. 上传Excel文件进度条原理
  4. 2023美团面试真题
  5. 阿里巴巴的类ChatGPT产品
  6. 园区网络—中小型企业网络工程项目实践(思科模拟器)
  7. 上市公司碳排放测算数据(1992-2022年)
  8. 虚幻引擎学习之路:动画模块之基础篇
  9. ajax实现分页操作
  10. Soul向港交所递交上市申请,持续发力社交元宇宙赛道