代码来自于CVPR2018的一篇文章Context Encoding for Semantic Segmentation。
github工程地址为:https://github.com/zhanghang1989/PyTorch-Encoding
很棒的工作。
我是新入门,对代码解读如下,有不对的地方请高手们批评指正。
我的标签图像序号是从0开始,依次编号,0代表背景类

def batch_intersection_union(predict, target, nclass):"""Batch Intersection of UnionArgs:predict: input 4D tensor 具体地为B(batch大小)*C(通道)*H*Wtarget: label 3D tensor 具体地为B(batch大小)*H*Wnclass: number of categories (int)"""#在通道维上取最大值,注意predict为第二个返回值,因此是索引,从0开始#此时predict和target一样,维度均为B*H*W,且值均为0,1,2........._, predict = torch.max(predict, 1) mini = 1maxi = nclassnbins = nclass#将predict和target放入cpu并转换为numpy数组,同时+1#此时predict和target的值为1,2,......predict = predict.cpu().numpy() + 1target = target.cpu().numpy() + 1#假如我除去背景类只有1类目标,则nbins为2。#此句似乎没有实际意义?predict值不变,因为target值均大于0# (target > 0)返回的均为truepredict = predict * (target > 0).astype(predict.dtype)#求交集intersection,维度B*H*W,包含背景类0的交集#intersection交集处>0,非交集处为0(其内部像素值包括0,1,2)intersection = predict * (predict == target)# areas of intersection and union#绘制直方图,nbins个区间,range=(mini, maxi)左闭右开#假如我除去背景类只有1类目标,则nbins为2,range=(1,2),则表示将数组均匀地分为2个区间:[1,1.5],[1.5,2]#第一个bins代表背景,第二个bins代表目标area_inter, _ = np.histogram(intersection, bins=nbins, range=(mini, maxi))area_pred, _ = np.histogram(predict, bins=nbins, range=(mini, maxi))area_lab, _ = np.histogram(target, bins=nbins, range=(mini, maxi))area_union = area_pred + area_lab - area_inter#交集一定小于并集assert (area_inter <= area_union).all(), \"Intersection area should be smaller than Union area"return area_inter, area_union

关于histogram函数,做如下详细说明,参考链接:https://blog.csdn.net/pipisorry/article/details/48770785
https://blog.csdn.net/hyqsong/article/details/40514879
histogram(a,bins=10,range=None,normed=False,weights=None)
其中,a是保存待统计数据的数组,bins指定统计的区间个数,即对统计范围的等分数。 range是一个长度为2的元组,表示统计范围的最小值和最大值,默认值为None,表示范围由 数据的范围决定,即(a.min(), a.max())。
ranges 对于均匀直方图(即nuiform为true),ranges是一个由dims个float数对构成的数组,数对表示对应维的bin的范围. eg.某维有N==2个bins,在ranges中对应的数对为{0,10},均匀的意思是讲,将该维的bin均匀的分为2个区间:[0,5]和[5,10],这是程序自动划分的,只需提供给他数对表示最值范围即可。

当normed参数为False时,函数返回数组a中的数据在每个区间的个数,否则对个数进行正规化处理,使它等于每个区间的概宇密度。weights参数类似。

NumPy中histogram函数应用到一个数组返回一对变量:直方图数组hist和箱式向量,即两个一维数组–hist和bin_edges,第一个数组是每个区间(一个区间代表一个bins)的统计结果, 第二个数组长度为len(hist)+1,每两个相邻的数值构成一个统计区间。
对于bin_edges : array of dtype float,bin edges 的长度要是 hist 的长度加1,bin edges (length(hist)+1),也即 (bin_edges[0], bin_edges[1]) ⇒ hist[0],….,(bin_edges[-2], bin_edges[-1]) ⇒ hist[-1],bin_edges 参数值与输入参数的(bins+1) 保持一致

语义分割中的mIoU计算函数解读相关推荐

  1. 语义分割中的一些模型的分类汇总

    语义分割是深度学习中的一个重要应用领域.自Unet提出到现在已经过去了8年,期间有很多创新式的语义分割模型.简单的总结了Unet++.Unet3+.HRNet.LinkNet.PSPNet.DeepL ...

  2. dice系数 交叉熵_语义分割中的损失函数

    1 交叉熵 信息量:当一个事件发生的概率为 ,那么该事件对应的概率的信息量是 . 信息量的熵:信息量的期望,假设 事件 共有n种可能,发生 的概率为 ,那么该事件的熵 为: 相对熵,又称KL散度,如果 ...

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

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

  4. 来自CCNet的一种创新:语义分割中的十字交叉视觉注意力

    来自CCNet的一种创新:语义分割中的十字交叉视觉注意力 写在文章开头 看个大概 引入 CCNet之道 整体架构 十字交叉注意力 循环--RCCA 优化类别一致性损失 CCNet效果一览 写在文章末尾 ...

  5. 语义分割-Unsupervised Domain Adaptation in Semantic Segmentation:a Review语义分割中的无监督领域自适应:综述

    Unsupervised Domain Adaptation in Semantic Segmentation:a Review语义分割中的无监督领域自适应:综述 0.摘要 1.介绍 1.1.语义分割 ...

  6. 语义分割中常用的评价指标有哪些?

    语义分割的任务就是预测输入图像每个像素点的类别.简单来说,就是做像素级分类. 图中左侧是一张输入图像,中间图像是对图像每个像素类别人工标记的Ground truth(真实标签),右侧图像是对图像每个像 ...

  7. 语义分割中的深度学习方法全解:从FCN、SegNet到各版本DeepLab

    语义分割中的深度学习方法全解:从FCN.SegNet到各版本DeepLab 原文:https://www.sohu.com/a/155907339_610300 图像语义分割就是机器自动从图像中分割出 ...

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

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

  9. 图像语义分割中的上采样(Upsampling)和下采样(subsampling)

    图像语义分割中的上采样和下采样 1. 下采样(subsampled) 2. 上采样(upsampled) 2.1 线性插值 2.2 单线性插值 2.3 双线性插值 2.4 双线性插值举例 2.5 插值 ...

最新文章

  1. GacUI学习(一)
  2. jmeter java接口_JMeter接口Java开发五步曲
  3. (0.2)HarmonyOS鸿蒙开发工具DevEco Studio工程文件目录结构
  4. 初中文化能学编程吗_网页编程课程来了,确定不来pick一下!!!|科创辅学进行时...
  5. HTML 5 Web 存储-localStorage
  6. docker容器内漏洞_如何在2020年发现和修复Docker容器漏洞
  7. Urlrewrite地址重写
  8. 求急!!谁会写接口测试,拜托了各位大佬,跪求!!我感激不尽,好好报答他
  9. 编程运维的一些小Tips
  10. 提高迅雷下载速度 超好用,下载速度实实在在的提高了!
  11. excel浏览器直接下载
  12. 【Codeforces 1009C】Annoying Present
  13. google迈向IoT的开端——推出Android Things操作系统
  14. 止疼药-盐酸羟考酮缓释片//2021-2-20
  15. mysql 将数据导出成excel文件(.xls格式)
  16. INSERT 语句与 FOREIGN KEY 约束冲突
  17. 企业信用资质等级证书的办理流程
  18. Shiro是如何进行权限管理
  19. Ping 命令详解(含真实操作截图)
  20. 超越Yann LeCun:世界模型的学习和推理

热门文章

  1. 投影仪用光学引擎行业现状调研及趋势分析报告
  2. 这算通过审核了么?接下来还有没有什么坑,求大神指点!--酷课堂iOS交流群问答精华整理(201808期)
  3. 边缘计算赋能智慧城市:机遇与挑战
  4. 特斯拉自动驾驶功能更新:将上线红绿灯识别自动停车
  5. 什么是 SRS 呢?在我们大部分的音频播放器里都内欠有这种音效。
  6. 专升本-计算机公共课考点(4)—— 电子表格处理软件 Excel 2010
  7. 读书笔记:杨家成的英语学习之路(附带作者人生感悟)
  8. lab值意义_色差仪lab值如何分析
  9. 夏普电视android应用程序,教你解决夏普电视出现的“应用程序未安装”问题
  10. js根据时间戳倒计时