图像数据不平衡问题
图像数据不平衡:在进行图像分割时,二分类问题中,背景过大,前景过小;多分类问题中,某一类别的物体体积过小。在很多图像数据的时候都会遇到这个情况,尤其是在医学图像处理的时候,例如分割官腔轮廓、识别肿瘤、识别斑块等等。
图像数据不平衡会产生的问题:占据绝大多数的类别会支配模型的训练过程,导致模型只需要把占比大的类别分准损失就收敛了,占比小的类别反而分的很差,而我们很多时候需要分准的其实是占比小的类别。
这个问题的产生也和交叉熵损失函数有关。
交叉熵损失函数:通常进行图像分割的时候都会使用交叉熵损失函数,交叉熵的特点就是“平等”地看待每一个样本,无论什么类别权重都是一样的。所以当正负样本不均衡时,大量简单的负样本会占据主导地位,少量的难样本和正样本就会分不出来。
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∣+∣Y∣2∗∣X∩Y∣
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|} 1−Dice(X,Y)=1−∣X∣+∣Y∣2∗∣X∩Y∣
为什么能解决图像数据不平衡问题
进行图像二分类问题的时候,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也非常低,但实际上预测的并不对。