Dice系数和mIoU是语义分割的评价指标,在这里进行了简单知识介绍。

一、Dice系数

1.1 概念理解

Dice系数源于二分类,本质上是衡量两个样本的重叠部分,是一种集合相似度度量函数,该指标范围从0到1,其中“1”表示完整的重叠。 其计算公式为:

其中 |X∩Y| 是X和Y之间的交集,|X|和|Y|分表表示X和Y的元素的个数,其中,分子的系数为2,是因为分母存在重复计算X和Y之间的共同元素的原因。

对于语义分割问题而言,X-GT分割图像(Ground Truth),Y-Pred分割图像。

看图一直观理解一下

公式就可以理解为

1.2 实际计算

首先将 |X∩Y| 近似为预测图pred和label GT 之间的点乘,并将点乘的元素的结果相加:

(1)预测分割图与 GT 分割图的点乘:

(2)逐元素相乘的结果元素的相加和:

对于二分类问题,GT分割图是只有0,1两个值的,因此 |X∩Y| 可以有效的将在 Pred 分割图中未在 GT 分割图中激活的所有像素清零. 对于激活的像素,主要是惩罚低置信度的预测,较高值会得到更好的 Dice 系数。
(3)计算|X|和|Y|,这里可以采用直接元素相加,也可以采用元素平方求和的方法:

1.3 PyTorch代码

def dice_coeff(pred, target):smooth = 1.num = pred.size(0)m1 = pred.view(num, -1)  # Flattenm2 = target.view(num, -1)  # Flattenintersection = (m1 * m2).sum()return (2. * intersection + smooth) / (m1.sum() + m2.sum() + smooth)

二、mIoU

2.1 语义分割元素分类的四种情况

true positive(TP):预测正确, 预测结果是正类, 真实是正类
false positive(FP):预测错误, 预测结果是正类, 真实是负类
true negative(TN):预测错误, 预测结果是负类, 真实是正类
false negative(FN):预测正确, 预测结果是负类, 真实是负类
TN(真负): 预测正确, 预测结果是负类, 真实是负类 #跟类别1无关,所以不包含在并集中

2.2 MloU定义与单个IoU理解

计算真实值和预测值两个集合的交集和并集之比。这个比例可以变形为TP(交集)比上TP、FP、FN之和(并集)。即:MloU=TP/(FP+FN+TP)。
MloU一般都是基于类进行计算的,将每一类的IoU计算之后累加,再进行平均,得到的就是基于全局的评价。
Mean Intersection over Union(MloU, 均交并比):为语义分割的标准度量。其计算两个集合的交并比,在语义分割的问题中,这两个集合为真实值(ground truth) 和预测值(predicted segmentation) 。计算公式如下:
i表示真实值,j表示预测值,Pij 表示将i预测为j。
等价于:

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

2.3 MloU计算

(1)首先是计算混淆矩阵(误差矩阵)

(2)计算MloU
参考链接中的代码部分:https://blog.csdn.net/u012370185/article/details/94409933
github:https://github.com/dilligencer-zrj/code_zoo/blob/master/compute_mIOU

三、cross entropy 交叉熵

图像分割中最常用的损失函数是逐像素交叉熵损失。该损失函数分别检查每个像素,将类预测(深度方向的像素向量)与我们的热编码目标向量进行比较。

由此可见,交叉熵的损失函数单独评估每个像素矢量的类预测,然后对所有像素求平均值,所以我们可以认为图像中的像素被平等的学习了。但是,医学图像中常出现类别不均衡(class imbalance)的问题,由此导致训练会被像素较多的类主导,对于较小的物体很难学习到其特征,从而降低网络的有效性。

有较多的文章对其进行了研究,包括 Long et al. 的 FCN 在每个通道加权该损失,从而抵消数据集中存在的类别不均的问题。同时,Ronneberger et al.提出的 U-Net 提出了新的逐像素损失的加权方案,使其在分割对象的边界处具有更高的权重。该损失加权方案以不连续的方式帮助他们的 U-Net 模型细分生物医学图像中的细胞,使得可以在二元分割图中容易地识别单个细胞。

四、Dice Loss

Dice Loss的计算公式非常简单如下:

这种损失函数被称为 Soft Dice Loss,因为我们直接使用预测概率而不是使用阈值或将它们转换为二进制mask。

Soft Dice Loss 将每个类别分开考虑,然后平均得到最后结果。比较直观如图所示。

需要注意的是Dice Loss存在两个问题:

(1) 训练误差曲线非常混乱,很难看出关于收敛的信息。尽管可以检查在验证集上的误差来避开此问题。

(2) Dice Loss比较适用于样本极度不均的情况,一般的情况下,使用 Dice Loss 会对反向传播造成不利的影响,容易使训练变得不稳定。

所以在一般情况下,还是使用交叉熵损失函数。

PyTorch参考代码

import torch.nn as nn
import torch.nn.functional as Fclass SoftDiceLoss(nn.Module):def __init__(self, weight=None, size_average=True):super(SoftDiceLoss, self).__init__()def forward(self, logits, targets):num = targets.size(0)smooth = 1probs = F.sigmoid(logits)m1 = probs.view(num, -1)m2 = targets.view(num, -1)intersection = (m1 * m2)score = 2. * (intersection.sum(1) + smooth) / (m1.sum(1) + m2.sum(1) + smooth)score = 1 - score.sum() / numreturn score

参考链接:

https://zhuanlan.zhihu.com/p/86704421
https://blog.csdn.net/weixin_43346901/article/details/99880278
https://blog.csdn.net/gjk0223/article/details/2314844
https://blog.csdn.net/Biyoner/article/details/84728417
https://www.aiuai.cn/aifarm1159.html
https://zhuanlan.zhihu.com/p/88805121
https://blog.csdn.net/u012370185/article/details/94409933

Dice Loss与mIoU相关推荐

  1. Dice系数(Dice coefficient)与mIoU与Dice Loss

    Dice系数和mIoU是语义分割的评价指标,在这里进行了简单知识介绍.讲到了Dice顺便在最后提一下Dice Loss,以后有时间区分一下在语义分割中两个常用的损失函数,交叉熵和Dice Loss. ...

  2. Dice coefficient 和 Dice loss

    一.Dice coefficient 即两个集合的交集比上两个集合的大小之和乘以2.(有点类似IOU,联系和区别:(分割网络评价指标)dice系数和IOU之间的区别和联系_敏儿enjoy的博客-CSD ...

  3. msra数据集_ACL2020 | 香侬科技提出使用Dice Loss缓解数据集数据不平衡问题

    论文标题:Dice Loss for Data-imbalanced NLP Tasks 论文作者:Xiaofei Sun, Xiaoya Li, Yuxian Meng, Junjun Liang, ...

  4. L1/L2/smooth_l1_loss/center_loss+Dice Loss+focal loss+各种IOU loss+kl散度

    一.L1/L2/smooth_l1_loss/center_loss公式与代码 1.公式 L2公式: smooth_L1公式: 2.三种函数numpy代码实现 import numpy as np i ...

  5. Dice Loss,balanced cross entropy,Focal Loss

    Dice Loss Dice系数是一种集合相似度度量函数,取值范围在[0,1]:s=2∣X∩Y∣∣X∣+∣Y∣s=\frac{2|X\cap Y|}{|X|+|Y|}s=∣X∣+∣Y∣2∣X∩Y∣​其 ...

  6. dice系数 交叉熵_ACL2020 | 香侬科技提出用Dice Loss缓解数据集数据不平衡问题

    论文标题: Dice Loss for Data-imbalanced NLP Tasks 论文作者: Xiaofei Sun*, Xiaoya Li*, Yuxian Meng, Junjun Li ...

  7. ACL 2020 | 香侬科技提出用Dice Loss缓解数据集数据不平衡问题

    论文标题: Dice Loss for Data-imbalanced NLP Tasks 论文作者: Xiaofei Sun*, Xiaoya Li*, Yuxian Meng, Junjun Li ...

  8. 图像分割中的Dice Loss

    本文只总结我对Dice Loss的一些理解,如有不同见解欢迎批评指正 1.首先简单介绍一下,这个不多说,详细如知乎所讲. Dice 定义为2倍交集/和, 范围在[0,1]: Dice Loss 取反或 ...

  9. 图像分割之常用损失函数-Dice Loss

    哈喽大家好 ! 我是唐宋宋宋,很荣幸与您相见!! Dice Loss Dice Loss是由Dice系数而得名的,Dice系数是一种用于评估两个样本相似性的度量函数,其值越大意味着这两个样本越相似,D ...

最新文章

  1. jfinal整合shiro回顾
  2. Day3--js--可恶之变量声明提升大法.。。
  3. 汇编:转移目的地址在内存中
  4. 组合数(Combinatorial_Number)
  5. Java锁之可重入锁和递归锁
  6. HDU4631Sad Love Story
  7. python排名上升_TIOBE:2019年7月全球编程语言排行 Python热度继续上升
  8. layui-简单辅助元素 - 页面元素
  9. bzoj 1637: [Usaco2007 Mar]Balanced Lineup【瞎搞】
  10. pytorch-minst手写字符识别实战
  11. CVPR等会议论文集检索下载与数据库资源使用
  12. JS 获取指定日期所在(周或月)第一天和最后一天
  13. IT项目经理岗位职责
  14. POJ 1035 拼写检查
  15. bmc linux 默认密码_系统下重置BMC密码方法
  16. pip安装报错:There was a problem confirming the ssl certificate
  17. Iterative混沌映射
  18. shell编程快速入门(一)
  19. Django-Templates模板语法(三)
  20. CreateProcessAsUser的用法

热门文章

  1. 科目二需要注意的点(笔记包含图片讲解)
  2. imazing显示无法连接服务器,为什么苹果手机连接不上iMazing
  3. Linux内存占用过高排查过程
  4. android获取全部ram和rom,ROM与RAM的那点事,超详细解说
  5. 华为服务器如何登录修改密码,服务器登录修改密码
  6. 线上宠物销售系统的设计与实现
  7. manjaro折腾手记
  8. [Kerberos基础]-- kdc集群主从搭建(kerberos相关)
  9. 中国电子学会2022年python六级考试真题大题 类与对象练习题
  10. 脚本自动化部署docker微服务,取代Jenkins