深度学习模型评估指标

一个深度学习模型在各类任务中的表现都需要定量的指标进行评估,才能够进行横向的对比比较,包含了分类、回归、质量评估、生成模型中常用的指标。

一、分类评测指标

图像分类是计算机视觉中最基础的一个任务,也是几乎所有的基准模型进行比较的任务,从最开始比较简单的10分类的灰度图像手写数字识别mnist,到后来更大一点的10分类的cifar10和100分类的cifar100,到后来的imagenet,图像分类任务伴随着数据库的增长,一步一步提升到了今天的水平。现在在Imagenet这样的超过1000万图像,2万类的数据集中,计算机的图像分类水准已经超过了人类。

图像分类,顾名思义就是一个模式分类问题,它的目标是将不同的图像,划分到不同的类别,实现最小的分类误差,这里只考虑单标签分类问题,即每一个图片都有唯一的类别。

对于单个标签分类的问题,评价指标主要有Accuracy,Precision,Recall,F-score,PR曲线,ROC和AUC。

在计算这些指标之前,先计算几个基本指标,这些指标是基于二分类的任务,也可以拓展到多分类:

  • TP(True Positive):被判定为正样本,事实上也是正样本。真阳。

  • TN(True Negative):被判定为负样本,事实上也是负样本。真阴。

  • FP(False Positive):被判定为正样本,但事实上是负样本。假阳。

  • FN(False Negative):被判定为负样本,但事实上是正样本。假阴。

判别是否为正例只需要设一个概率阈值T,预测概率大于阈值T的为正类,小于阈值T的为负类,默认就是0.5。如果我们减小这个阀值T,更多的样本会被识别为正类,这样可以提高正类的召回率,但同时也会带来更多的负类被错分为正类。如果增加阈值T,则正类的召回率降低,精度增加。如果是多类,比如ImageNet1000分类比赛中的1000类,预测类别就是预测概率最大的那一类。

1. 准确率Accuracy

单标签分类任务中每一个样本都只有一个确定的类别,预测到该类别就是分类正确,没有预测到就是分类错误,因此最直观的指标就是Accuracy,也就是准确率。

Accuracy=(TP+TN)/(TP+FP+TN+FN),表示的就是所有样本都正确分类的概率,可以使用不同的阈值T。

在ImageNet中使用的Accuracy指标包括Top_1 Accuracy和Top_5 Accuracy,Top_1 Accuracy就是前面计算的Accuracy。

记样本xi的类别为yi,类别种类为(0,1,…,C),预测类别函数为f,则Top-1的计算方法如下:

如果给出概率最大的5个预测类别,只要包含了真实的类别,则判定预测正确,计算出来的指标就是Top-5。目前在ImageNet上,Top-5的指标已经超过95%,而Top-1的指标还在80%左右。

2. 精确度Precision和召回率Recall

如果只考虑正样本的指标,有两个很常用的指标,精确度和召回率

正样本精确率为:Precision=TP/(TP+FP),表示的是召回为正样本的样本中,到底有多少是真正的正样本。

正样本召回率为:Recall=TP/(TP+FN),表示的是有多少样本被召回。当然,如果对负样本感兴趣的,也可以计算对应的精确率和召回率,这里记得区分精确率和准确率的分别。

通常召回率越高,精确度越低,根据不同的值可以绘制Recall-Precision曲线,如下图:

横轴就是recall,纵轴就是precision,曲线越接近右上角,说明其性能越好,可以用该曲线与坐标轴包围的面积来定量评估,值在0~1之间。

3. F1 score

有的时候关注的不仅仅是正样本的准确率,也关心其召回率,但是又不想用Accuracy来进行衡量,一个折中的指标是采用F1-score。

F1 score=2·Precision·Recall / (Precision+Recall),只有在召回率Recall和精确率Precision都高的情况下,F1 score才会很高,因此F1 score是一个综合性能的指标。

4.混淆矩阵

如果对于每一类,若想知道类别之间相互误分的情况,查看是否有特定的类别之间相互混淆,就可以用混淆矩阵画出分类的详细预测结果。对于包含多个类别的任务,混淆矩阵很清晰的反映出各类别之间的错分概率,如下图:

上图表述的是一个包含20个类别的分类任务,混淆矩阵为20*20的矩阵,其中第i行第j列,表示第i类目标被分类为第j类的概率,越好的分类器对角线上的值更大,其他地方应该越小。

5.ROC曲线与AUC指标

以上的准确率Accuracy,精确度Precision,召回率Recall,F1 score,混淆矩阵都只是一个单一的数值指标,如果想观察分类算法在不同的参数下的表现情况,就可以使用一条曲线,即ROC曲线,全称为receiver operating characteristic。

ROC曲线可以用于评价一个分类器在不同阈值下的表现情况。在ROC曲线中,每个点的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR),描绘了分类器在True Positive和False Positive间的平衡,两个指标的计算如下:

TPR=TP/(TP+FN),代表分类器预测的正类中实际正实例占所有正实例的比例。

FPR=FP/(FP+TN),代表分类器预测的正类中实际负实例占所有负实例的比例,FPR越大,预测正类中实际负类越多。

ROC曲线通常如下:

其中有4个关键的点:

  • 点(0,0):FPR=TPR=0,分类器预测所有的样本都为负样本;

  • 点(1,1):FPR=TPR=1,分类器预测所有的样本都为正样本;

  • 点(0,1):FPR=0, TPR=1,此时FN=0且FP=0,所有的样本都正确分类;

  • 点(1,0):FPR=1,TPR=0,此时TP=0且TN=0,最差分类器,避开了所有正确答案。

ROC曲线相对于PR曲线有个很好的特性:

当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变,即对正负样本不均衡问题不敏感。比如负样本的数量增加到原来的10倍,TPR不受影响,FPR的各项也是成比例的增加,并不会有太大的变化。所以不均衡样本问题通常选用ROC作为评价标准。

ROC曲线越接近左上角,该分类器的性能越好,若一个分类器的ROC曲线完全包住另一个分类器,那么可以判断前者的性能更好。

如果想通过两条ROC曲线来定量评估两个分类器的性能,就可以使用AUC指标。

AUC(Area Under Curve)为ROC曲线下的面积,它表示的就是一个概率,这个面积的数值不会大于1。随机挑选一个正样本以及一个负样本,AUC表征的就是有多大的概率,分类器会对正样本给出的预测值高于负样本,当然前提是正样本的预测值的确应该高于负样本。

6. TAR,FRR,FAR

这几个指标在人脸验证中被广泛使用,人脸验证即匹配两个人是否是同一个人,通常用特征向量的相似度进行描述,如果相似度概率大于阈值T,则被认为是同一个人。

  • TAR(True Accept Rate)表示正确接受的比例,多次取同一个人的两张图像,统计该相似度值超过阈值T的比例。FRR(False Reject Rate)就是错误拒绝率,把相同的人的图像当做不同人的了,它等于1-TAR。

  • 与之类似,FAR(False Accept Rate)表示错误接受的比例,多次取不同人的两张图像,统计该相似度值超过T的比例。

增大相似度阈值T,FAR和TAR都减小,意味着正确接受和错误接受的比例都降低,错误拒绝率FRR会增加。减小相似度阈值T,FAR和TAR都增大,正确接受的比例和错误接受的比例都增加,错误拒绝率FRR降低。

二、 检索与回归指标

1.IoU

IoU全称Intersection-over-Union,即交并比,在目标检测领域中,定义为两个矩形框面积的交集和并集的比值,IoU=A∩B/A∪B

如果完全重叠,则IoU等于1,是最理想的情况。一般在检测任务中,IoU≥0.5就认为召回,如果设置更高的IoU阈值,则召回率下降,同时定位框也越更加精确。

2.AP和mAP

Average Precision简称AP,这是一个在检索任务和回归任务中经常使用的指标,实际等于Precision-Recall曲线下的面积,这个曲线在上一小节已经说过,下面针对目标检测中举出一个例子进行计算,这一个例子在网上也是广泛流传。

假如一幅图像,有10个人脸,检索出来了20个目标框,每一个目标框的概率以及真实的标签如下,真实标签的计算就用检测框与真实标注框的IoU是否大于0.5来计算。

第一步,就是根据模型得到概率,计算IoU得到下面的表:

第二步,将上面的表按照概率进行排序

Precision的计算如下,以返回的top-5结果为例:

在这个例子中,true positives就是真正的人脸,从Label一栏可以看出,指的是id = 4,2,7,9,16,20的样本。

前5个概率值最大的id中13,19,6是false positives。所以此时的Precision=2/5=40%,即选定了5个人脸,但是只有两个是对的。recall=2/6=33.3%,即总共有6个人脸,但是只召回了2个。

在一个实际的目标检测任务中,目标的数量不一定是5个,所以不能只通过top-5来来衡量一个模型的好坏,选定的id越多,recall就越高,precision整体上则会呈现出下降趋势,因为排在前面的概率高的,一般更有可能是真实的样本,而后面概率低的更有可能是负样本。

令N是所有id,如果从top-1到top-N都统计一遍,得到了对应的precision和recall,以recall为横坐标,precision为纵坐标,则得到了检测中使用的precision-recall曲线,虽然整体趋势和意义与分类任务中的precision-recall曲线相同,计算方法却有很大差别。

PASCAL VOC 2010年提出了一个更好的指标mAP,对于样本不均衡的类的计算更加有效。假设有N个id,其中有M个label,则取M个recall节点,从0到1按照1/M的等间距,对于每个recall值,计算出大于该recall值的最大precision,然后对这M个precision值取平均得到最后的AP值,mAP的计算方法不变。

AP衡量的是学出来的模型在一个类别上的好坏,mAP衡量的是学出的模型在所有类别上的好坏。

转载自https://www.cnblogs.com/tectal/p/10870064.html

深度学习模型评估指标相关推荐

  1. 【AI初识境】深度学习模型评估,从图像分类到生成模型

    文章首发于微信公众号<有三AI> [AI初识境]深度学习模型评估,从图像分类到生成模型 这是<AI初识境>第10篇,这次我们说说深度学习模型常用的评价指标.所谓初识,就是对相关 ...

  2. 二分类最优阈值确定_AI初识:深度学习模型评估,从图像分类到生成模型

    加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...

  3. 深度学习算法评估指标

    一.精度: 检测到真实目标:检测到所有目标 二.召回率: 检测到真实目标:所有目标 三.精度-召回率曲线 四.平均精度: 精度-召回率曲线下的归一化面积 五.检测时间

  4. 深度学习模型测试方法总结

    深度学习模型测试的方法和标准整理 深度学习模型测试,是指系统性地对深度学习算法的可靠性.可移植性.效率进行评估.简单来说,算法测试主要做的是三件事:收集测试数据,思考需要什么样的测试数据以及数据的标注 ...

  5. 【AI不惑境】网络深度对深度学习模型性能有什么影响?

    大家好,这是专栏<AI不惑境>的第二篇文章,讲述模型深度与模型性能的关系. 进入到不惑境界,就是向高手迈进的开始了,在这个境界需要自己独立思考.如果说学习是一个从模仿,到追随,到创造的过程 ...

  6. 【AI初识境】如何增加深度学习模型的泛化能力​​​​​​​

    文章首发于微信公众号<有三AI> [AI初识境]如何增加深度学习模型的泛化能力 这是专栏<AI初识境>的第9篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. ...

  7. 跑深度模型的显卡_不止显卡!这些硬件因素也影响着你的深度学习模型性能

    加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...

  8. [2022 SP] Copy, Right? 深度学习模型版权保护的测试框架

    Copy, Right? A Testing Framework for Copyright Protection of Deep Learning Models | IEEE Conference ...

  9. 该如何训练好深度学习模型?

    博主不是专业搞竞赛出生,仅依赖博主为数有限的工程经验,从工程实践的方面讨论如何把深度学习模型训练好.如果写的不好,欢迎各位大佬在评论区留言互动.训练好深度学习模型与训练深度学习模型差别还是很大的,训练 ...

最新文章

  1. c中结构体的4种定义
  2. 重磅!深度学习知识总结和调参技巧开放下载了
  3. 推荐8个实用性十足,但是很小众的手机APP
  4. python0o12_2020年日期表-python实现
  5. 数据库学习笔记2--MySQL数据类型
  6. 【若依(ruoyi)】工作流操作SQL
  7. HashSet中实现不插入重复的元素
  8. 冰城环保进入智慧时代
  9. Python---试除法求质数的三种方式对比
  10. Python mysql的常用操作
  11. 微信配置JS接口安全域名-Nginx配置 文件的配置
  12. CTFshow-萌新 Writeup
  13. 震惊!用盗版CorelDRAW竟然会这样!
  14. 【CSS3】边角 border-radius
  15. 〖Python 数据库开发实战 - MySQL篇㉑〗- 数据表的外连接
  16. 黑客入侵电脑?原来只需要简单几步就可以了
  17. 【JAVA】MyEclipse 各菜单项:功能、说明(转自CSDN - lgx06)
  18. 就这样,我走完了程序员的前五年,共勉!
  19. 赋能这个词我都快听吐了,还没想到怎么通过赋能挣钱
  20. 如何把pdf分割成一页一页?

热门文章

  1. setInterval与clearInterval
  2. 智慧城市发展下一程:2016年,你必须知道的28个关键场景
  3. 南京国家农创聚功能性农业主导产业 国稻种芯百团计划行动
  4. 2023-01-16 阿里SMS短信接口使用
  5. C#中HttpWebRequest、WebClient、HttpClient 、HttpClientFactory Flurl、的使用总结
  6. Flutter 文件上传 (基于 http.dart)
  7. Capslock + 的使用
  8. B超图像中肾脏的自动分割有什么意义,写出四点,和上面回答的不一样
  9. c语言计算阶乘的和的代码,【C语言训练】阶乘和数* (C语言代码)
  10. 8Manage HCM系统:助力移动互联网企业提升人才竞争力