MIOU定义

有很多博客都有写MIOU,参考下面文章
注意点:

  • 类别包含背景,二分类也包含背景
  • 混淆矩阵就是分别统计分类模型归错类,归对类的观测值个数,然后把结果放在一个表里展示出来。

代码实现

"""
refer to https://github.com/jfzhang95/pytorch-deeplab-xception/blob/master/utils/metrics.py
"""
import numpy as np# 设标签宽W,长H
def fast_hist(a, b, n):  # a是转化成一维数组的标签,形状(H×W,);b是转化成一维数组的预测特征图,形状(H×W,);n是类别数目k = (a >= 0) & (a < n)  # k是一个一维bool数组,形状(H×W,);目的是找出标签中需要计算的类别(去掉了背景),假设0是背景out = np.bincount(n * a[k].astype(int) + b[k], minlength=n ** 2).reshape(n, n)return outdef per_class_iu(hist):  # 分别为每个类别(在这里是19类)计算mIoU,hist的形状(n, n)out = np.diag(hist) / (hist.sum(1) + hist.sum(0) - np.diag(hist))  # 矩阵的对角线上的值组成的一维数组/矩阵的所有元素之和,返回值形状(n,)return outdef compute_mIoU(pred, label, n_classes=2):hist = np.zeros((n_classes, n_classes))  # hist初始化为全零,在这里的hist的形状是[n_classes, n_classes]hist += fast_hist(label.flatten(), pred.flatten(), n_classes)  # 对一张图片计算 n_classes×n_classes 的hist矩阵,并累加mIoUs = per_class_iu(hist)  # 计算逐类别mIoU值print('mIOUs', mIoUs)for ind_class in range(n_classes):  # 逐类别输出一下mIoU值print(str(round(mIoUs[ind_class] * 100, 2)))print('===> mIoU: ' + str(round(np.nanmean(mIoUs) * 100, 2)))  # 在所有验证集图像上求所有类别平均的mIoU值,计算时忽略NaN值return mIoUsif __name__ == '__main__':imgPredict = np.array([0, 0, 1, 0, 0, 0, 0, 0, 1])  # 可直接换成预测图片imgLabel = np.array([0, 1, 1, 0, 0, 0, 0, 0, 1])  # 可直接换成标注图片compute_mIoU(imgPredict, imgLabel)# metric = SegmentationMetric(3)  # 3表示有3个分类,有几个分类就填几# metric.addBatch(imgPredict, imgLabel)# pa = metric.pixelAccuracy()# cpa = metric.classPixelAccuracy()# mpa = metric.meanPixelAccuracy()# mIoU = metric.meanIntersectionOverUnion()# print('pa is : %f' % pa)# print('cpa is :')  # 列表# print(cpa)# print('mpa is : %f' % mpa)# print('mIoU is : %f' % mIoU)

参考博客

[1]:语义分割之MIoU原理与实现
[2]:4.4.2分类模型评判指标(一) - 混淆矩阵(Confusion Matrix)
[3]:核心这一篇:深度学习计算机视觉图像分割领域指标mIoU(平均交并比)计算代码与逐行解析

分割评价指标MIOU相关推荐

  1. 憨批的语义分割重制版2——语义分割评价指标mIOU的计算

    憨批的语义分割重制版2--语义分割评价指标mIOU的计算 注意事项 学习前言 什么是mIOU mIOU的计算 1.计算混淆矩阵: 2.计算IOU: 3.计算mIOU: 计算miou 注意事项 这是针对 ...

  2. 语义分割评价指标mIOU

    mIOU定义 Mean Intersection over Union(MIoU,均交并比),为语义分割的标准度量.其计算两个集合的交集和并集之比,在语义分割问题中,这两个集合为真实值(ground ...

  3. 语义分割的评价指标——MIoU

    语义分割的评价指标--MIoU 前言 代码 前言 MIoU(Mean Intersection over Union)是语义分割的一个评价指标,表示平均交并比,即数据集上每一个类别的IoU值的平均. ...

  4. 南开大学提出新物体分割评价指标,相比经典指标错误率降低 69.23%

    前景图的度量对于物体分割算法的发展有着重要的作用,特别是在物体检测领域,其目的是在场景中精确地检测和分割出物体.但是,当前广泛应用的评估指标 (AP, AUC) 都是基于像素级别的误差度量,缺少结构相 ...

  5. 语义分割之评价指标MIoU介绍

    预备知识 我们在进行语义分割结果评价的时候,常常将预测出来的结果分为四个部分:True Positive,False Positive,True Negative,False Negative,其中n ...

  6. 详解语义分割评价指标

    本文主要介绍语义分割的三大评价指标,分别是执行时间.内存占用以及准确度,本文着重介绍准确度. 一.执行时间 二.内存占用 三.准确度 假设一共有k+1类(包括k个目标类和1个背景类): 1.Pixel ...

  7. 语义分割指标---MIoU详细介绍(原理及代码)

    一.IOU理解 在语义分割的问题中,交并比就是该类的真实标签和预测值的交和并的比值 单类的交并比可以理解为下图: TP: 预测正确,真正例,模型预测为正例,实际是正例 FP: 预测错误,假正例,模型预 ...

  8. tensorflow语义分割计算mIoU时忽略某一类别

    在做语义分割的时候,有不少数据集中的部分类别是我们不想让其参与mIoU计算的.tensorflow忽略某一类别计算mIoU的方法网上比较少.经过阅读tensorflow文档,总结出一下求解方法: 数据 ...

  9. 语义分割 评价指标(global_acc, mean_acc, mean_iou)等numpy实现

    语义分割常见评价指标global_acc, mean_acc, mean_iou计算,个人学习记录,仅供参考. 一.理论计算 假设真实标签为: 预测标签为: 则手动列出混淆矩阵可得: 1.1 全局准确 ...

最新文章

  1. “区块链”究竟是什么
  2. 了解SQL Server触发器及触发器中的事务
  3. Asp.Net Core 快速邮件队列设计与实现
  4. JDK Unsafe类的使用与CAS原子特性
  5. linux int64_t 头文件,这对int64_t的处理是GCC和Clang的错误吗?
  6. adb native raact 夜神_React Native 与 夜神模拟器的绑定
  7. 高效数据序列化的工具 FlatBuffers 的初体验
  8. 学习笔记 - Nginx在多层代理下获取真实客户端IP地址
  9. webpack搭建服务器,随时修改刷新
  10. selnium 判断页面加载完成_Selenium_等待页面加载完毕
  11. 基于python的图书管理系统设计与实现论文_图书管理系统的设计与实现图书管理系统论文...
  12. 财务模块的一些基础概念
  13. 概率图模型——贝叶斯网络
  14. win10系统电脑修改注册表设置自动锁屏时间
  15. ECPC-2015部分题解
  16. mac移除下载镜像的quarantine
  17. oracle羊毛,预言机(Oracle)简介和撸羊毛教程— 上篇
  18. 2010年度CSDN十大博客文章(个人收藏)
  19. 牛客假日团队赛6 F:Mud Puddles
  20. mysql explain关键字解析

热门文章

  1. 基于Ace的Markdown编辑器
  2. 传奇登录器闪退怎么回事?传奇登录器闪退解决方法分享
  3. hihoCoder 1039:字符消除(字符串处理)
  4. android 获得ram大小,Android中获取(RAM)总运存大小和可用运存大小
  5. flutter onPressed onTap等手势检测及触摸事件处理
  6. Windows上利用Python自动切换代理IP的终极方案!
  7. 2022微信群裂变强制分享引流源码+防洪+独立后台
  8. android源码大放送啦(实战开发必备)
  9. oracle冷备修改数据文件位置,Oracle冷备迁移脚本(文件系统)
  10. 号外:Axure导入有了!思维导图也正式上线了!