IoU (Intersection over Union)와 Dice Score는 두 가지 다른 이미지 분할 성능 지표입니다. 두 지표 모두 정답 영역과 예측 영역 간의 유사성을 측정하지만, 계산 방식에 약간의 차이가 있습니다.
IoU (Intersection over Union):
IoU는 교집합(Intersection)을 합집합(Union)으로 나눈 값으로 계산됩니다. 즉, 두 영역이 얼마나 겹치는지를 나타내는 지표입니다. IoU의 값은 0(전혀 겹치지 않음)부터 1(완전히 일치)까지의 범위를 가집니다.
IoU = (예측 영역과 정답 영역의 교집합) / (예측 영역과 정답 영역의 합집합)
Dice Score (Dice Coefficient):
Dice Score는 2 * 교집합을 두 영역의 크기 합으로 나눈 값으로 계산됩니다. 이 지표는 불균형한 데이터셋에 대해 더 강인한 성능을 보이는 경향이 있습니다. Dice Score 역시 0(전혀 겹치지 않음)부터 1(완전히 일치)까지의 범위를 가집니다.
Dice Score = (2 * 예측 영역과 정답 영역의 교집합) / (예측 영역의 크기 + 정답 영역의 크기)
요약하면, IoU와 Dice Score는 두 영역 간의 유사성을 측정하는 지표이지만, 계산 방식에 차이가 있습니다. IoU는 교집합을 합집합으로 나눈 값이고, Dice Score는 2 * 교집합을 두 영역의 크기 합으로 나눈 값입니다.
# iou
# ioU : Intersection over Union
def iou_score(y_pred, y_true):
y_pred = y_pred.view(-1)
y_true = y_true.view(-1)
y_pred = (y_pred == 1).float()
y_true = (y_true == 1).float()
intersection = (y_pred * y_true).sum()
union = y_pred.sum() + y_true.sum() - intersection
iou = (intersection + 1e-7) / (union + 1e-7)
return iou.item()
# dice coefficient
def dice_coef(pred, target, smooth = 1e-5):
intersection = (pred * target).sum(axis=(1, 2))
union = pred.sum(axis=(1, 2)) + target.sum(axis=(1, 2))
# dice coefficient
dice = ((2.0 * intersection) + smooth) / (union + smooth)
return dice
def dice_loss(pred, target, smooth=1e-5):
# dice loss
dice = dice_coef(pred, target).mean()
dice_loss = 1.0 - dice
return dice_loss
'About AI (인공지능) > Computer Vision' 카테고리의 다른 글
Grid 와 Tile, Patch 의 차이 (0) | 2023.04.25 |
---|---|
[Object Detection] 용어 정리 (FPN, RPN, .... ) (2) | 2023.03.31 |
[딥러닝] Backbone Network 와 Head 에 대해서 | 개념 (0) | 2023.03.09 |
배율(magnification) (1) | 2023.03.08 |
CLAHE (1) | 2022.04.07 |