转载 https://www.cnblogs.com/Trevo/p/11795503.html
对于像素级别的分类,最常用的评价指标是Pixel Accuracy(像素准确率)和Mean Inetersection over Union(平均交并比),二者的计算都是建立在混淆矩阵的基础上的–PA,MPA,MIoU,FWIoU

预测正确,前面就是T,否则就是F。预测成什么,后面就是什么。很简单,只是一个表示而已,第一个字母表示预测的正误,第二个字母表示预测成什么,两个即可以表示从什么预测成什么。

使用Pii表示原本为i类同时预测为i类,即真正(TP)和真负(TN),
Pij表示原本为i类被预测为j类,即假正(FP)和假负(FN),如果第i类为正类,i!=j时,那么Pii表示TP,Pjj表示TN,Pij表示FP,Pji表示FN。

PA 像素准确率


利用混淆矩阵计算如下:

#预测对的 / 总的

平均像素准确率(MPA)

针对每个类别,该类别预测正确的数目 / 所有预测为该类别的数目
计算** 每个类别 分类正确的像素数所有预测为该类别像素数的比例**,即精确率,然后累加求平均。

MIOU


频权交并比(FWloU)

频权交并比是根据每一类出现的频率设置权重,权重乘以每一类的IoU并进行求和。公式化如下:

"""
refer to https://github.com/jfzhang95/pytorch-deeplab-xception/blob/master/utils/metrics.py
"""
import numpy as np
__all__ = ['SegmentationMetric']"""
confusionMetric
P\L     P    NP      TP    FPN      FN    TN"""
class SegmentationMetric(object):def __init__(self, numClass):self.numClass = numClassself.confusionMatrix = np.zeros((self.numClass,)*2)def pixelAccuracy(self):# return all class overall pixel accuracy# acc = (TP + TN) / (TP + TN + FP + TN)acc = np.diag(self.confusionMatrix).sum() /  self.confusionMatrix.sum()return accdef classPixelAccuracy(self):# return each category pixel accuracy(A more accurate way to call it precision)# acc = (TP) / TP + FPclassAcc = np.diag(self.confusionMatrix) / self.confusionMatrix.sum(axis=1)return classAccdef meanPixelAccuracy(self):classAcc = self.classPixelAccuracy()meanAcc = np.nanmean(classAcc)return meanAccdef meanIntersectionOverUnion(self):# Intersection = TP Union = TP + FP + FN# IoU = TP / (TP + FP + FN)intersection = np.diag(self.confusionMatrix)union = np.sum(self.confusionMatrix, axis=1) + np.sum(self.confusionMatrix, axis=0) - np.diag(self.confusionMatrix)IoU = intersection / unionmIoU = np.nanmean(IoU)return mIoUdef genConfusionMatrix(self, imgPredict, imgLabel):# remove classes from unlabeled pixels in gt image and predictmask = (imgLabel >= 0) & (imgLabel < self.numClass)label = self.numClass * imgLabel[mask] + imgPredict[mask]count = np.bincount(label, minlength=self.numClass**2)confusionMatrix = count.reshape(self.numClass, self.numClass)return confusionMatrixdef Frequency_Weighted_Intersection_over_Union(self):# FWIOU =     [(TP+FN)/(TP+FP+TN+FN)] *[TP / (TP + FP + FN)]freq = np.sum(self.confusion_matrix, axis=1) / np.sum(self.confusion_matrix)iu = np.diag(self.confusion_matrix) / (np.sum(self.confusion_matrix, axis=1) + np.sum(self.confusion_matrix, axis=0) -np.diag(self.confusion_matrix))FWIoU = (freq[freq > 0] * iu[freq > 0]).sum()return FWIoUdef addBatch(self, imgPredict, imgLabel):assert imgPredict.shape == imgLabel.shapeself.confusionMatrix += self.genConfusionMatrix(imgPredict, imgLabel)def reset(self):self.confusionMatrix = np.zeros((self.numClass, self.numClass))if __name__ == '__main__':imgPredict = np.array([0, 0, 1, 1, 2, 2])imgLabel = np.array([0, 0, 1, 1, 2, 2])metric = SegmentationMetric(3)metric.addBatch(imgPredict, imgLabel)acc = metric.pixelAccuracy()mIoU = metric.meanIntersectionOverUnion()print(acc, mIoU)

PA,MIOU,FWIOU相关推荐

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

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

  2. 语义分割各种评价指标实现

    前言 现存其实已经有很多博客实现了这个代码,但是可能不完整或者不能直接用于测试集的指标计算,这里简单概括一下. 一些概念.代码参考: [1] 憨批的语义分割9--语义分割评价指标mIOU的计算 [2] ...

  3. train_autodeeplab.py代码阅读笔记

    Trainer类初始化部分-- class Trainer(object):def __init__(self, args):self.args = args# Define Saverself.sa ...

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

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

  5. 图像分割评测指标MIOU之python代码详解

    Pixel Accuracy(PA,像素精度):这是最简单的度量,为标记正确的像素占总像素的比例. Mean Pixel Accuracy(MPA,均像素精度):是PA的一种简单提升,计算每个类内被正 ...

  6. 【DeeplabV3+ MIoU】DeeplabV3+计算评价指标

    文章目录 1 分割常用评价指标 1.1 什么是MIoU 1.2 什么是PA 1.2 什么是MPA 2 根据混淆矩阵计算评价指标 2.1 计算MIoU 2.2 计算PA 2.3 计算MPA 3 计算 M ...

  7. 分割评价指标MIOU

    MIOU定义 有很多博客都有写MIOU,参考下面文章 注意点: 类别包含背景,二分类也包含背景 混淆矩阵就是分别统计分类模型归错类,归对类的观测值个数,然后把结果放在一个表里展示出来. 代码实现 &q ...

  8. 深度学习网络评价指标——IoU、Precision、Recall,mIoU、mPA、Accuracy和f-score的定义,区别和联系

    文章目录 评价对象 分类器预测结果 IoU.Precision.Recall Miou.mPA.Accuracy F-Score 评价对象 IoU.Precision.Recall是针对所有图片内的某 ...

  9. 英特尔用ViT做密集预测效果超越卷积,性能提高28%,mIoU直达SOTA|在线可玩

    丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 用全卷积网络做密集预测 (dense prediction),优点很多. 但现在,你可以试试Vision Transformer了-- 英特 ...

最新文章

  1. qu.la网站上的小说爬取
  2. UIPageViewController教程
  3. 修改表主键字段数据类型(V2.0)
  4. IJCAI 2019 论文解读 | 基于超图网络模型的图网络进化算法
  5. python 重置索引_Pandas的reset_index()重置索引列
  6. oracle 工作中遇到的函数
  7. 关于SAP Commerce Cloud CORS policy的设置问题
  8. IIS服务器绑定域名问题
  9. 前端学习(2565):watch监听
  10. 移通好闹钟微信小程序全套源码
  11. 多级缓存设计详解 | 给数据库减负,刻不容缓!
  12. java并发编程之CompletableFuture
  13. Shut Down(or Closing) Your Windows and Open The Unix
  14. 使用spring的事务的三种方法
  15. STC学习:485双机通信
  16. Windows下安装使用LAMMPS并运行例子
  17. matlab 傅里叶变换代码,傅里叶变换的原理及matlab实现.doc
  18. 基于微信小程序驾校报名系统(微信小程序毕业设计)
  19. 领导力提升的科学:如何提升领导力?
  20. matlab 矩阵满秩分解

热门文章

  1. 洛谷 P1008 三连击
  2. 【洛谷】P1008 [NOIP1998 普及组] 三连击
  3. 脉冲宽度调制(Pluse Width Modulation)
  4. 送给1985年左右的朋友 怀念小时候的我们
  5. 战疫之下的“大数据+网格化”管理,谁在颠覆“智能城市”的路径?
  6. hp打印机一直显示正在打印中_HP打印机提示文档正在打印但就是打印不了
  7. 第二章、小实例,画字,画线,矩形,画图,动画(iOS学习笔记,从零开始。)
  8. centos安装包安装最新版nginx
  9. 2022年9月改名字这件事的流程亲历和体会
  10. LVS负载均衡群集——NAT模式实例