Dice Loss는 이미지 분할에서 사용되는 손실 함수로서, predicted mask와 ground turth mask가 얼마나 겹치는 지를 수학적으로 표현한 것이다.
원래는 생물학 분야에서 세포 분할의 유사도를 평가하기 위한 개념으로 사용되었지만(Dice Similarity Coefficient), 현재는 Computer vision 분야에서도 많이 사용된다.
Dice Coefficient (유사도 계수)
2진 분류를 기준으로 Dice 계수의 수식적 정의는 다음과 같다.
$$ Dice = \frac{2|A\cap{B}|}{|A| + |B|} $$
- $A$: predicted mask
- $B$: ground truth
- $|A \cap{B}|$: True positive
즉, 겹치는 정도를 0~1로 정규화한 값으로 1에 가까울 수록 완벽하게 예측한 것이다. 이렇게 계산된 Dice Coefficient를 사용해서 Loss를 구할 수 있다.
$$ \text{DiceLoss} = 1 - Dice $$
Soft Dice Loss
실제 Segmentation 같은 task에서는 2개 이상의 class가 존재한다. 따라서, 다수의 class가 있는 경우 모델의 출력은 확률의 형태를 가지므로 연속적인 형태로 일반화 해야한다. 이를 Soft Dice Loss라고 하며 수식은 다음과 같다.
$$ Dice = \frac{2\sum_{i}p_{i}g_{i}}{\sum_{i}p_{i} + \sum_{i}g_{i}} $$
- $p_{i}$: predicted probability (sigmoid or softmax 결과)
- $g_{i}$: ground truth (0 또는 1)
- $i$: $i$ 번째 pixel을 의미. (즉, 모든 픽셀에 대해서 계산)
위와 같이 모든 픽셀에 대해 각 class 마다 예측 확률과 실제 마스크 간의 겹침을 직접 계산해서 얻을 수 있다.

위의 예시에서, class 0에 대한 dice 값을 구해보자.
- $p = [0.9, 0.2, 0.1, 0.3]$
- $y = [1.0, 0.0, 0.0, 0.0]$
$$ Dice_{0} = \frac{2(0.9\times 1.0 + 0.2 \times 0.0 + 0.1 \times 0.0 + 0.3 \times 0.0}{1 + 1.5} = 0.72$$
위와 같은 방법으로 나머지 Dice score들을 구하면, $Dice_{1} \simeq 0.743$, $Dice_{2}=0.8$.
따라서 평균 Dice score는 $Dice_{mean} = \frac{Dice_{0} + Dice_{1} + Dice_{2}}{3} \simeq 0.754$.
즉, Dice Loss는 0.246이 된다.
Dice vs IoU
Dice와 비슷하게 정답과 예측의 겹치는 정도를 표현하는 metric으로 IoU(Intersection of Union)이 있다.
$$\text{IoU} = \frac{|A \cap B|}{|A \cup B|} $$
위와 같이 겹쳐진 영역(교집합)의 픽셀 수를 두 집합의 전체 영역(합집합)의 픽셀 수로 나눈 값으로 표현된다.
Dice와 비슷하게 0에서 1 사이의 값을 갖는다.
두 개념이 얼핏 비슷하기에, 헷갈릴 수 있지만 두 수식을 보면 의미가 다름을 알 수 있다.
먼저, 분모에서 Dice는 각각의 영역의 크기 합을 사용하고, IoU는 합집합을 사용한다.
반면, 분자는 두 개념 모두 합집합을 사용하지만 Dice는 이 값에 2배를 해준다는 점에서 차이가 있다.
이러한 점에서, Dice는 겹치는 영역에 조금 더 가중치를 두는 형태로 희소한 class의 겹침 정도에 더 민감하게 반응한다.
IoU는 segmentation 전반적인 정확도 측정 지표로, Dice는 희소 class에 대한 정확도 측정 지표로 사용되곤 한다.
