DetEval이란?
DetEval(Detection Evaluation)은 OCR(Optical Character Recognition)에서 문자 영역 검출 성능을 평가하기 위한 대표적인 메트릭으로, 이는 객체 검출(Object Detection)에서 IoU(Intersection over Union)를 기반으로 성능을 측정하는 것과 유사하지만, OCR 특화 기준을 적용한다는 점이 특징.
DetEval에서는 검출된 영역과 GT를 IoU 기준이 아니라, 영역 기반 Recall과 Precision을 활용한 매칭 방식을 사용
- Recall 기반 매칭: GT 박스 내에서 검출된 박스의 영역이 일정 비율 이상 포함되면 TP(참양성) 으로 간주
- Precision 기반 매칭: 검출된 박스가 GT와 겹치는 비율이 일정 기준을 넘으면 TP(참양성) 으로 인정
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개와 예측 박스 여러개가 매칭되는 경우. 이 조건에서는 박스 recall / precision 에 0.8 로 penalty가 적용
- many-to-one match: 정답 박스 여러개와 예측박스 1개가 매칭되는 경우
왼쪽과 같이 다음과 같은 정답박스가 존재하는 이미지에 대해서, 오른쪽과 같이 예측하였다고 가정
1번 과정을 통하여, 모든 박스들 사이의 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.81+0.99)/2 = 0.9, Area Precision = (0.41+0.5) = 0.91 로 threshold 이상으로 정답으로 책정
- G4와 P3, P4는 one-to-many match가 성립되었고, Area Recall = (0.46+0.42) = 0.88, Area Precision = (1.0+0.92)/2 = 0.96 로 threshold 이상으로 정답으로 책정되
- 현재 이미지에서의 Recall, Precision, 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
- F1-Score = 2 × 0.95 × 0.9 / (0.95 + 0.9) = 0.92
- 모든 이미지에 대하여 Recall, Precision F1-Score을 구한 후, 해당 값을 모든 정답/예측박스에 대해 평균내어 최종 점수를 계산.
- 예를 들어, image1, image2 두 개의 테스트 이미지가 존재하고, 계산의 편의성을 위해서 image1은 위의 예시와 동일, image2는 정답/예측박스가 1개이고 맞았다면, 해당 테스트 셋에서 최종 점수는 0.94 점
- 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-Score = 2 × 0.96 × 0.92 / (0.96 + 0.92) = 0.94
- 이 때, 분모가 5인 이유는 image1에서 정답/예측박스 4개, image2에서 정답/예측박스가 1개이기 때문임