计算机视觉模型常用评价指标_平均交并比_CV技术指南的博客-程序员秘密

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

目录

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

智能推荐

vue+element+sts临时授权上传大文件到阿里云OSS时踩过的坑。_vue 获取oss sts凭证_SmileHan666的博客-程序员秘密

参考原文地址:参考原文地址阿里云js分片上传官方文档:阿里云js分片上传官方文档STS临时授权访问OSS:STS临时授权访问OSSSTS接入地址:STS接入地址报错Error: Please set the etag of expose-headers in OSS解决:报错Error: Please set the etag of expose-headers in OSS"npm ERR! Error: EPERM: operation not permitted"问题解决:"npm ERR!

(12)mongodb replcation与shard结合使用_weixin_30249203的博客-程序员秘密

  replcation 复制集保证了每个节点中的数据都是一样的,将相同的数据备份到不同的节点,shard 分片是按照某种规则将不同数据写到不同的节点中。replcation与shard结合使用只需将复制集添加到 shard 中就可以了,每一个复制集看做一个整体,当成一个节点对待,如图所示:一般来说如果数剧量很大的话就会用到分片,同时也会用到复制集了,实现步骤记录如下:1、准...

王晶:华为云OCR文字识别服务技术实践、底层框架及应用场景 | AI ProCon 2019_华为云开发者联盟的博客-程序员秘密

演讲嘉宾 |王晶(华为云人工智能高级算法工程师王晶)出品 |AI科技大本营(ID:rgznai100)近期,由CSDN主办的2019中国AI开发者大会(AI ProCon 2019)在北京举办。在计算机视觉技术专题,华为云OCR人工智能高级算法工程师王晶分享了“文字识别服务的技术实践、底层框架及应用场景”的主题演讲。演讲的第一部分,他分享了文字检测和识别的基础知识以及难点...

Redis-hash算法、rehash及如何解决键冲突_redis hash rehash_See_NUMB的博客-程序员秘密

文章目录1. hash算法2. rehash3. 哈希表的扩展和收缩4. 解决哈希冲突5. 渐进式rehash1. hash算法学过数据结构的知道,当要将一个新的键值对添加到字典里面时, 程序需要先根据键值对的键计算出哈希值和索引值, 然后再根据索引值, 将包含新键值对的哈希表节点放到哈希表数组的指定索引上面。计算hash值和索引值的方法如下# 使用字典设置的哈希函数,计算键 key 的哈希值hash = dict->type->hashFunction(key);# 使用哈希

第十一届蓝桥杯省赛第二场JavaC组数字三角形_zz_zz__zz_zz的博客-程序员秘密

目录试题 H: 数字三角形内存限制: 512.0MB 本题总分:20【问题描述】上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。【输入格式】输入的第一行包含一个整数 N (1 < N ≤ 100),表示三角形的行数。下面的N 行给出数字三角形。数字三角形上的数都是

牛客练习赛68题解 A-C_牛客小白赛68c题_&稚始稚终的博客-程序员秘密

A.牛牛的mex题目传送门牛牛的mex题目大意给你一个长度为n的序列a1~an(0<=ai<n且ai互不相同),有q次询问,每次想询问区间[l,r]中最小的未出现的自然数。思路由于每个0~n-1每个数字都只出现了一次,于是我们可以记下每个数字出现的位置,然后每次询问都从小到大进行遍历,如果该数不在询问范围内,那么它就是答案。AC Code#include<bits/stdc++.h>using namespace std;const int N=1e5+10;i

随便推点

PHP中使用Redis长连接笔记_i-neojos的博客-程序员秘密

php中使用redis长连接踩过的坑,pconnect连接创建的redis实例,因为select db操作修改了redis实例,导致出现意想不到的问题

Linux 下使用 Swift MQTT_weixin_33856370的博客-程序员秘密

作者:Joe,原文链接,原文日期:2016-06-12译者:shanks;校对:CMB;定稿:Cee在过去几年的时间里,我一直从事物联网(Internet of Things,IoT)软件的开发项目。在这段时间里面,我学到了不少关于和云端通信传感以及遥感的协议方案。在物联网领域最通用的方案是 MQTT ,一个轻量级的协议,用于发布消...

AJAX_商晓沐的博客-程序员秘密

AJAX关于ajax和异步什么是ajax?交互式网站开发技术实现动态更新(局部)的内容优点:提升浏览器的加载速度实现了局部刷新表单验证(增强用户体验)Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术本质:是在HTTP协议的基础上以异步的方式通过XMLHttp...

几个基本排序算法总结( C语言实现 )_c语言完成排序心得_zomoe的博客-程序员秘密

最近由于长时间没写过基本的排序算法,结果导致只知道大概思想便不知怎么去编写这些算法的代码了,所以借着一下午的时间把基本的几个排序算法的代码写了一边,算是对它的复习吧!  一  .「冒泡排序」:  冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数

【Social listening实操】作为一个合格的“增长黑客”,你还得重视外部数据的分析!..._weixin_30865427的博客-程序员秘密

本文转自知乎作者:苏格兰折耳喵—————————————————————————————————————————————————————在本文中,作者引出了“外部数据”这一概念,并实例分析,如何从海量的外部数据中获取可以对自身业务起到指导作用和借鉴意义的insight,并借助外部环境数据来优化自己。现在互联网上关于“增长黑客”...

python去除空行_python剔除空行_weixin_39622399的博客-程序员秘密

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!if line.split(): print(idx, line)r_file.close()打印结果:0 hello2 nanjing4 100...版权声明:本文为博主原创文章,遵循 cc 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https:bl...

推荐文章

热门文章

相关标签