当前位置: 首页 > news >正文

详解机器视觉性能指标相关概念——混淆矩阵、IoU、ROC曲线、mAP等

目录

0. 前言

1. 图像分类性能指标

1.1 混淆矩阵(Confusion Matrix)

1.2 准确率(Precision)

1.3 召回率(Recall)

1.4 F1值(F1 score)

1.5 ROC曲线(接收者工作特征曲线,Receiver Operating Characteristic curve)

1.6 mAP(mean Average Precision)

2. 图像分割性能指标

2.1 交并比(IoU, Intersection over Union)

2.2 准确率(Precision)&召回率(Recall)&F1值(F1 score)

2.3 Dice系数(Dice coefficient)


0. 前言

按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。

本文将通过实例系统性说明机器视觉性能相关指标。关于这些指标内容我大体分为2类:图像分类性能指标和图像分割性能指标。

1. 图像分类性能指标

这类指标用于评估模型对图像分类的准确性:能将图像中的对象正确地划分到对应的分类中的比例、漏识别的比例、错误识别的比例等。

1.1 混淆矩阵(Confusion Matrix)

混淆矩阵是这类性能指标的基础。混淆矩阵是有监督学习中用来评估分类模型在测试数据集上的预测能力的一种评估方式。混淆矩阵是一个二维矩阵,其中每一行表示实际标签,每一列表示预测标签。

混淆矩阵的四个基本指标是真阳性(True Positive,TP)、假阳性(False Positive,FP)、真阴性(True Negative,TN)和假阴性(False Negative,FN),分别表示被正确分类的正例、被错误分类的正例、被正确分类的反例和被错误分类的反例的样本数。

下面通过实例来讲解混淆矩阵:假设我们有一个深度学习模型用来识别图像中是否有奥特曼,我们有下面9个测试样本,经过深度学习模型识别后输出如下:

可见,上述4个指标的对应个数分别为:

  • TP(模型预测有奥特曼,真实也有奥特曼):5
  • TN(模型预测无奥特曼,真实也无奥特曼):1
  • FP(模型预测有奥特曼,但实际无奥特曼):2
  • FN(模型预测无奥特曼,但实际有奥特曼):1

这样对应混淆矩阵为:

判断奥特曼的混淆矩阵真实类别
预测类别5(TP)2(FP)
1(FN)1(TN)

上面虽然是用二分类问题(是否问题、有无问题)来举例,但是混淆矩阵也可以扩展用于多分类问题,例如判断图像中的迪迦奥特曼、泰罗奥特曼、赛文奥特曼等。

判断奥特曼的混淆矩阵真实类别
迪迦泰罗……赛文
预测类别迪迦
泰罗
……
赛文
1.2 准确率(Precision)

准确率的数学定义为:

Precision = \frac{TP}{TP+FP}

准确率描述的是:如果模型输出为“是”,实际有多少比例真实为“是”,即模型预测的准不准。

1.3 召回率(Recall)

召回率的数学定义为:

Recall = \frac{TP}{TP+FN}

召回率描述的是:如果实际都为“是”,模型有多少比例能输出为“是”,即模型预测的全不全。

1.4 F1值(F1 score)

F1值的数学定义为:

F1 score = \frac{2\times Precision\times Recall }{Precision+Recall}

代入上面Precision和Recall的公式可以化简为:

F1 score = \frac{2TP}{2TP+FN+FP}

F1值是一种综合了模型的精度和召回率的评估指标。它是精度和召回率的调和平均值,因此在评估二元分类器时更加全面和准确。在模型选择、参数调优和结果解释等方面都具有重要的参考意义。同时,F1 score也可以用于比较不同模型或算法的性能,以便选择最优模型或算法。

1.5 ROC曲线(接收者工作特征曲线,Receiver Operating Characteristic curve)

这个指标有点复杂。。。

首先,ROC曲线横坐标为假阳性率FPR(False Positive Rate),FPR=FP/(FP+TN)。纵坐标为真阳性率TPR(True Positive Rate,即为Recall),TPR= Recall= TP/(TP+FN)。

然后再回到上面奥特曼的实例:我们需要知道,深度学习网络对于分类问题的输出并非“有”或“无”,而是一个0~1的置信概率。

如果我们设定一个阈值,比如模型计算输出有奥特曼的置信概率在0.6以上,我们才认为模型判断是“有”奥特曼,上面的示例应该变成这样:

显然,如果我们调整这个判断阈值,预测结果“有”或“无”就可能会发生变化,那么FPR和TPR就有可能都会变更,这样就有了一个新的点坐标(FPR,TPR)。

如果我们把所有的(FPR,TPR)都在坐标中描出来,并按顺序连接起来,就得到了ROC曲线。

特别地,如果我们把阈值设定为0,即模型输出的所有结果都为“有”,这时TN=FN=0,(FPR,TPR)=(1,1);如果把阈值设定为1,即模型输出的所有结果都为“无”,这是TP=FP=0,(FPR,TPR)=(0,0)。这样我们就知道ROC曲线肯定是在(0,0)和(1,1)这两点之间。例如下图:

ROC曲线的斜率和凸度反映了分类器的预测性能,ROC曲线越靠近左上角则分类器的性能越好。此外,ROC曲线下的面积AUC(Area Under the ROC Curve)也是一个常用的指标,AUC值越大表示分类器的预测性能越好,AUC值为1表示分类器的预测完全准确。

1.6 mAP(mean Average Precision)

中文咋翻译。。。平均平均精度?

首先需要介绍一下AP。我们按上面ROC的制作思路再制作一条曲线:其横坐标为Recall,纵坐标为Precision。这次我们调整的阈值不再是置信概率,而是IoU(或者说IoU本身也可以算作一种置信概率,下面会有介绍)。

通过调整IoU由0到1,我们获得多个坐标点(Recall,Precision)并依次连线,得到下面的Precision-Recall曲线:

对这条曲线进行积分即为AP:

AP = \int_{0}^{1} p(r)dr

如果我们要识别的对象有多种(迪迦奥特曼、泰罗奥特曼、赛文奥特曼等),那我们就会有多个AP,对其求均值即为mAP。

ROC曲线用于评估二分类器的性能,而mAP(mean Average Precision)是目标检测任务中的一个重要指标,用于评估模型对多个类别目标检测的精度。

2. 图像分割性能指标

这类指标是用于评估图像分割的准确性:能准确分割目标图像,描述预测对象位置和实际位置的差距。

我们还举一个奥特曼的例子:

这里蓝色框A是奥特曼的真实位置,已事先标注出来。红色框B是模型给奥特曼分割的边界。

2.1 交并比(IoU, Intersection over Union)

IoU是预测区域和真实区域的交集和并集的比:

IoU = \frac{A\bigcap B}{A\bigcup B}

mIoU(Mean Intersection over Union)是对所有类别的IoU计算平均值,用于评估多分类分割模型的表现。

2.2 准确率(Precision)&召回率(Recall)&F1值(F1 score)

这3个指标和上面分类问题的定义思路一样,所以一起来讲,其数学定义为:

Precision = \frac{A\bigcap B}{B}

Recall = \frac{A\bigcap B}{A}

F1 score = \frac{2\times Precision\times Recall }{Precision+Recall}

2.3 Dice系数(Dice coefficient)

Dice系数是预测区域和真实区域的交集与两者加和的比:

Dice = \frac{2A\bigcap B}{A+B}

相关文章:

详解机器视觉性能指标相关概念——混淆矩阵、IoU、ROC曲线、mAP等

目录 0. 前言 1. 图像分类性能指标 1.1 混淆矩阵(Confusion Matrix) 1.2 准确率(Precision) 1.3 召回率(Recall) 1.4 F1值(F1 score) 1.5 ROC曲线(接收者工作特征曲线,Receiver Operating Characteristic curve) 1.6 mAP(mean Average Precision) 2. 图像分…...

想要精通算法和SQL的成长之路 - 预测赢家

想要精通算法和SQL的成长之路 - 预测赢家 前言一. 预测赢家二. 石子游戏(预测赢家的进阶版)2.1 博弈论 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 预测赢家 原题链接 主要思路: 我们定义dp[i][j]:在区间 [i, j] 之间先…...

高精度PWM脉宽调制信号转模拟信号隔离变送器1Hz~10KHz转0-5V/0-10V/1-5V/0-10mA/0-20mA/4-20mA

主要特性: >>精度等级:0.1级。产品出厂前已检验校正,用户可以直接使用 >>辅助电源:8-32V 宽范围供电 >>PWM脉宽调制信号输入: 1Hz~10KHz >>输出标准信号:0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等&…...

Vue路由和Node.js环境搭建

文章目录 一、vue路由1.1 简介1.2 SPA1.3 实例 二、Node.js环境搭建2.1 Node.js简介2.2 npm2.3 环境搭建2.3.1 下载解压2.3.2 配置环境变量2.3.3 配置npm全局模块路径和cache默认安装位置2.3.4 修改npm镜像提高下载速度 2.4 运行项目 一、vue路由 1.1 简介 Vue 路由是 Vue.js…...

【Vue】使用vue-cli搭建SPA项目的路由,嵌套路由

一、SPA项目的构建 1、前期准备 我们的前期的准备是搭建好Node.js,测试: node -v npm -v2、利用Vue-cli来构建spa项目 2.1、什么是Vue-cli Vue CLI 是一个基于 Vue.js 的官方脚手架工具,用于自动生成vue.jswebpack的项目模板,它可以帮助开发者…...

Excel 通过条件格式自动添加边框

每录入一次数据就需要手动添加一次边框,非常麻烦,这不是我们想要的。 那么有没有办法,在我们录入数据后,自动帮我们加上边框呢? 选中要自动添加边框的列,然后按箭头流程操作 ↓ ↓ ↓ ↓...

mysql 备份和还原 mysqldump

因window系统为例 在mysql安装目录中的bin目录下 cmd 备份 备份一个数据库 mysqldump -uroot -h hostname -p 数据库名 > 备份的文件名.sql 备份部分表 mysqldump -uroot -h hostname -p 数据库名 [表 [表2…]] > 备份的文件名.sql ## 多个表 空格隔开,中间…...

ELK日志分析系统+ELFK(Filebeat)

本章结构: 1、ELK日志分析系统简介 2、Elasticsearch介绍(简称ES) 3、Logstash介绍 4、Kibana介绍 5、实验,ELK部署 一、ELK日志分析系统简介 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logst…...

ULID 在 Java 中的应用: 使用 `getMonotonicUlid` 生成唯一标识符

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

实用的嵌入式编码技巧:第三部分

每个触发器都有两个我们在风险方面违反的关键规格。“建立时间”是时钟到来之前输入数据必须稳定的最小纳秒数。“保持时间”告诉我们在时钟转换后保持数据存在多长时间。 这些规格因逻辑设备而异。有些可能需要数十纳秒的设置和/或保持时间;其他人则需要少一个数量…...

8个很棒的Vue开发技巧

1.路由参数解耦 通常在组件中使用路由参数,大多数人会做以下事情。 export default { methods: {getParamsId() {return this.$route.params.id} } } 在组件中使用 $route 会导致与其相应路由的高度耦合,通过将其限制为某些 URL 来限制组件的灵活性。…...

Python - 小玩意 - 文字转语音

import pyttsx3 from tkinter import *def recognize_and_save():try:say pyttsx3.init()rate say.getProperty(rate) # 获取当前语速属性的值say.setProperty(rate, rate - 20) # 设置语速属性为当前语速减20text text_var.get()# 语音识别say.say(text)say.runAndWait()…...

聚焦数据库和新兴硬件的技术合力 中科驭数受邀分享基于DPU的数据库异构加速方案

随着新型硬件成本逐渐降低,充分利用新兴硬件资源提升数据库性能是未来数据库发展的重要方向之一,SIGMOD、VLDB、CICE数据库顶会上出现越来越多新兴硬件的论文和专题。在需求侧,随着数据量暴增和实时性的要求越来越高,数据库围绕处…...

哨兵模式(sentinel)

为什么需要哨兵模式 redis的主从复制模式能够缓解“读压力”,但是存在两个明显问题。 主节点发生故障,进行主节点切换的过程比较复杂,需要人工参与,导致故障恢复时间无法保障主节点通过主从复制模式将读压力分散出去&#xff0c…...

b站老王 自动驾驶决策规划学习记录(十二)

自动驾驶之速度规划详解:SL与ST迭代 上一讲:b站老王 自动驾驶决策规划学习记录(十一) 接着上一讲学习记录b站老王对自动驾驶规划系列的讲解 参考视频: 自动驾驶决策规划算法第二章第七节(上) 速度规划详解:SL与ST迭代…...

服务器租用机房机房的类型应该如何选择

服务器租用机房机房的类型应该如何选择 1.单电信机房 单电信服务器机房业务模式比较固定,访问量也不是很大,适合新闻类网站或政务类网站。如果网站的PV流量持续增加,建议后期采用租赁CDN的方式解决非电信用户访问网站速度过慢的问题。 2.双线…...

大数据运维一些常见批量操作命令

大数据运维中,批量操作是一项常见的任务。在使用flume进行数据采集的过程中,有时会出现故障导致采集停止,此时积累了大量的文件。如果想要将这些文件迁移到新的目录,直接使用"mv"命令可能会因为文件数目过多而报错。为了…...

测试人职场生存必须避开的5个陷阱

在互联网职场的工作发展道路上,软件测试人员其实在公司中也面临着各种各样的职场陷阱,有些可能是因为项目业务不熟练造成的,有些可能是自身技术能力不足导致的...等等。软件测试入门相对来说比较容易些,但是想要在测试行业长久发展…...

力扣538 补9.18

538.把二叉搜索树转换为累加树 可以做,主要还是分类讨论并找规律。 当前结点如果是左节点的话,root.valroot.valpre.valdfs(root.right); 如果是右结点的话, root.valpre.val-preval-dfs(root.left); 都和前一个结点有关系,如…...

[Linux入门]---Linux编译器gcc/g++使用

文章目录 1.背景知识2.gcc如何完成编译运行工作预处理(进行宏替换)编译(生成汇编)汇编(生成机器可识别代码)链接(生成可执行文件) 3.函数库动态库静态库动静态库的区别 4.gcc选项 1.…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

python打卡day49

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...