안넝
오늘은 Deep learning의 여러 분야에서의 evaluation Method를 정리해보려고 한다.
1. IoU (Intersection over Union)
IoU는 mAP와 더불어 object detection 분야에서 자주 사용되는 evatlutation method이다.
사실 IoU는 단어 그대로 groundtruth와 prediction의 합집합 중 교집합인 부분의 비율로 성능을 평가한다.
IoU는 다음과 같이 Numpy를 활용한다면 쉽게 계산할 수 있다.
intersection = np.logical_and(target, prediction)
union = np.logical_or(target, prediction)
iou_score = np.sum(intersection) / np.sum(union)
2. Pixel Accuracy
Pixel Accuracy는 전체 검출된 개체 중, TP (True Positive), TN (True Negative), FP (False Positive), FN (False Negative) 로 나누어 정확도를 판단한다. 이에 대한 내용은 표에서 확인할 수 있다.
하지만 이 성능지표는 이미지에서 클래스가 작을 때 가끔 misleading한 결과를 낼 수 있다.
왜냐면 해당 지표는 "클래스가 존재하지 않음"과 같이 Negative한 경우를 식별하는 쪽으로 편향되어있기 때문이다.
3. Precision-recall 곡선
3-1) Precision
Precision이란 정확도를 의미하며, 검출된 모든 Object 중 제대로 검출한 비율을 말하며, 아래와 같은 식으로 표현된다.
예를 들어 모델의 검출 결과가 총 100개인데, 그중 TP (True Positive)가 70개라면, 70/100 => 0.7인 것이다.
3-2) Recall
Recall은 검출률이라고 할 수 있으며, 모든 정답 중 검출된 정답의 비율을 말하며, 아래와 같은 식으로 표현된다.
예를 들어, 100개의 정답 중 70개만 찾아냈다면, (FP는 포함되지 않음) Recall 0.7인 것이다.
3-3) Precision-recall Graph (PR곡선)
일반적으로 Precision과 Recall은 반비례하는 관계를 가진다. 따라서 적절한 정확도와 검출률을 찾기 위해서는 성능 변화의 전체적인 흐름을 확인해야 하는데, 이를 확인하기 위한 대표적인 방법이 precision-recall graph를 이용하는 것이다.
PR 곡선도 위에 설명했던 방법들과 같이 알고리즘 성능 평가의 지표 중 하나로, Confidence score에 대한 threshold 값의 변화에 따라서 Precision과 Recall 값이 달라지는데 이를 그래프로 나타낸 것이 PR 곡선이다.
Confidence score란 검출된 object에 대해서 알고리즘이 얼마나 정확하다고 생각하는지 0~1 사이의 값으로 알려주는 값이다. 하지만 confidence score가 높다고 무조건 정확한 것은 아니다. 알고리즘이 그저 학습한 것에 따른 정확도를 나타내는 것이기 때문이다. 사용자는 보통 confidence score에 대해 threshold (임계치)를 설정하여 특정 값 이상이어야 Positive인 것으로 인식하게 만든다. 예를 들어 threshold 값이 0.7이라면 0 부터 0.7 이하의 모든 confidence score는 Negative로 만드는 것이다. 따라서 confidence score에 대한 threshold 값 변화에 따라서 precision과 recall의 값도 달라지게 된다. 이를 통해서 PR Graph에서는 x축의 recall 값, y축의 precision 값을 통해 recall 값의 변화에 따른 precision 값을 확인할 수 있다.
4. Average Precision (AP), mean Average Precision (mAP)
PR 그래프는 알고리즘의 성능을 전반적으로 판단하기에는 괜찮지만, 두 개의 알고리즘을 정량적으로 비교하기에는 부족한 면이 있다. 이럴 때 Average Precision을 사용하는데, AP는 인식 알고리즘의 성능을 하나의 값으로 표현한 것으로써 PR-Graph의 선 아래쪽 면적으로 계산된다. AP가 높을 수록 해당 알고리즘이 우수하다는 의미이며, CV 분야의 Image Classification, Object Detection 쪽에서 가장 많이 사용되는 성능 평가 지표 중 하나이다. 물체 클래스가 여러 개인 경우 각 클래스당 AP를 구한 다음 평균을 구해줌으로써 성능을 평가하게 되는데, 이것을 mean Average Precision 이라고 한다 !
끝
'공부 > PyTorch' 카테고리의 다른 글
[PyTorch] PyTorch 2.0의 핵심, torch.compile( ) (0) | 2023.08.08 |
---|---|
[PyTorch] PyTorch 2.0 text classification 구현하기 with cuda 11.8 (2) (1) | 2023.05.22 |
[PyTorch] PyTorch 2.0 text classification 구현하기 with cuda 11.8 (1) (0) | 2023.05.22 |
[PyTorch] PyTorch 1.13 -> 2.0 주요 변경된 점 (1) (0) | 2023.05.19 |
[Conda] 0. 가상 환경 세팅 (0) | 2023.05.08 |