1、MIOU定义

Mean Intersection over Union(MIoU,均交并比):为语义分割的标准度量。其计算两个集合的交集和并集之比,在语义分割的问题中,这两个集合为真实值和预测值。在每个类上计算IoU,之后平均。计算公式如下:

i表示真实值,j表示预测值 ,p_{ij}pij​ 表示将i预测为j 。

2、直观理解

MIoU:计算两圆交集(橙色部分)与两圆并集(红色+橙色+黄色)之间的比例,理想情况下两圆重合,比例为1。

3、MIOU实现

(1)先求混淆矩阵

(2)再求mIOU

混淆矩阵的每一行再加上每一列,最后减去对角线上的值

import numpy as np

class IOUMetric:
    """
    Class to calculate mean-iou using fast_hist method
    """

def __init__(self, num_classes):
        self.num_classes = num_classes
        self.hist = np.zeros((num_classes, num_classes))

def _fast_hist(self, label_pred, label_true):
        # 找出标签中需要计算的类别,去掉了背景
        mask = (label_true >= 0) & (label_true < self.num_classes)
        # # np.bincount计算了从0到n**2-1这n**2个数中每个数出现的次数,返回值形状(n, n)
        hist = np.bincount(
            self.num_classes * label_true[mask].astype(int) +
            label_pred[mask], minlength=self.num_classes ** 2).reshape(self.num_classes, self.num_classes)
        return hist

# 输入:预测值和真实值
    # 语义分割的任务是为每个像素点分配一个label
    def ev aluate(self, predictions, gts):
        for lp, lt in zip(predictions, gts):
            assert len(lp.flatten()) == len(lt.flatten())
            self.hist += self._fast_hist(lp.flatten(), lt.flatten())
            
        # miou
        iou = np.diag(self.hist) / (self.hist.sum(axis=1) + self.hist.sum(axis=0) - np.diag(self.hist))
        miou = np.nanmean(iou) 
        
        # -----------------其他指标------------------------------
        # mean acc
        acc = np.diag(self.hist).sum() / self.hist.sum()
        acc_cls = np.nanmean(np.diag(self.hist) / self.hist.sum(axis=1))

freq = self.hist.sum(axis=1) / self.hist.sum()
        fwavacc = (freq[freq > 0] * iou[freq > 0]).sum()

return acc, acc_cls, iou, miou, fwavacc

语义分割评估指标MIOU相关推荐

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

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

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

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

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

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

  4. 语义分割常用指标详解(附代码)

    全套代码可至本人github下载地址 使用步骤: 下面是我自己写的测试代码,上面地址下载的也会包含 # 输入:测试集标注文件夹和对应的预测文件夹,图片命名为 标注+x:predict+x# 输出:四个 ...

  5. 【机器学习】图像语义分割常用指标Dice系数 敏感性 特异性 IOU及python代码实现

    文章目录 知识铺垫 1. Dice系数和IOU 2.敏感性(=Recall).特异性和精确度(=precision=PPV) 2.1 敏感性(召回率)和特异性 2.2 敏感性和特异性之间的关系 2.3 ...

  6. 语义分割中的mIoU计算函数解读

    代码来自于CVPR2018的一篇文章Context Encoding for Semantic Segmentation. github工程地址为:https://github.com/zhangha ...

  7. 语义分割MIoU代码解析

    1. MIoU 源码解析TensorFlow 和 PyTorch 源码解析 2.[语义分割]语义分割评估指标mIOU 3. 语义分割代码阅读-评价指标mIoU的计算 4. 深度学习计算机视觉图像分割领 ...

  8. 【语义分割】评价指标:PA、CPA、MPA、IoU、MIoU详细总结和代码实现(零基础从入门到精通系列!)

    文章目录 引言 1 混淆矩阵 2 语义分割 PA:像素准确率 CPA:类别像素准确率 MPA:类别平均像素准确率 IoU:交并比 MIoU:平均交并比 3 综合实例 步骤一:输入真实.预测图片 步骤二 ...

  9. 激光雷达:点云语义分割算法

    作者 | 巫婆塔里的工程师@知乎 来源 | https://zhuanlan.zhihu.com/p/412161451 编辑 | 焉知智能汽车 1. 前言 之前的文章中介绍了基于LiDAR点云的物体 ...

最新文章

  1. C#开发ActiveX网页截图控件
  2. iphone网络交互json实现
  3. 初二下册计算机考试试题,2017下半年计算机等级考试二级Java模拟试题及答案(18)...
  4. Try to create new xs project in AG3
  5. Android中的一些基础知识(二)
  6. 【转】LDA数学八卦
  7. urban数据集_JUST技术|CK实现时序数据管理
  8. ndk学习20: jni之OnLoad动态注册函数
  9. java流被关闭后怎样重新打开,java – 如何停止MediaPlayer流然后重新启动它? Android的...
  10. flask-sqlalchemy 数据基本操作--实例
  11. Tricks(五)—— Python 返回所有符合条件的下标
  12. M1芯片mac好用吗?来听听ta们是怎么说的
  13. 基于(LinuxC语言)的UDP局域网聊天室
  14. 设计模式实践-装饰器
  15. 如何使用ERD设计关系数据库?
  16. pdf转换器免费版下载
  17. Android使用MediaCodec进行视频编码 视频的一些基础概念介绍
  18. Google hacking使用总结
  19. Redis 性能优化 13 条军规
  20. CDN进行防御的两大原理

热门文章

  1. 全球首发!惯性导航导论(剑桥大学)第三部分
  2. 仿网易云项目前端服务器部署+Nodejs部署
  3. epub格式电子书剖析之三:NC…
  4. Java 根据银行卡号获取银行名称以及图标
  5. 5G中传和回传的承载解决方案
  6. 使用CompletableFuture+ExecutorService+Logback的多线程测试
  7. Excel文本日期格式转为日期格式的方法
  8. bios无cfg lock的情况如何disable cfg lock
  9. 解决时间输出格式带 T 带 000+00:00 输出时间多了个T 返回时间格式带T
  10. Java面试题上篇(转)