函数Segmentation loss odyssey"/>
【论文阅读】图像分割损失函数Segmentation loss odyssey
本文参考文献:Ma, J. (2020). Segmentation loss odyssey. arXiv preprint arXiv:2005.13449.
其它参考网址
文中提到的损失函数的pytorch实现
文章目录
- 1.基于分布的损失函数
- 1.1 交叉熵(CE)
- 1.2 加权交叉熵(WCE)
- 1.3 TopKloss
- 1.4 Focal loss
- 1.5 Distance map penalized cross entropy loss (DPCE)
- 2. 基于区域的损失函数
- 2.1 Sensitivity-specificity loss
- 2.2 Dice loss
- 2.3 IoU loss
- 2.4 Tversky loss
- 2.5 Generalized Dice loss
- 2.6 Focal Tversky loss
- 2.7 Asymmetric similarity loss
- 2.8 Penalty loss
- 3. Boundary-based Loss
- 3.1 Boundary (BD) loss
- 3.2 Hausdorff Distance (HD) loss
- 3.3 Dice loss, BD loss 和 HD loss之间的联系
- 4. 混合损失 Compound loss
- 4.1 Combo loss
- 4.2 Exponential Logarithmic loss (ELL)
- 5. 关系与建议
- 5.1 损失函数之间的关系
- 5.2 选择损失函数的建议
1.基于分布的损失函数
基于分布的损失函数旨在最小化两个分布之间的差异。 此类别中最基本的功能是交叉熵。 所有其他函数都可以看做是交叉熵的推演。
1.1 交叉熵(CE)
交叉熵(CE)来自Kullback-Leibler(KL)散度,该散度是两个分布之间差异的度量。最小化KL差异等效于最小化CE。
- g i c g_{i}^{c} gic是一个二分类判别器,表示第 i i i个像素是否属于第 c c c类;
- s i c s_{i}^{c} sic表示第 i i i个像素是否属于第 c c c类对应的预测概率;
1.2 加权交叉熵(WCE)
- w c w_{c} wc表示每个类别的权重,通常与类别频率成反比,因此可以惩罚占大多数的类别;
- g i c g_{i}^{c} gic是一个二分类判别器,表示第 i i i个像素是否属于第 c c c类;
- s i c s_{i}^{c} sic表示第 i i i个像素是否属于第 c c c类对应的预测概率;
1.3 TopKloss
TopK损失旨在迫使网络在训练期间专注于难的样本。
简单的像素,即损失值低于t的像素,由于它们容易被当前模型分类而被丢弃。
- t ∈ { 0 , 1 } t \in \{0,1\} t∈{0,1}为阈值
- l { . . . } l \{...\} l{...}是一个二分类判别函数
- s i c s_{i}^{c} sic表示第 i i i个像素是否属于第 c c c类对应的预测概率;
1.4 Focal loss
Focal loss 让标准CE适应于处理极端的前景-背景类别不平衡问题,减少了分配给简单分类样本的损失。
当为简单样本时:
- s i c s_i^c sic接近1,这样系数 ( 1 − s i c ) γ (1-s_i^c)^\gamma (1−sic)γ越小,即简单样本的影响越小。
- γ \gamma γ取得越大,简单样本所占比越小。反过来说,即困难样本所占的比重越大,损失函数更注重于困难样本上,也相当于一种注意力机制。
- g i c g_{i}^{c} gic是一个二分类判别器,表示第 i i i个像素是否属于第 c c c类;
- s i c s_{i}^{c} sic表示第 i i i个像素是否属于第 c c c类对应的预测概率;
1.5 Distance map penalized cross entropy loss (DPCE)
距离图是惩罚的交叉熵损失(DPCE),权重是通过ground truth做距离变换而来。该距离图是指和ground truth masks的距离,距离越远则表示越难分割,则权重变大。 它旨在引导网络将注意力集中在难以分割的边界区域。
- D是距离罚分项,D是通过计算真值的距离变换然后将其还原而生成的。
- ◦ 是Hadamard乘积。
- g i c g_{i}^{c} gic是一个二分类判别器,表示第 i i i个像素是否属于第 c c c类;
- s i c s_{i}^{c} sic表示第 i i i个像素是否属于第 c c c类对应的预测概率;
2. 基于区域的损失函数
基于区域的损失函数目标是最小化真值G和预测分割S之间的不匹配或最大化重叠区域。关键损失函数是Dice Loss。
2.1 Sensitivity-specificity loss
Sensitivity-specificity loss通过对特异性较高者加权来解决不平衡问题。
- 参数w控制灵敏度(第一项)和灵敏度(第二项)之间的权衡。
- g i c g_{i}^{c} gic是一个二分类判别器,表示第 i i i个像素是否属于第 c c c类;
- s i c s_{i}^{c} sic表示第 i i i个像素是否属于第 c c c类对应的预测概率;
2.2 Dice loss
Dice loss可以直接优化Dice系数,这是最常用的分割评价指标。与加权交叉熵不同,它不需要对不平衡分割任务进行类重加权。Dice的metric为两者相乘比上两者的平方和,越高表明越好,因此loss就在前面加上1-,这样就可以用min方法,符合loss越低越好。
Dice Loss为何在segmentation任务中不常用?查阅资料后发现dice loss不利于反向传播,且容易造成训练时的参数振荡,不利于收敛。
- g i c g_{i}^{c} gic是一个二分类判别器,表示第 i i i个像素是否属于第 c c c类;
- s i c s_{i}^{c} sic表示第 i i i个像素是否属于第 c c c类对应的预测概率;
2.3 IoU loss
iou loss思路也和dice loss一样,也是直接用来衡量iou metric,因为iou表示的是两者的交集比上两者的并集,即减号后面部分,为了符合loss越低越好,前面加1-。
- g i c g_{i}^{c} gic是一个二分类判别器,表示第 i i i个像素是否属于第 c c c类;
- s i c s_{i}^{c} sic表示第 i i i个像素是否属于第 c c c类对应的预测概率;
2.4 Tversky loss
为了在精确性和召回率之间取得更好的平衡,Tversky loss重塑了Dice Loss,并强调了假阴性分类任务。
- α和β是控制假阴性(分母的中间项)和假阳性(分母最后一项)之间平衡的超参数。
2.5 Generalized Dice loss
Generalized Dice loss是Dice loss的多类扩展,其中每个类别的权重与标签频率成反比
- w c = 1 / ( ∑ g i c ) 2 w_{c} = 1/(\sum g_i^c)^2 wc=1/(∑gic)2为不同的标签集属性提供不变性。
2.6 Focal Tversky loss
Focal Tversky loss在Tversky loss基础上,直接加系数,用来集中到困难类上,类似于focal loss的思想。
- γ 在区间 [1, 3]变化
2.7 Asymmetric similarity loss
Asymmetric similarity loss引入了一个加权参数β来更好地调整误报(false positive)和漏报(false negative)的权重。这也是α+β=1时Tversky损失的特例。
2.8 Penalty loss
Penalty loss惩罚generalized Dice loss LGD中的误报(false positive)和漏报(false negative)。
- k是一个非负惩罚项;当k=0, L p G D L_{pGD} LpGD等价于generalized Dice loss;当k>0时, L p G D L_{pGD} LpGD对FP和FN进行特别的权重惩罚;
3. Boundary-based Loss
基于边界的损失函数是一种新的损失函数,其目标是使真实值与预测分割之间的距离最小。
3.1 Boundary (BD) loss
为了以可微的方式计算距离 D i s t ( ∂ G , ∂ S ) Dist(\partial G, \partial S) Dist(∂G,∂S),边界损失使用边界上的积分而不是区域上的不平衡积分来减轻高度不平衡分割的困难。
- ∆ M = ( S / G ) ⋃ ( G / S ) ∆M = (S/G) \bigcup (G/S) ∆M=(S/G)⋃(G/S)是真值G和分割S之间的不匹配部分;
- D G ( p ) D_{G}(p) DG(p)是ground truth的距离图;
- s ( p ) s(p) s(p) and g ( p ) g(p) g(p) 是二值指示函数;
- ϕ G \phi G ϕG 是边界的水平集表示: ϕ G = − D G ( p ) \phi G = - D_{G}(p) ϕG=−DG(p) if q ∈ G q \in G q∈G,否则, ϕ G = D G ( p ) \phi G = D_{G}(p) ϕG=DG(p)
然后用网络softmax概率输出 s θ ( p ) s_{\theta}(p) sθ(p)代替 s ( p ) s(p) s(p),形成可训练函数。最后一项被省略,因为它与网络参数无关。最后,我们得到以下边界损失函数:
3.2 Hausdorff Distance (HD) loss
由于直接将HD直接最小化是很棘手的,并且可能导致不稳定的训练,Karimi等人证明它可以通过ground truth和预测分割的距离变换来近似。 此外,可以使用以下HD loss来训练网络。
HD损失是对Hausdorff距离的估计,而不是精确的Hausdorff距离。
- d G d_{G} dG和 d S d_{S} dS是ground truth和分割的距离变换。
3.3 Dice loss, BD loss 和 HD loss之间的联系
为了便于说明,我们将重点放在二进制分割上。三个损失函数可以重写为以下公式:
可以发现,这三种损失函数都是以最小化失配区域 ∆ M ∆M ∆M为目标。它们之间的关键区别在于加权方法。对于Dice Loss,通过分割中前景像素数与真值像素数之和来加权分割。在BD损失中,它是由真值的距离变换图来加权的。HD loss同时利用真值和预测分割图的距离变换图进行加权。
4. 混合损失 Compound loss
4.1 Combo loss
Combo loss是直接的weighted CE和Dice loss的结合,用超参数 α \alpha α和 1 − α 1- \alpha 1−α结合。
4.2 Exponential Logarithmic loss (ELL)
Wong等人提出对Dice loss和交叉熵损失进行指数和对数变换。这样,网络就可以从本质上更加关注预测不太准确的结构。
其中,
5. 关系与建议
5.1 损失函数之间的关系
现有的损失函数之间有很强的联系,如下图所示。大多数基于分布和基于区域的损失函数分别是交叉熵和Dice损失的变体。基于边界的损失是通过最小化两个边界之间的距离来实现的,但是我们展示了与骰子损失的一些相似之处,因为两者都是用基于区域的方法计算的。复合损失是不同类型损失函数的组合。
5.2 选择损失函数的建议
据我们所知,还没有一个全面的经验比较所有提到的损失函数。因此,很难确定最佳损失函数,然而,我们可以从现有文献中获得一些见解。轻微的不平衡问题可以通过Dice损失或广义Dice损失得到很好的处理。高度不平衡的分割任务要困难得多,并且需要更健壮的损失函数。Wong等人表明,指数对数损失函数比骰子损失和交叉熵在具有20个标记的大脑分割任务中具有更好的性能。此外,Taghanak等人和Isensee等人都强调,在许多分割任务中,骰子损失和交叉熵的总和比单独使用它们表现得更好。最近,Kervadec等人证明了将边界损失与广义骰子损失相结合可以解决高度不平衡的分割任务。
因此,对于这样一个问题:医学图像分割任务应该选择哪种损失函数?答案是,总的来说,使用复合损失函数是一个更好的选择。
更多推荐
【论文阅读】图像分割损失函数Segmentation loss odyssey
发布评论