728x90
반응형
본 포스팅은 Dice score에 대한 기본적인 내용을 정리 후 python에서 segmentation 성능 평가 사용되도록 contour dice score 및 bbox dice score 계산하는 코드를 구성하고자 한다.
Dice score coefficient (DSC)
Dice score는 segmentation 성능 평가를 할 때 주로 사용이 되며, 두 가지 배열 혹은 영역의 유사도를 정량적으로 파악할 수 있도록 해준다.
아래 그림과 같이 파란색 영역(X)과 빨간색 영역(Y)의 Dice score를 계산하고자 할 때, 수식은 아래와 같다.
분자에 두 영역의 교집합의 두배가 입력되며, 분모에는 각각의 영역의 합으로 구성된다.
Python 적용 (Binary, same coordinate)
아래 코드는 X와 Y의 Dice score를 리턴하는 함수이다.
X와 Y가 같은 크기 및 좌표일 때, 각 영역의 배열을 .view(-1)을 사용하여 flatten해준다. 이후 이 두 배열을 곱해주어 겹치는 부분이 아니면 0이 되도록 해서 교집합을 구해준다.
def Dice_score(X, Y):
smooth = 1e-6
X_flat = X.contiguous().view(-1)
Y_flat = Y.contiguous().view(-1)
intersection = (X_flat * Y_flat).sum()
return ((2. * intersection + smooth) / ((X_flat+Y_flat).sum() + smooth))
리턴에는 위 설명된 수식을 그대로 적용하여 구성된다.
728x90
반응형
'Python' 카테고리의 다른 글
[Python] try except 활용하여 오류 모아보기 (0) | 2023.02.08 |
---|---|
[Python] 3D 배열의 Dice score 코드 만들기 (segmentation 평가) (0) | 2023.01.09 |
[Python] upper, lower, isupper, islower - 문자열 대문자, 소문자 변경 및 확인하기 (0) | 2022.09.26 |
[Python] np.ceil, np.round, np.floor - 숫자 올림, 반올림, 버림 (0) | 2022.09.21 |
[Python] collection.Counter() - 숫자 혹은 문자 개수 세기 (0) | 2022.09.21 |
댓글