主要运用在图像分割当中的miou指标–(unet网络)
混淆矩阵
在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面,如下,对角线为正确分类的点。

这里顺便讲下ROC与PRC、F1

以上两个评估指标也用于验证集的评估,且两者比较相似,可以进行转换
ROC曲线

纵坐标为TPR(召回率),横坐标为FPR
AUC面积
为了计算 ROC 曲线上的点,我们可以使用不同的分类阈值多次评估逻辑回归模型,但这样做效率非常低。幸运的是,有一种基于排序的高效算法可以为我们提供此类信息,这种算法称为曲线下面积(Area Under Curve)。

比较有意思的是,如果我们连接对角线,它的面积正好是 0.5。对角线的实际含义是:随机判断响应与不响应,正负样本覆盖率应该都是 50%,表示随机效果。 ROC 曲线越陡越好,所以理想值就是 1,一个正方形,而最差的随机判断都有 0.5,所以一般 AUC 的值是介于 0.5 到 1 之间的。

AUC 的一般判断标准

0.5 - 0.7: 效果较低,但用于预测股票已经很不错了

0.7 - 0.85: 效果一般

0.85 - 0.95: 效果很好

0.95 - 1: 效果非常好,但一般不太可能
原文链接:https://blog.csdn.net/weixin_43612023/article/details/103191708
如何判断 ROC 曲线的好坏?

TPR 越高,同时 FPR 越低(即 ROC 曲线越陡)即左上角越凸越好,那么模型的性能就越好。

PRC曲线

prc曲线是右上越凸越好
ROC曲线的PRC曲线的区别和联系
ROC适用于正负样本不太平衡的数据集,因为它的变化不大,比较稳定,作为评估的比较多,因为正常数据集基本都不平衡。PRC曲线主要当ROC曲线下面积差不多时,用来比较不同分类器的好坏。
各指标之间的关系为


言归正传,对于混淆矩阵对角线越大对应召回率越大
代码为:

# 设标签宽W,长H
def fast_hist(a, b, n):#--------------------------------------------------------------------------------##   a是转化成一维数组的标签,形状(H×W,);b是转化成一维数组的预测结果,形状(H×W,)#--------------------------------------------------------------------------------#k = (a >= 0) & (a < n)#--------------------------------------------------------------------------------##   np.bincount计算了从0到n**2-1这n**2个数中每个数出现的次数,返回值形状(n, n)#   返回中,写对角线上的为分类正确的像素点#--------------------------------------------------------------------------------#return np.bincount(n * a[k].astype(int) + b[k], minlength=n ** 2).reshape(n, n)
def per_class_iu(hist):return np.diag(hist) / np.maximum((hist.sum(1) + hist.sum(0) - np.diag(hist)), 1) def per_class_PA(hist):return np.diag(hist) / np.maximum(hist.sum(1), 1) def compute_mIoU(gt_dir, pred_dir, png_name_list, num_classes, name_classes):  print('Num classes', num_classes)  #-----------------------------------------##   创建一个全是0的矩阵,是一个混淆矩阵#-----------------------------------------#hist = np.zeros((num_classes, num_classes))#------------------------------------------------##   获得验证集标签路径列表,方便直接读取#   获得验证集图像分割结果路径列表,方便直接读取#------------------------------------------------#gt_imgs     = [join(gt_dir, x + ".png") for x in png_name_list]  pred_imgs   = [join(pred_dir, x + ".png") for x in png_name_list]  #------------------------------------------------##   读取每一个(图片-标签)对#------------------------------------------------#for ind in range(len(gt_imgs)): #------------------------------------------------##   读取一张图像分割结果,转化成numpy数组#------------------------------------------------#pred = np.array(Image.open(pred_imgs[ind]))  #------------------------------------------------##   读取一张对应的标签,转化成numpy数组#------------------------------------------------#label = np.array(Image.open(gt_imgs[ind]))  # 如果图像分割结果与标签的大小不一样,这张图片就不计算if len(label.flatten()) != len(pred.flatten()):  print('Skipping: len(gt) = {:d}, len(pred) = {:d}, {:s}, {:s}'.format(len(label.flatten()), len(pred.flatten()), gt_imgs[ind],pred_imgs[ind]))continue#------------------------------------------------##   对一张图片计算21×21的hist矩阵,并累加#------------------------------------------------#hist += fast_hist(label.flatten(), pred.flatten(),num_classes)  # 每计算10张就输出一下目前已计算的图片中所有类别平均的mIoU值if ind > 0 and ind % 10 == 0:  print('{:d} / {:d}: mIou-{:0.2f}; mPA-{:0.2f}'.format(ind, len(gt_imgs),100 * np.nanmean(per_class_iu(hist)),100 * np.nanmean(per_class_PA(hist))))#------------------------------------------------##   计算所有验证集图片的逐类别mIoU值#------------------------------------------------#mIoUs   = per_class_iu(hist)mPA     = per_class_PA(hist)#------------------------------------------------##   逐类别输出一下mIoU值#------------------------------------------------#for ind_class in range(num_classes):print('===>' + name_classes[ind_class] + ':\tmIou-' + str(round(mIoUs[ind_class] * 100, 2)) + '; mPA-' + str(round(mPA[ind_class] * 100, 2)))#-----------------------------------------------------------------##   在所有验证集图像上求所有类别平均的mIoU值,计算时忽略NaN值#-----------------------------------------------------------------#print('===> mIoU: ' + str(round(np.nanmean(mIoUs) * 100, 2)) + '; mPA: ' + str(round(np.nanmean(mPA) * 100, 2)))  return mIoUs

混淆矩阵--在图像精度的应用(mIou指标)相关推荐

  1. MFC实现ENVI分类影像混淆矩阵(Confusion Matrix)及精度计算(Overall Accuracy和Kappa Coefficient)

    混淆矩阵(Confusion Matrix) 混淆矩阵计算代码: // 打开两幅待比较的分类影像 CFile datClassifyImg(ImgPath1, CFile::modeRead | CF ...

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

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

  3. 分类器MNIST交叉验证准确率、混淆矩阵、精度和召回率(PR曲线)、ROC曲线、多类别分类器、多标签分类、多输出分类

    本博客是在Jupyter Notebook下进行的编译. 目录 MNIST 训练一个二分类器 使用交叉验证测量精度 混淆矩阵 精度和召回率 精度/召回率权衡 ROC曲线 多类别分类器 错误分析 多标签 ...

  4. 图像分类中混淆矩阵精度验证法中的几个指标说明

    ToolBox->Classification->PostClassification->Confusion Matrix->Using Ground Truth ROIs,可 ...

  5. python 怎么调用 矩阵 第几行_第58集 python机器学习:混淆矩阵精度指标

    混淆矩阵的精度计算公式为:精度=(TP+TN)/(TP+TN+FP+FN),也就是说,精度就是指正确的预测数目除以所有样本的数量. 准确率.召回率与f-分数:总结混淆矩阵还有几种方法,其中最常见的就是 ...

  6. 混淆矩阵与miou代码

    一.混淆矩阵 # 计算混淆矩阵 def generate_matrix(num_class,gt_image, pre_image):#正确的gt_maskmask = (gt_image >= ...

  7. 利用混淆矩阵及Kappa系数评价土地利用分类精度

    文章目录 一.准备工作 二.处理步骤 2.1 Arcmap:栅格转点+多值提取到点 栅格转点 多值提取至点 2.2 Excel:计算混淆矩阵 三.Excel计算模板下载地址 一.准备工作 土地利用类型 ...

  8. 什么是混淆矩阵精度、召回率、准确性、F1 分数、FPR、FNR、TPR、TNR?

    在你的数据科学生涯的开始,混淆矩阵会非常混乱,我们会有很多问题,比如什么时候使用精度?什么时候使用召回?在哪些情况下可以使用精度?因此,我将尝试在本博客中回答这些问题. 什么是混淆矩阵? 混淆矩阵是一 ...

  9. 解读混淆矩阵在语义分割FCN指标计算中的应用(含代码实现)

    一.混淆矩阵的概念 混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示.具体评价指标有总体精度.制图精度.用户精度等,这些精度指标从不同的侧面反映了图像分类的精度. 在人工 ...

最新文章

  1. 公司的API接口被刷了,那是因为你没这样做
  2. 手把手教你用线性回归预测二手房房价
  3. 解读ADC采样芯片(EV10AQ190A)的工作模式(四通道模式)
  4. blog搬家通知---------------------------------------
  5. excel操作技巧记录(实时更新)
  6. 笔记-中项案例题-2018年下-采购管理
  7. C语言试题四十五之把第1到第p个字符,平移到字符串的最后,把第p+1到最后的字符移到字符串的前部。
  8. 拓端tecdat|R语言神经网络模型预测车辆数量时间序列
  9. C语言2级题pdf百度云,C语言二级考试试题.pdf
  10. 转~解决VS2017 C++无法打开源文件 WinSock2.h Windows.h mswsock.h Ws2tcpip.h
  11. Verilog:三段式状态机(数字钟)
  12. Linux操作系统中常用软件包的下载命令
  13. mac怎么压缩pdf文件最小
  14. 计算机语音发展,计算机语音合成技术研究及发展方向
  15. 按位寻址与按字节寻址的区别
  16. VMware虚拟化- vCenter CPU 内存 资源池和vAPP理论及应用
  17. 笔记本电脑键盘没坏却无法打字的情况
  18. STM32开发笔记113:ADS1258驱动设计——读取温度值
  19. tar命令(linux解压缩命令)
  20. iOS简单实现图片模糊渐变效果

热门文章

  1. 激光雷达公司一径科技完成C轮融资,将加快核心芯片自研
  2. Linux下CGroup进行CPU内存等资源控制
  3. 到底买苹果XS还是XR_没有5G的苹果到底还值不值得买
  4. Python周刊505期
  5. C++递归算法之分成互质组
  6. 让电脑键盘L键变成锁定计算机怎么办,教你电脑键盘按键错乱怎么恢复
  7. 华信短信视频开源平台搭建攻略(之三完结易错篇)
  8. java知识体系介绍
  9. java 实例化异常_如何处理实例化类对象时发生的异常
  10. linux内核是如何实现分页机制的