우리가 일반적으로 파워포인트(Powerpoint)를 이용해 PPT를 만들 때는 "글머리 기호"가 굉장히 많이 사용된다. 다만 줄바꿈을 했을 때 글머리 기호를 추가하지 않고, 단순히 들여쓰기만 맞추려고 한다면 Shift + Enter를 입력하면 된다. 실제로 "Shift + Enter"를 사용한 예시는 다음과 같다.
일반적으로 시맨틱 분할(semantic segmentation) 분야는 한 장의 이미지 내에 있는 각 물체(object)를 의미 있는(semantic) 단위로 분할(segmentation)하는 작업을 의미한다. 분할(segmentation) 문제에서는 각 픽셀마다 하나의 클래스로 분류한다. 예를 들어 다음과 같이 자전거를 타는 선수들이 있는 한 장의 이미지가 주어지면, 어디에 사람(person), 자전거(bicycle), 배경(background)이 있는지 픽셀 단위로 클래스를 부여한다.
다만, 자신이 만든 semantic segmentation 모델이 얼마나 정확한 예측 결과를 보였는지 확인하려면, 평가 지표(evaluation metric)가 필요하다. 이 분야에서의 대표적인 평가 지표로는 IoU, Dice score와 같은 것들이 있다. 이러한 지표들은 "두 집합이 얼마나 유사한지" 평가하기 위한 방법으로 이해할 수 있는데, 사실 segmentation 결과는 "픽셀들의 집합"으로 이해할 수 있다는 점을 기억하자. 그래서 예측 이미지와 정답 이미지가 얼마나 차이나는지 계산할 수 있다.
1. IoU score
IoU (Intersection over Union) 점수는 흔히 자카드 인덱스(Jaccard index)라고도 한다. IoU는 말 그대로 "교집합 / 합집합"이다. 그냥 교집합과 합집합을 계산한 뒤에, 그 비율을 구하면 된다. 그러면 두 집합이 얼마나 겹치는지 알 수 있다. 아래 그림을 참고하면 이해가 쉬울 것이다.
https://en.wikipedia.org/wiki/Jaccard_index
실제로 IoU 혹은 Jaccard index를 계산하기 위한 PyTorch 소스 코드 예시는 다음과 같다. PyTorch는 [Batch Size, Channel, Height, Width] 순서대로 데이터가 구성되기 때문에, 아래 코드는 한 장의 이미지가 있을 때 각 클래스별로 [높이(height), 너비(width)]에 대하여 IoU를 계산하는 것으로 이해하면 쉽다.
이 지표도 실제 semantic segmentation 문제에서 많이 사용되는 평가 지표다. 직관적으로 "한 집합의 어떤 점에서 다른 집합까지 도달하기 위한 거리의 최댓값"으로 이해할 수 있다. 구체적인 공식은 다음과 같은데, 그냥 단순하게 하한(infimum)을 최소(min)로, 상한(supremum)을 최대(max)로 이해하면 쉽다.
https://en.wikipedia.org/wiki/Hausdorff_distance
아래 그림을 보면 더욱 이해가 쉽다. 아래 그림에서는 두 개의 "거리"가 계산되어 있는데, 두 개 중에서 더 큰 "거리" 값이 최종적인 Hausdorff 거리가 된다.
https://en.wikipedia.org/wiki/Hausdorff_distance
Hausdorff distance는 아웃라이어(outlier)에 그 값이 결정되는 경향이 있다는 단점이 있다. 예를 들어 집합 X에서 딱 하나의 데이터(point)가 집합 Y로부터 굉장히 멀리 떨어져 있다면, 해당 단 하나의 데이터로 인해서 매우 높은 Hausdorff distance가 나올 수 있다.