深度学习| DiceLoss解决图像数据不平衡问题

图像数据不平衡问题

图像数据不平衡:在进行图像分割时,二分类问题中,背景过大,前景过小;多分类问题中,某一类别的物体体积过小。在很多图像数据的时候都会遇到这个情况,尤其是在医学图像处理的时候,例如分割官腔轮廓、识别肿瘤、识别斑块等等。

图像数据不平衡会产生的问题:占据绝大多数的类别会支配模型的训练过程,导致模型只需要把占比大的类别分准损失就收敛了,占比小的类别反而分的很差,而我们很多时候需要分准的其实是占比小的类别。

这个问题的产生也和交叉熵损失函数有关。

交叉熵损失函数:通常进行图像分割的时候都会使用交叉熵损失函数,交叉熵的特点就是“平等”地看待每一个样本,无论什么类别权重都是一样的。所以当正负样本不均衡时,大量简单的负样本会占据主导地位,少量的难样本和正样本就会分不出来。

Dice Loss

公式

之前在介绍深度学习指标的时候,提到过Dice。

Dice可以计算集合的相似程度,取值范围在[0,1],公式如下所示:
D i c e ( X , Y ) = 2 ∗ ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ Dice(X,Y)=\frac{2*|X\cap Y|}{|X|+|Y|} Dice(X,Y)=X+Y2XY

Dice Loss表达式:
1 − D i c e ( X , Y ) = 1 − 2 ∗ ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ 1-Dice(X,Y)=1-\frac{2*|X\cap Y|}{|X|+|Y|} 1Dice(X,Y)=1X+Y2XY

为什么能解决图像数据不平衡问题

进行图像二分类问题的时候,X看作是Label(标签)像素点值集合,Y看作是Prediction(预测)像素点值集合,将前景真实值设为1,背景真实值设为0。这样在计算Dice的时候,求X和Y交集和并集就会把真实值为0的背景过滤掉,相当于做了个mask(掩码)操作,从而使得训练更关注我们要前景。

在这里插入图片描述

使用注意

在实际使用的时候,损失函数并不会单纯使用Dice Loss,通常都会和其他Loss结合起来用,会给其他Loss和Dice Loss分别上不同的权重作为损失函数。

为什么不只简单Dice Loss:在训练模型的时候,我们通常都是要把模型训练到损失收敛才停下。而Dice Loss本身并不稳定,Dice Loss是mask了背景的,在前景目标很小的情况下,一旦有少部分分类错误,就会导致Dice Loss产生严重的震荡。而且背景预测不正确,但是前景都预测涵盖了,会导致Loss也非常低,但实际上预测的并不对。

相关推荐

  1. 深度学习| Pytorch实现DiseLoss代码

    2024-04-02 03:28:01       17 阅读
  2. 关于深度学习图像数据集的主要问题和考虑事项

    2024-04-02 03:28:01       13 阅读
  3. 快速解决关于Quartus打图像文件问题

    2024-04-02 03:28:01       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-02 03:28:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-02 03:28:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-02 03:28:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-02 03:28:01       20 阅读

热门阅读

  1. 阿里巴巴实习面经

    2024-04-02 03:28:01       21 阅读
  2. 竞赛常考的知识点大总结(二)基础算法

    2024-04-02 03:28:01       21 阅读
  3. vue3中computed详解

    2024-04-02 03:28:01       17 阅读
  4. vue——computed和methods的区别

    2024-04-02 03:28:01       15 阅读
  5. Vue 使用 array.flatMap()例子

    2024-04-02 03:28:01       15 阅读
  6. 远程过程调用-buttonrpc源码解析6-函数调用

    2024-04-02 03:28:01       16 阅读
  7. vue Props

    2024-04-02 03:28:01       15 阅读
  8. 【题解 | 01背包】分割等和子集

    2024-04-02 03:28:01       16 阅读
  9. nginx怎么配置https访问

    2024-04-02 03:28:01       15 阅读
  10. [lesson01]学习C++的意义

    2024-04-02 03:28:01       17 阅读
  11. Pytorch实用教程: torch.tensor()的用法

    2024-04-02 03:28:01       15 阅读
  12. js的date对象有什么用

    2024-04-02 03:28:01       14 阅读
  13. 【开发总结】electron浏览器打开踩坑

    2024-04-02 03:28:01       17 阅读