Related to: Deep Learning
DetEval은, 이미지 레벨에서 정답 박스가 여러개 존재하고, 예측한 박스가 여러개가 있을 경우, 박스끼리의 다중 매칭을 허용하여 점수를 주는 평가방법 중 하나 입니다.
평가가 이루어지는 방법은 다음과 같습니다.
**1) 모든 정답/예측박스들에 대해서 Area Recall, Area Precision을 미리 계산해냅니다.**여기서 Area Recall, Area Precision은 다음과 같습니다. Area Recall = 정답과 예측박스가 겹치는 영역 / 정답 박스의 영역Area Precision = 정답과 예측박스가 겹치는 영역 / 예측 박스의 영역
2) 모든 정답 박스와 예측 박스를 순회하면서, 매칭이 되었는지 판단하여 박스 레벨로 정답 여부를 측정합니다.
박스들이 매칭이 되는 조건은 박스들을 순회하면서, 위에서 계산한 Area Recall, Area Precision이 0 이상일 경우 매칭 여부를 판단하게 되며, 박스의 정답 여부는 Area Recall 0.8 이상, Area Precision 0.4 이상을 기준으로 하고 있습니다.
매칭이 되었는가 대한 조건은 크게 3가지 조건이 있습니다.
- one-to-one match: 정답 박스 1개와 예측 박스 1개가 매칭 && 기본조건 성립
- one-to-many match: 정답 박스 1개와 예측 박스 여러개가 매칭되는 경우
- many-to-one match: 정답 박스 여러개와 예측박스 1개가 매칭되는 경우
여기서, one-to-many match 경우에 한해서, 박스 recall / precision 에 0.8 로 penalty가 적용됩니다.
아래의 이미지를 통해 평가방법의 설명을 보충합니다.
그림에서 왼쪽과 같이 다음과 같은 정답박스가 존재하는 이미지에 대해서, 오른쪽과 같이 예측하였다고 가정합니다.
- 과정을 통하여, 모든 박스들 사이의 Area Recall, Area Precision을 계산해 놓습니다. 이해를 쉽게 하기 위해서, 왼쪽에 정답박스와 예측박스를 겹쳐서 그렸습니다.
G1과 P1은 one-to-one match가 성립되었고, Area Recall, Area Precision 모두 0.99로 threshold 이상이므로, 정답으로 책정됩니다.
G2, G3와 P2는 many-to-one match가 성립되었고, Area Recall 0.9(0.81+0.99)/2, Area Precision0.91(0.41+0.5) 로 threshold 이상으로 정답으로 책정되었습니다.
G4와 P3, P4는 one-to-many match가 성립되었고, Area Recall 0.88(0.46+0.42), Area Precision 0.96(1.0+0.92)/2 로 threshold 이상으로 정답으로 책정되었습니다.
따라서, 현재 이미지에서의 Recall, Precision, H-mean(F1 score)을 구해보면
Recall = ( 1(G1) + 1(G2) + 1(G3) + 0.8(G4) ) / 4(len(gt)) = 0.95,
Precision = ( 1(P1) + 1(P2) + 0.8(P3) + 0.8(P4) ) / 4(len(prediction)) = 0.9,
H-mean = 2 * 0.95 * 0.9 / (0.95 + 0.9) = 0.92
가 되어, 해당 이미지에 대해서 최종적으로 0.92점을 부여하게 됩니다.
3) 모든 이미지에 대하여 Recall, Precision을 구한 이후, 최종 F1-Score은 모든 이미지 레벨에서 측정 값의 평균으로 측정됩니다.
테스트 셋은 여러장의 이미지로 구성되어있는데요, 위의 예시에서처럼 모든 이미지들에 대해서 Recall, Precision, 점수를 구한 이후, 모든 이미지들에 대해서 해당 값을 평균내어 최종 점수를 구하게 됩니다.
예) image1, image2 두개의 테스트 이미지가 존재하고, 계산의 편의성을 위해서 image1은 위의 예시와 동일, image2는 정답/예측박스가 1개이고 맞았다고 가정하고 계산해보면
Final Recall = 1 + 1 + 1 + 0.8 + 1 / 5 = 0.96
Final Precision = 1 + 1 + 0.8 + 0.8 + 1 / 5 = 0.92
Final F1 = 2 * 0.96 * 0.92 / (0.96 + 0.92) = 0.94
(분모가 5인 이유: image1에서 정답/예측박스 4개, image2에서 정답/예측박스가 1개이므로)
해당 테스트 셋에서 최종 점수는 0.94 점이 되겠습니다.


