Dice score分割评价指标
介绍分割任务中常见的评价指标Dice coefficient score。
代码实现和注意事项。
介绍
Dice-Sørensen coefficient用于衡量两个样本相似性的统计量,最初旨在应用于离散数据。
其定义为:
$$
DSC = \frac{2|X \bigcap Y|}{|X| + |Y|}
$$
- $|X|$,$|Y|$两个集合的元素。
在图像分割任务中:
- X和Y:一个代表预测标签,一个代表真实
代码实现
- Python手动实现(By Claude)💦
1 | import numpy as np |
- 调用medpy中现有的dice计算👍
::: success
推荐使用这个方法
:::
1 | pip install medpy |
其具有几个优点:
- 充分的测试和优化
- 正确处理边缘情况
- 无需编写复杂的计算
如果是多分类的时候,可能需要计算不同类别的Dice分数,其实现方法为:
1 | from medpy import metric |
medpy中包含了很多便于处理医学图像的功能。
注意❗
CSDN博客中,有不少文章在手动实现Dice计算的时候,为了防止除以0发生,加入一个极小值smooth来计算。
这个极小值会两倍加在分子,一倍加入分母。
但是,我在实验中发现即使是再小的极小值,都会对分割分数有极大地影响,分割结果越是差,这个加入了极小值的计算方法得到的dice越高。
(如:pred全为0,但gt不为0的时候,dice不为0且有70左右。)
尚未查证具体影响的原因,但推测是因为这个极小值加在了图像整体上,float的计算无法忽视这种“距离”的接近,造成了错误的结果。
本博客中的手动实现dice在遇到0的时候采用单独判断,不会影响,可以放心使用。但最推荐的还是使用medpy的方法。
Dice score分割评价指标