티스토리 뷰

반응형

개요

Dice score는 IoU와 같이 두 개의 영역 A, B가 얼마나 겹쳐지는 지를 나타내는 지표이다. Segmentation과 같은 기술을 사용할 때, GT와 예측된 영역 Pred를 비교할 때 사용할 수 있다.

Dice Coefficient(Score)

공식

아래와 같이 A와 B의 겹쳐지는 정도로 계산할 수 있다. Dice 공식이 IoU와 다른 점은 분모에 교집합 부분(TP)이 한 번 더 더해지고, 분자에도 이와 마찬가지로 교집합(TP)이 한 번 더 더해진다.

IoU=ABABIoU=\dfrac{A\cap B}{A\cup B}

Dice=2ABA+B=2TP(TP+FP)+(TP+FN)Dice = \dfrac{2*|A\cap B|}{|A| + |B|}= \dfrac{2*TP}{(TP+FP)+(TP+FN)}

위 공식을 그림으로 나타내면 아래와 같다. 분모에는 두 개의 각 영역, 분자에는 겹쳐지는 영역의 2배이다.

Dice Loss

일반적으로 딥러닝에서 loss는 감소하도록 학습한다. 위의 공식 dice score는 값이 클수록 좋은 것이기 때문에 일반적으로 음의 값을 취해 아래와 같은 공식으로 loss function을 구현한다.

두 영역이 같아질수록 dice score는 1에 가까워지고 dice loss는 0에 가까워지므로 학습이 잘 된다고 할 수 있다.

dice loss=1dice scoredice\ loss=1-dice\ score

Python(Pytorch) 코드

class DiceLoss(nn.Module):
    def __init__(self):
        super(DiceLoss, self).__init__()

    def forward(self, inputs, targets, smooth=1):
        
        inputs = F.sigmoid(inputs) # sigmoid를 통과한 출력이면 주석처리
        
        inputs = inputs.view(-1)
        targets = targets.view(-1)
        
        intersection = (inputs * targets).sum()                            
        dice = (2.*intersection + smooth) / (inputs.sum() + targets.sum() + smooth)  
        
        return 1 - dice 
				# return -torch.log(dice)

참고자료

[1] https://towardsdatascience.com/metrics-to-evaluate-your-semantic-segmentation-model-6bcb99639aa2


Uploaded by N2T

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday