计算机视觉模型常用评价指标_平均交并比-程序员宅基地

技术标签: 计算机视觉  目标检测  深度学习  # 深度学习必备知识  

目录

1、概述

2、常用评价指标

2.1 分类任务

2.2 检测任务

2.3 分割任务


1、概述

        计算机视觉基础任务可分为4大类:分类、定位、检测、分割。分类任务就是判断图像中物体的所属类别,一般来说一张图像中只包含一类物体,对图像进行特征描述是图像分类任务的主要研究内容;定位任务就是确定图像中目标的具体位置,通常以边界框(bounding box)等形式表示;检测任务通常是输出图像中各个目标的边界框及标签。分类和定位通常是单目标的,而目标检测是多目标的,具体区别如下图所示。

分割任务是指将图像分成若干语义区域的过程,它可以细分为语义分割、实体分割、全景分割3个研究方向,图像分割这3个研究方向的区别如下图所示。

语义分割(semantic segmention),也就是通常理解的图像分割,它是一个逐像素的图像分类问题,每个像素预测类别唯一,可数目标与不可数目标都要分类; 实例分割(Instance Segmentation),不仅要预测可数目标的语义标签,还要区分个体的ID,语义标签指的是物体的类别,而实例ID则对应同类物体的不同编号,注意不可数目标不需要预测,实例分割相当于目标检测+语义分割;全景分割(Panoptic Segmentation),它要求图像中的每个像素点都必须被分配一个语义标签和一个实例ID,全景分割相当于语义分割+实例分割。

2、常用评价指标

2.1 分类任务

        分类任务常用准确率、精确率、召回率、F1_scores、ROC曲线等指标来评价模型的优劣,当然这些基础指标也可以用来评价分割模型或检测模型,它们基本上是可以通用的。混淆矩阵是对分类问题预测结果的总结,也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法。混淆矩阵中含有4个分类问题的基础指标,如下表所示。

混淆矩阵 真实值
True False
预测值 Positive TP FP
Negative FN TN

TP:被模型预测为正类的正样本,即真实标签为1,预测也为1的样本。

TN:被模型预测为负类的负样本,即真实标签为0,预测也为0的样本。

FP:被模型预测为正类的负样本,即真实标签为0,但预测为1的样本。

FN:被模型预测为负类的正样本,即真实标签为1,但预测为0的样本。

        预测性分类模型肯定要求越准越好,也就是在混淆矩阵中,TP和TN的数量越多越好,FP和FN的数量越少越好。但一个模型仅仅使用混淆矩阵中几个简单的基本指标是远远不够的,因此还需要用下面几种指标来进一步评估模型的好坏。

①准确率(Accuracy)

Accuracy=\frac{TP+TN}{TP+TN+FP+FN}

②精确率或查准率(Precision):指在模型预测为1的样本中实际为1的概率

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

③召回率或查全率(Recall):指在实际为1的样本中预测为1的概率。也叫真阳率、灵敏度,简称TPR。

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

注意:精确率和召回率是比较容易混淆的两个概念,很多人不清楚什么场景下该用精确率,什么时候该用召回率。举个例子(正样本一般是更关注的样本表现,比如地震、肿瘤、垃圾邮件等):在肿瘤判断和地震预测等场景下,要求模型有更高的召回率,只要是个肿瘤或者地震就不能放过;在垃圾邮件判断等场景下,要求模型有更高的精确率,必须确保放进回收箱的都得是垃圾邮件,千万不能有正常邮件。

④F1_score:兼顾了分类模型的精确率和召回率,可以看作是模型精确率和召回率的调和平均数,最大值是1,最小值是0,1代表模型效果最好,0代表模型效果最坏。

F1=\frac{2}{\frac{1}{P}+\frac{1}{R}}=\frac{2PR}{P+R}=\frac{2TP}{2TP+FN+FP}

⑤P-R曲线

        P-R曲线以召回率Recall为横坐标,以精确率Precision为纵坐标,曲线越往右上凸说明该模型效果越好。如下图所示,图中有黑、橙、蓝三条曲线,它们分别代表三个模型的P-R曲线,其中黑、橙这两条曲线一直在蓝曲线的上方,则说明黑、橙曲线对应模型的效果比蓝曲线对应模型的效果要更好;而黑、橙两条曲线有交点,无法判别这两个模型的好坏,这需要视情况而定。还有一点需要注意的就是P-R曲线的两个指标都只关注正样本。

        看到这里大家可能会有疑问,一条P-R曲线代表一个模型,而画P-R曲线首先得有多组(R,P)点,那么难道一个模型的召回率和精确率不是唯一的吗?首先,可以告诉大家一个确定的模型,其召回率和精确率肯定是唯一的,P-R曲线之所以有多组(P,R)点,是因为分类器有概率输出,0.5通常被作为阈值,大于0.5的属于一类,小于0.5的属于另一类,但基于不同的场景,可以通过控制概率输出的阈值来改变预测的标签,这样选择不同的阈值就会得到不同组(P,R)点,从而可以画出如上图所示的P-R曲线。

⑥ROC曲线

        ROC曲线是以FPR为横坐标,以TPR为纵坐标。其中TPR叫真阳率或灵敏度,就是召回率,指在实际为1的样本中预测为1的概率;FPR叫假阳率或特异度,是指实际为0的样本中预测为1的概率。

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

FPR=\frac{FP}{FP+TN}

ROC曲线的走势如下图所示,曲线越往左上凸表明模型效果越好。ROC曲线和P-R曲线都是通过选择不同的阈值得到不同的点,从而画出曲线。

P-R曲线和ROC曲线对比:当正负样本数量接近1:1时,P-R 曲线和 ROC 曲线都可以很好的用来评估模型的优劣,P-R曲线越往右上凸,表明该模型越好,ROC曲线越往左上凸,表明该模型越好。ROC曲线有个优势,就是当负样本数量很多时,如下图所示,ROC曲线依然能够保持趋势不变,而P-R曲线会变化很大,基本失去了对模型的评价能力。

        P-R曲线之所以变化这么大,是因为负样本的数量远超正样本时,P-R曲线中的召回率R也即ROC曲线中的真阳率TPR基本不会发生变化,但是P-R曲线中FP的大量增幅会导致精确率P的大幅降低。而ROC曲线之所以依然能够保持趋势基本不变,是因为样本数量不平衡不会导致ROC曲线中TPR和FPR这两个指标发生大的变化,但这既是AUC曲线的优势同时也是AUC曲线的劣势,为什么这样说呢?这是因为负样本数量太多会导致FP大幅数量大幅增加,FP的大幅增长只能换来FPR的微小改变,结果是虽然大量负例被错判成正例,但在ROC曲线上却无法直观地看出来。所以为了弥补ROC曲线的这一劣势,常常使用ROC曲线+AUC指标一起来评价模型。而在实际应用中一般正样本为更加关注的表现,比如地震、肿瘤等,这类样本往往都很难采集,数量很少,数据集中类别不平衡,即正负样本比例差距较大的情况又是经常会发生的。

⑦AUC指标

        AUC指标被定义为ROC曲线下的面积,AUC=0.5对应的是分类器最差的情况,此时ROC曲线变成了一条y=x的直线,TPR一直等于FPR,这也就意味着不论样本真实类别是1还是0,分类器模型预测为1的概率是相等的,这就好比抛硬币,没有任何分类能力;AUC=1对应的是分类器最好的情况,意味着模型总能预测对。

        AUC的优势就是AUC的计算方法同时考虑了不同阈值下分类器对于正样本和负样本的分类能力,在样本不平衡的情况下,依然能够对分类器作出合理的评价,弥补了ROC曲线的缺点。总之AUC指标是分类模型比较好的评价指标之一。

2.2 检测任务

        目标检测任务除了可以使用分类任务的一些评价指标外,还有几个目标检测模型专门的评价指标,比如:mAP、FPS等。

 ①mAP(类平均精确率)

        目标检测问题中的每个图片都可能包含一些不同类别的物体,并且即使你的目标检测器在图片中检测到某类别目标,但如果你无法定位,它也没有用处,因此需要同时评估模型的物体分类和定位性能,而用于图像分类问题的标准指标精确率Precision不能直接应用于此,于是mAP评价指标就出来了。mAP是目标检测问题中最常用的评估指标,在讲解mAP之前,必须先弄明白AP的含义,AP的英文全称是Average Precision,它被定义为某类别P-R曲线下的面积,也就是说一个类别可以计算出一个AP值;mAP的英文全称是mean Average Precision,被定义为所有类别AP值的平均值。在实际计算过程中AP定义为10个Recall值([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9])下Precision的平均值,它可以表征整个PR曲线下的面积,下面通过一个例子来说明如何计算mAP。

       在计算mAP评价指标的场景下,先明确几个定义:

1)交并比——IoU

        交并比(IOU)是度量两个检测框(对于目标检测来说)的交叠程度,公式如下:

IoU=\frac{area(B_{pre}\cap B_{gt})}{area(B_{pre}\cup B_{gt})}

B_{gt}代表的是目标实际的边框(Ground Truth,GT),B_{pre} 代表的是预测的边框,通过计算这两者的 IOU,可以判断预测的检测框是否符合条件,IOU 用图片展示如下:

 2)TP、FP、FN、TN

TP:满足IoU> threshold(阈值threshold根据实际情况取)的预测框数量(同一个Ground Truth只计算一次,也就是说如果有多个满足条件,只取IoU最大的那个)。

FP:满足IoU\leq threshold的预测框数量,或者是检测到同一个 GT 的多余检测框的数量。

FN:没有检测到的 GT 的数量。

TN:这个在目标检测问题中几乎不可能得到,所以mAP计算中没有用它。

3)精确率P和召回率R

        精确率P是指预测为1的样本中实际为1的概率,召回率是指实际为1的样本中预测为1的概率。所以它们的公式可以分别定义为如下所示,其中all ground truth代表所有GT的数量,这个值在数据集给定时就固定了。

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

R=\frac{TP}{TP+FN}=\frac{TP}{all ground truth}

        下面开始讲这个例子,假设我们有 7 张图片(Images1-Image7),这些图片有 15 个目标(绿色的框,GT 的数量,上文提及的 all ground truths)以及 24 个预测边框(红色的框,A-Y 编号表示,并且有一个置信度值)。

        根据上图以及说明,我们可以列出以下表格,其中 Images 代表图片的编号,Detections 代表预测边框的编号,Confidences 代表预测边框的置信度,TP or FP 代表预测的边框是标记为 TP 还是 FP(认为预测边框与 GT 的 IOU 值大于等于 0.3 就标记为 TP;若一个 GT 有多个预测边框,则认为 IOU 最大且大于等于 0.3 的预测框标记为 TP,其他的标记为 FP,即一个 GT 只能有一个预测框标记为 TP),这里的 0.3 是随机取的一个值

        通过上表,我们可以绘制出 P-R 曲线(因为 AP 就是 P-R 曲线下面的面积),但是在此之前我们需要计算出 P-R 曲线上各个点的坐标,根据置信度从大到小排序所有的预测框,然后就可以计算 Precision 和 Recall 的值,见下表。(需要记住一个叫累加的概念,就是下图的 ACC TP 和 ACC FP

        有了这24对P-R 值,就可以绘制出P-R曲线。

        得到 P-R 曲线就可以计算 AP(P-R 曲线下的面积),要计算 P-R曲线下方的面积,为了计算方便,我们一般会先对曲线进行平滑锯齿操作,这个操作简单来说就是在Recall轴上选取n个点,看看它的右侧谁的Precision最大,然后这个区间都使用这个Precision值。比如假设在Recall轴上选取 [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]这10个点,每个Recall点对应的Precision值都取从该点开始P-R曲线右侧最大的Precision值,得到新曲线,如下图的红线所示,然后求取红线下的面积即是该类别的AP值。

 

  AP=0.1\times 1+0.1\times 0.6666+0.3\times 0.4285+0.5\times 0=\frac{1}{10}\times (1+0.6666+0.4285+0.4285+0.4285+0+0+0+0+0)=0.295

        如上式AP的计算过程所示,AP既可以看作是P-R曲线下的面积(即红线下的面积),也可以看作是所有选取的10个Recall点[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9]所对应精确率Precision的平均值,这可能也是AP(Average Precision)名字真正的由来,即精确率的平均值。要计算 mAP,就得把所有类别的 AP 都计算出来,然后求取平均即可。 

②FPS

        FPS是目标检测模型又一重要的评价指标,它主要用来评价模型的检测速度,表示每秒内可以处理的图片数量,每秒处理图片的数量越多,模型越好。

2.3 分割任务

 ①MIoU(平均交并比)

        平均交并比是分割模型中最常用的评价指标,简称MIoU。交并比IoU表示的含义是模型对某一类别预测结果和真实值的交集与并集的比值,只不过对于目标检测而言是检测框和真实框之间的交并比,而对于图像分割而言是计算预测掩码和真实掩码之间的交并比。计算出所有类别的IoU之后,再求平均即可得到MIoU。

②MPA(类别平均像素准确率)

        类别平均像素准确率是分割模型又一评价指标,像素准确率PA的含义是某一类别预测正确的像素数占总像素数的比例,计算出所有类的PA,然后累加求平均,即可得到类别平均像素准确率MPA。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Mike_honor/article/details/126123689

智能推荐

程序员的路上,你掌握了什么概念或技术使你感觉自我提升惊人?_程序员感觉没啥提升-程序员宅基地

文章浏览阅读394次。你学会了做功能,用各种库,各种框架,项目形形绝色,需求千姿百态,变化莫测。但你都过来了,凭借着优秀的搜索素养,复制黏贴,錸主义的能力(我不是在讽刺,这是一种编程必须的能力),成功地解决了一个又一个陌生的需求。你觉得自己走过了很长的路。这时候大概三年过去了,确实不短。但也渐渐意识到似乎缺了什么东西,有一种不满足感,以前你只追求高效率地完成工作,现在你想追求得更多一点。_程序员感觉没啥提升

hihoCoder 1014 Trie树【python版】_hihocoder 1014 python-程序员宅基地

文章浏览阅读703次。python版的简单字典树:n = int(raw_input())lis = []for i in range(n): str = raw_input() lis.append(str)trie = {}for i in range(n): p=trie for ch in lis[i]: if not p.has_key(ch): _hihocoder 1014 python

linux驱动-file_operations之mmap_file_operations mmap-程序员宅基地

文章浏览阅读3.8k次。简述: linux内存空间分为用户空间和内核空间,应用程序是不能直接访问内核空间的数据。 mmap就是建立内核空间映射到用户空间虚拟地址上,之后,应用程序直接访问映射后虚拟地址,实际是在访问内核空间。应用程序mmap的系统调用: mmap声明的头文件:#include 如是ubuntu系统,可以在/usr/include/sys目录下查看 应用程序mmap声明:voi_file_operations mmap

Tornado介绍-程序员宅基地

文章浏览阅读645次。文章目录特点结构模块Tornado服务器的三个底层核心模块设计模型Tornado龙卷风是一个开源的网络服务器框架,它是基于社交聚合网站FriendFeed的实时信息服务开发而来的Tornado是使用Python编写的Web服务器兼Web应用框架与主流Web服务器框架不同的是,Tornado是异步非阻塞式服务器,得益于非阻塞式和对epoll模型的运用Tornado是实时Web服务的一个理想框架,它非常适合开发长轮询、WebSocket和需要与每个用户建立持久连接的应用特点轻量级Web框架_tornado

Linux高级篇--MYSQL数据库之索引管理、锁和事务管理以及日志管理_lock tables teachers read-程序员宅基地

文章浏览阅读340次。Linux高级篇–MYSQL数据库之索引管理、锁和事务管理以及日志管理一、 优化查询和索引管理查询缓存查询缓存( Query Cache )原理缓存SELECT操作或预处理查询的结果集和SQL语句,当有新的SELECT语句或预处理查询语句请求,先去查询缓存,判断是否存在可用的记录集,判断标准:与缓存的SQL语句,是否完全一样,区分大小写优缺点不需要对SQL语句做任何解析和执行,当然语..._lock tables teachers read

STM32中使用HAL库重定向printf()函数_hal库stm32写fputc函数-程序员宅基地

文章浏览阅读2.2w次,点赞5次,收藏52次。函数添加头文件#include "stdio.h"添加函数// 重定向函数1int fputc(int ch,FILE *f){ uint8_t temp[1]={ch}; HAL_UART_Transmit(&UartHandle,temp,1,2); //UartHandle是串口的句柄}//重定向函数2PUTCHAR_PROT..._hal库stm32写fputc函数

随便推点

实战wxPython: 002-wxPython提供了哪些模块用于Python应用开发_wxpython模块-程序员宅基地

文章浏览阅读314次。wxPython是用于创建桌面GUI应用程序的跨平台工具包。其主要作者是Robin Dunn。它是基于成熟的跨平台C ++库wxWidgets的Python包装。使用wxPython,开发人员可以在Windows,Mac和各种Unix系统上创建应用程序。_wxpython模块

内存泄漏解决思路_idea如何查线程泄露-程序员宅基地

文章浏览阅读120次。发现linux上服务 刚启动的时候是 占用700MB,一直在跑商品同步,初步怀疑是商品同步的时候导致内存泄漏开始排查 ps -aux|grep tomcat 使用查看内存 发现占用 2.5G查看到 端口是 47407 使用 jmap -dump:live,format=b,file=heap5.hprof 47407生成快照 heap.hprofidea安装 jprofilerwind..._idea如何查线程泄露

谁说菜鸟不会数据分析-程序员宅基地

文章浏览阅读109次。第四章 数据处理4.2 数据清洗1.重复数据处理筛选重复数据:(1)函数法:对 =COUNTIF(A:A, A2) =COUNTIF(A$2:A2, A2) 粗体部分不理解;(2)高级筛选法;(3)条件格式法:对重复值进行标记;(4)数据透视表法:用数据透视表标记重复出现的次数。 删除重复数据:(1)法一 菜单操作删除:选中区域--“数据”选项卡--“数据工具”--“删除重复项”;...

idea翻译插件Translation无法翻译_翻译失败:缺少必须参数-程序员宅基地

文章浏览阅读1.1w次。错误提示:Too Many Requests.重新下载和更改设置和重启idea都无法恢复,重启电脑后一切恢复正常_翻译失败:缺少必须参数

java long 对应mybati类型_mybatis常用jdbcType数据类型以及对应的JavaType-程序员宅基地

文章浏览阅读3.2k次。1、MyBatis 通过包含的jdbcType类型BIT、FLOAT、CHAR 、TIMESTAMP 、 OTHER 、UNDEFINEDTINYINT 、REAL 、VARCHAR 、BINARY 、BLOB NVARCHAR、SMALLINT 、DOUBLE 、LONGVARCHAR 、VARBINARY 、CLOB、NCHAR、INTEGER、 NUMERIC、DATE 、LONGVARBI..._long对应的jdbctype

鸿蒙系统笔记本产业链,鸿蒙系统笔记本电脑要来了?!-程序员宅基地

文章浏览阅读308次。近日,华为在伦敦举办了一场媒体活动,主要介绍了华为鸿蒙系统(HarmonyOS)特性。此外,华为全球高级产品经理Peter Gauden还向媒体透露了一些有关鸿蒙系统产品的信息,他表示鸿蒙系统在荣耀智慧屏上首秀之后,未来还会登陆海外市场发售的笔记本电脑和智能手表设备。根据外媒报道,基于鸿蒙OS的智能手表将率先发布,并且很可能会在9月19日与华为Mate 30系列一同发布,而且很可能搭载于Watch..._笔电接入鸿蒙

推荐文章

热门文章

相关标签