elevne's Study Note
Object Detection (IoU, mAP) 본문
Object Detection은 이미지에서 특정 물체의 부분을 검출해내는 것을 말한다.
Object Detection 모델을 사용하게 되면 결과값으로 6가지의 값이 나오게된다. x_min, x_max, y_min, y_max 값 4개가 우선 반환되는데, 이는 Object가 있는 Bounding Box의 범위를 알려주는 값들이다. 또, 그 Bounding Box 내에 속한 물체의 Class 값이 반환되고, 그 확신의 정도를 나타내는 Confidence 값이 반환된다.
참고로 Object Detection과 유사하게 Segmentation이라는 분야도 있는데, 이는 Bounding Box가 아닌 Pixel 단위로 Detection을 수행하는 것이다. 사진으로 그 둘을 비교하자면 아래와 같다.
Detection의 성능 평가 Metric으로는 기본적으로 Intersection over Union, IoU가 사용된다. 실제 Bounding Box와 예측한 Bounding Box가 겹쳐있는 정도를 0과 1사이의 값으로 나타내어 정확도처럼 표현한 값인 것이다.
또 mAP, mean Average Precision이라는 지표가 사용된다. 여기에서 Average Precision이란 단순히 Precision의 평균을 구한 것이 아니라 Precision, Recall이 둘 다 고려된 지표이다. 이를 계산하는 방법을 아래 예시로 한 번 살펴보겠다.
여러가지의 Class, 물체들로 이루어진 사진에서 Object Detection을 진행하는 상황에 있다고 가정한다. 아래와 같은 사진에서 다양한 물체를 인식해보는 것이다.
이미지에는 2 명의 사람, 12 마리의 개, 테디베어 1개, 1개의 트럭이 정답 레이블러 주어져 있다. 위 Output에서는 다음 물체들을 인식한 것을 확인할 수 있다.
AP 계산은 Class-wise 형태로 이루어진다. 우선 Dog class에 대한 AP 계산을 해보도록 하겠다.
여기서 우선 Detection-wise Precision과 Recall을 계산한다. 순서는 다음과 같다.
1. 위 테이블을 Confidence가 높은 순으로 정렬한다.
2. 누적 TP/FP 값을 표에 더해준다. (이전 행의 값을 현재 행의 값과 계속해서 더해주는 것)
3. Row-Wise로 Precision과 Recall을 계산한다.
여기서
Precision = Cumulative TP / (Cumulative TP + Cumulative FP),
Recall = Cumulative TP / Total Ground Truths 로 계산된다.
위 사진들에 대해 진행해보자면 아래 표와 같을 것이다.
이 테이블까지 작성이 끝났다면, Precision-Recall Graph를 그려줄 수 있다. 이 그래프를 그릴 때, 만약 동일한 Recall 값에 대해서 여러 개의 Precision 값이 대응된다면, 가장 높은 값을 제외하고 다른 값들은 제거하라고 한다. Plot을 Simplify하는데 도움이 되고, 결과에도 영향을 미친다고 한다. (아래 그래프에는 모든 점이 다 포함되어 있긴하다.)
그리고 나선 PASCAL VOC 11 Point Interpolation Method가 사용된다. 이 Method는 2007 PASCAL VOC Challenge에서 소개되었다고 한다. 여기서 Precision Value들은, 11개의 동일한 간격으로 떨어져있는 Recall Value(0, 0.1, 0.2 ~ ,1.0)에 Record 되어있다. Average Precision은 다음과 같이 계산된다.
Average Precision = 1/11 * Sum(11 point interpolated precision)
그래서 위 경우에 대해 최종적으로 그래프를 그리게되면 아래와 같은 모양이 나올 것이다.
이 그래프 밑의 면적을 구하게 되면 34.9%가 나오고, 이것이 Dog Class에 대한 AP 값이 되는 것이다.
그래서, 이와 똑같이 다른 Class들(위 경우에서는 트럭, 사람 등)에 대해서도 AP값을 구하게 될 것이다. 보든 Class에 대해 AP 값을 구하게 되면 mAP 값을 구할 수 있다.
Mean Average Precision(mAP)는 말 그대로 위 AP 값들의 평균 값이다. 위 값들을 전부 더하고 class의 갯수로 나누어주면 된다. 수식으로 보면 아래와 같다.
mAP = 1/n * sum(AP)
오늘은 Object Detection에서 성능평가 Metric으로 사용되는 IoU와 mAP에 대해 알아보았다. 다음 번에는 코드로 직접 실습을 진행해봐야겠다.
출처:
https://www.waytoliah.com/1491
https://learnopencv.com/mean-average-precision-map-object-detection-model-evaluation-metric/
'Machine Learning > CV' 카테고리의 다른 글
OpenCV 활용 (+ EasyOCR) (0) | 2022.11.15 |
---|---|
EAST & CRAFT (EasyOCR) (0) | 2022.11.13 |
Keras-OCR 사용해보기 (0) | 2022.10.29 |