医学图像分割之 Dice Loss

在很多关于医学图像分割的竞赛、论文和项目中,发现 Dice 系数 (Dice coefficient) 损失函数出现的频率较多,自己也存在关于分割中 Dice Loss 和交叉熵损失函数 (cross-entropy loss) 的一些疑问,这里简单整理.

1. Dice coefficient 定义

Dice 系数 - 维基百科

Dice 系数, 根据 Lee Raymond Dice[1] 命名,是一种集合相似度度量函数,通常用于计算两个样本的相似度 (值范围为 [0, 1]):

$$ s = \frac{2 |X \bigcap Y|}{|X| + |Y|} $$

$|X⋂Y| - X$ 和 $Y$ 之间的交集;$|X|$ 和 $|Y|$ 分别表示 $X$ 和 $Y$ 的元素个数. 其中,分子中的系数 $2$,是因为分母存在重复计算 $X$ 和 $Y$ 之间的共同元素的原因.

语义分割问题而言,X - GT 分割图像, Y - Pred 分割图像.

Dice 系数差异函数 (Dice loss):

$$ d = 1 - \frac{2 |X \bigcap Y|}{|X| + |Y|} $$

1.1. Dice 系数计算示例

医学图像分割常用的损失函数

预测的分割图的 dice 系数计算,首先将 $|X⋂Y|$ 近似为预测图与 GT 分割图之间的点乘,并将点乘的元素结果相加:

[1] - Pred 预测分割图与 GT 分割图的点乘:

$$ |X \bigcap Y| = \begin{bmatrix} 0.01 & 0.03 & 0.02 & 0.02 \\ 0.05 & 0.12 & 0.09 & 0.07 \\ 0.89 & 0.85 & 0.88 & 0.91 \\ 0.99 & 0.97 & 0.95 & 0.97 \end{bmatrix} * \begin{bmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \end{bmatrix} $$

[2] - 逐元素相乘的结果元素的相加和:

$$ |X \bigcap Y| = \begin{bmatrix} 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0.89 & 0.85 & 0.88 & 0.91 \\ 0.99 & 0.97 & 0.95 & 0.97 \end{bmatrix} \rightarrow 7.41 (逐元素相加和) $$

对于二分类问题,GT 分割图是只有 $0, 1$ 两个值的,因此 $|X⋂Y|$ 可以有效的将在 Pred 分割图中未在 GT 分割图中激活的所有像素清零. 对于激活的像素,主要是惩罚低置信度的预测,较高值会得到更好的 Dice 系数.

关于 $|X|$ 和 $|Y|$ 的量化计算,可采用直接简单的元素相加;也有采用取元素平方求和的做法:

$$ |X| = \begin{bmatrix} 0.01 & 0.03 & 0.02 & 0.02 \\ 0.05 & 0.12 & 0.09 & 0.07 \\ 0.89 & 0.85 & 0.88 & 0.91 \\ 0.99 & 0.97 & 0.95 & 0.97 \end{bmatrix} ^{2(可选)} \rightarrow 7.82 (逐元素相加和) $$