오늘은 Object Detection에 관한 paper을 볼때마다 mAP가 나오는데, 도대체 이것이 어떤 역할을 하는지 알아보도록 한다. 처음에 아무것도 모르고 2-stage인 mask RCNN paper을 보다가 모르는게 너무 많아가지고 ㅜㅜ... 1-stage 방식인 YOLO를 공부하다가 mAP관련 내용이 나온다. 이를 알기 위해선 IoU(Intersection Over Union)에 대해서도 잠깐 알아야 한다. 시작해보자!! o( ̄▽ ̄)ブ
우선 아무것도 모르는 초보자 대상으로 이해를 위해 설명한다면, IOU는 교집합과 합집합으로 이루어져 있는 값이다. 이를 식으로 본다면 아래의 그림과 같다.
객체 검출에서는 바운딩 박스를 얼마나 잘 예측했는지 IoU 지표를 통해 측정한다. 지금 내가 공부하고 있는 이미지 분할(Image segmentation)문제에서도 사용된다.
저 수식만 떡하니 보면 당연히 이해가 안된다. anchor는 뭐고;; grount-truth box는 뭐지?;;라고 생각할 것이다. 이를 쉽게 그림으로 표현해보자.
우선 Anchor을 하나의 box라고 생각하자. 두개의 박스를 교차하여 두면 2번째 단계처럼 될 것이다. 이 부분에서 노란색 부분을 anchor와 ground-truth box가 만나는 합집합이라 생각하자. 그리고 3번째 단계로 넘어가자 초록색 박스가 보이는가? 이 초록색 박스는 두 box가 겹쳐진 부분인데, 이를 anchor와 ground-truth box가 교집합된 부분이라 생각하면 된다.
이때 사용되는 몇 가지 기본 개념이 있다.
예측된 결과가 얼마나 정확한지를 나타내는 지표이다. 즉 검출된 것들 중에서 정답을 맞춘 것들의 비율이 어느정도 인지를 알 수 있기에 검출 결과가 얼마나 정확한지를 알 수 있다.
재현율은 Grount truth 중에서 얼마나 정답을 맞추었는지를 나타낸다. 즉 검출되어야 할 객체들 중에서 제대로 검출된 것의 비율을 뜻한다.
--->>> 정밀도와 재현율은 반비례 관계를 갖는다!
이해하지 못해도 괜찮다. 아직은 처음이니깐 우선 Iou는 집합으로 이루어져있다는 것만 알아도 큰 산을 넘어간 것! 어떤 Object Detection을 공부하더라도 이 부분에 대해 반복적으로 나올테니 차근차근 알아갈 것이다.
정밀도와 재현율 두가지를 고려하여 정확도를 평가하는 것이 좋으므로 AP(Average Precision)의 개념이 나온 것이다.
PR곡선을 confidence level에 대한 threshold 값의 변화에 의한 물체 검출기의 성능을 평가하는 방법이다. 여기서 confidence level이란, 검출한 것에 대해 알고리즘이 얼마나 확신이 있는지 알려주는 값이다. 이 confidence level에 threshold값을 부여하여 threshold값을 넘지 않는다면 검출하지 않도록 설계할 수 있다. 예를 들어서 이해를 해보자.
위의 그림은 15개 object를 detection한 결과이다. 10개 중 7개가 제대로 검출되었고 3개는 잘못 검출되었다.
Precision을 구해보자.
-> 제대로 검출된 객체 / 검출된 객체 수 = 7 / 10 = 0.7이 된다.
Recall을 구해보자.
-> 제대로 검출된 객체 / 검출된 모든 객체 수 = 7 / 15 = 0.47이 된다.
표를 자세히 보면 confidences가 13%인데도 출력하는데, 이는 Threshold를 조절하여 detection을 제한할 수 있다는 것이다. Threshold를 70%로 적용하였다면, 5개만 detection되는 것을 알 수 있다. 직접 Threshold를 제한해보자.
Threshold를 95% -> 91% -> 85% -> ... 등으로 진행하면 그에 맞는 Precision과 Recall이 발생한다. 이 값들을 그래프로 나타내면 PR곡선으로 나타낼 수 있다.
하지만 하나의 숫자로 성능을 평가한다면 좀더 직관적이고 이해하기 쉬울 것이다. 이를 위해 AP(Average Precision)가 나오게 된다.
AP는 쉽게 말해 정확도이며, CNN을 평가할 때 사용하는 지표라고 보면 된다. PR 곡선에서 AP를 구하기 위해선 조금 변화를 줘야 한다.
즉, 계단함수처럼 뚝뚝 떨어지는 구조로 만들어줘야 한다. AP를 구할땐 넓이로 구하게 된다.
AP = 왼쪽 사각형의 넓이 + 오른쪽 작은 사각형의 넓이 = (1 × 0.33) + (0.88 × (0.47 - 0.33)) = 0.4532
컴퓨터 비전 분야에서 물체 검출 및 이미지 분류 알고리즘의 성능은 대부분 AP로 평가하는데, 물체 클래스가 여러 n개인 경우 각 클래스당 AP를 구하고 그것을 모두 합한 다음에 물체 클래스의 갯수(n개)로 나눠줌으로 알고리즘의 성능을 평가한다.
이를 mAP라 한다.