Dice系数与Jaccard系数关系

对于文章论文阅读(12)-优化医学图像分割的Dice 得分和Jaccard 指数: 理论与实践_peacefairy的博客-CSDN博客_jaccard和dice

与其在开篇提出的问题与结尾结论:

引出问题:一个损失函数对图像的分割质量有什么影响?

经过试验证明,指标损失函数的优化效果要优于逐像素的交叉熵损失函数,并且指标损失函数类Dice和Jaccard没有统计上的差别。

进一步地讨论与证明Dice系数与Jaccard系数关系,文章内容简单易懂,主要是证明两个问题:

1、Dice与Jaccard可相互转化,对于同一篇论文,使用Dice与Jaccard验证模型好坏是重复的,且可以通过Dice与Jaccard的关系验证论文数据是否造假。

2、同一图像,Dice >= Jaccard。

3、最后简单实现Dice与Jaccard的计算方法。

图像分割常用指标:Dice与Jaccard。

计算公式如下:

Dice = \frac{2\left | x\bigcap y \right |}{\left | x \right | + \left | y \right |}

Jaccard = \frac{\left | x \bigcap y \right |}{\left | x\bigcup y \right |} =\frac{\left | x\bigcap y \right |}{\left | x \right | + \left | y \right |-\left | x\bigcap y \right |}

其中 x,y分别为标签(GroundTruth)和预测(Predict)结果。

不难得出:

Dice = \frac{2Jaccard}{1+Jaccard}

Jaccard = \frac{Dice}{2-Dice}

此外,根据糖水不等式,不难看出,同一分割结果下的 Dice >= Jaccard,当且仅当分割结果为全对(1)和全错(0)的时候,等号成立。

对于分割结果,Dice系数和Jaccard系数越高,证明分割效果越好。

所以,对于Dice与Jaccard,反应分割效果是近似的。

下面是Dice系数与Jaccard系数的代码实现。主要思路是,使用numpy自带的库,分别计算label与predict的和,再使用np.bitwise_and计算label与predict的交集,最后计算Dice系数或Jaccard系数。(代码有限制,计算的系数只能为2分类问题,也就是单任务分割)

Dice代码段:

predict_score = np.sum(predict_num)
label_score = np.sum (label_num)
and_score = np.sum(np.bitwise_and(predict_num,label_num))
if predict_score+label_score == 0:
    return 1
dice_score = 2*and_score/(predict_score+label_score)
return dice_score

Jaccard代码段:

predict_score = np.sum(predict_num)
label_score = np.sum (label_num)
and_score = np.sum(np.bitwise_and(predict_num,label_num))
if predict_score+label_score == 0:
    return 1
jaccard_score = and_score/((predict_score+label_score)-and_score)
return jaccard_score

你可能感兴趣的:(机器学习,模式识别,深度学习,人工智能)