일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- precision
- PCD
- ground truth
- 포인트 클라우드
- gradient
- 머신러닝
- object detection
- recall
- Mean Average Precision
- precision-recall
- 경사하강법
- IOU
- PCL
- AP
- 성능평가방법
- POINT
- MSE
- Point Cloud
- Today
- Total
Everything is NORMAL
[Object Detection] 성능평가지표 용어 정리 본문
AP (Average Precision)
Object Detection 알고리즘의 성능은 precision-recall 곡선과 average precision(AP) 로 보통 평가한다.
두 용어를 제대로 이해하기 위해서는 우선 Precision과 Recall에 대한 지식이 필요하다.
Precision
- Object-Detector가 검출한 정보들 중에서 Ground-Truth와 일치하는 비율을 의미한다.
- 한국어로 정밀도라고 불린다. 모든 검출 결과 중 옳게 검출한 비율을 의미한다.
TP는 true positive의 약자로 "옳은 검출"을 의미하고 FP는 false positive의 약자로 "잘못된 검출"을 의미한다.
따라서, Precision은 알고리즘이 검출해낸 것들 중에서 제대로 검출해낸 것의 비율을 의미하는 것이다.
예를 들어, 알고리즘이 5개를 검출해냈는데(실제 몇개의 물체가 검출되어야 하는지와 상관없이) 그 중 4개가 옳게 검출해낸 것이라면, Precision은 4/5 = 0.8이다.
Recall
- 한국어로 재현율이라고 불린다.
- 마땅히 검출해내야하는 물체들 중에서 제대로 검출된 것의 비율을 의미한다
FN은 False Negative의 약자로 "검출되었어야 하는 물체인데 검출되지 않은 것"을 의미한다.
예를 들어, 라벨이 붙어있는 물체(즉, 마땅히 검출되어야 할 물체)가 10개인데, 그 중 4개가 옳게 검출되었다면
Recall은 4/10 = 0.4가 된다.
Precision만으로 물체 검출 알고리즘의 성능을 평가하는 것은 적절하지 않다.
또한, Recall만으로 성능을 평가하는 것도 적절하지 않다.
위에서 예시로 든 것처럼, 실제 검출되어야 하는 물체가 10개인데, 알고리즘이 검출해낸 물체는 5개이고 그 중 4개가 맞다고 가정해보자. 그러면 이때 Precision = 4/5 = 0.8 이고, Recall = 4/10 = 0.4 이다.
Precision으로 보면 성능이 좋아보이지만, Recall로 보면 성능이 그닥 좋지 않아 보인다.
중요한 것은 Precision과 Recall은 항상 0과 1 사이의 값으로 나오게 되는데,
Precision이 높으면 Recall은 낮은 경향이 있고, Precision이 낮으면 Recall은 높은 경향이 있다는 것이다.
따라서, 어느 한 값 만으로 알고리즘의 성능을 평가하는 것은 거의 불가능하고, 두 값을 종합해서 알고리즘의 성능을 평가해야한다.
그래서 필요한 것이 precision-recall 곡선 및 AP 이다.
그 전에, 물체를 검출했을 때 "옳게 검출되었다" 와 "옳게 검출되지 않았다"를 구분해주는 기준, 즉 TP와 FP를 결정해주는 기준은 무엇일까? 그 기준은 바로 Intersection over Union(IoU)이다.
Intersection over Union (IoU)
아래와 같은 ground truth 바운더리 박스를 라벨로 가진 이미지가 있다고 가정해보자.
ground truth 바운더리 박스는 마땅히 검출되어야 할 물체를 감싸고 있다.
이 이미지는 ground truth 바운더리 박스가 주어지지 않은 상황에서 어떤 알고리즘에 의해 예측된 바운더리 박스가 다음과 같다고 해보자.
이런 상황에서 예측된 검출이 맞는지 틀린지를 어떻게 결정하면 좋겠는가?
이런 고민 끝에 나온 것이 바로 IoU 이다.
IoU는 예측된 바운더리 박스와 Ground Truth 바운더리 박스간 중첩되는 부분의 면적을 측정해서 중첩된 면적을 합집합의 면적으로 나눠준다. 아래 공식을 보자.
IoU의 값이 0.5 이상이면 제대로 검출(TP)되었다고 판단한다.
반면, 0.5 미만이면 잘못 검출(FP)되었다고 판단한다.
(이 문턱값은 다른 값으로 설정될 수도 있다.)
Precision-Recall 곡선
PR 곡선은 confidence 레벨에 대한 threshold 값의 변화에 의한 물체 검출기의 성능을 평가하는 방법이다.
confidence 레벨은 검출한 것에 대해 알고리즘이 얼마나 확신이 있는지를 알려주는 값이다.
만약에 어떤 물체를 검출했는데, confidence 레벨이 0.999 라면 굉장히 큰 확신을 가지고 검출한 것이다. (99.9%)
참고로, confidence 레벨이 높다고 해서 무조건 검출이 정확한 것은 아니다.
알고리즘 스스로 그런 느낌 또는 확신을 갖고 있는 것이다.
confidence 레벨이 낮으면 그만큼 검출 결과에 대해서 자신이 없는 것이다.
따라서 알고리즘의 사용자는 보통 confidence 레벨에 대해 threshold 값을 부여해서 특정값 이상이 되어야 검출된 것으로 인정한다. threshold 값이 0.4 라면, confidence 레벨로 0.1 또는 0.2를 갖고 있는 검출은 무시하는 것이다.
따라서 이 confidence 레벨에 대한 threshold 값의 변화에 따라 precision과 recall 값들도 달라질 것이다.
이것을 그래프로 나타낸 것이 PR 곡선이다.
예를 통해 이해해보자,
15개의 얼굴이 존재하는 어떤 데이터셋에서 한 얼굴 검출(Face Detection) 알고리즘에 의해서 총 10개의 얼굴이 검출되었다고 가정해보자.(confidence 레벨 0부터 100%까지 모두 고려했을때)
이때, 각 검출의 confidence 레벨과 TP, FP에 대한 여부는 아래 표에 나타냈다.
10개 중 7개가 제대로 검출되었고, 3개는 잘못 검출되었다.
이 때, Precision = 옳게 검출된 얼굴 개수 / 검출된 얼굴 개수 = 7/10 = 0.7
Recall = 옳게 검출된 얼굴 개수 / 실제 얼굴 개수 = 7/15 = 0.47이 된다.
이것은 confidence 레벨이 13%와 같이(Detections-F) 아주 낮더라도 검출해낸 것은 모두 인정했을 때의 결과이다.
이번에는 검출된 결과를 confidence 레벨에 따라 재정렬해보자.
confidence 레벨에 대한 threshold 값을 아주 엄격하게 적용해서 95%로 했다면, 하나만 검출한 것으로 판단할 것이고, 이때, Precision = 1/1 = 1
Recall = 1/15 = 0.067이 된다.
threshold 값을 91%로 했다면, 두 개가 검출된 것으로 판단할 것이고,
Precision = 2/2 = 1
Recall = 2/15 = 0.13이 된다.
threshold 값을 검출들의 confidence 레벨에 맞춰 낮춰가면 다음과 같이 precision과 recall이 계산될 것이다.
이 Precision 값들과 Recall 값을 아래와 같이 그래프로 나타내면 그것이 바로 PR 곡선이다.
PR 곡선에서 x축은 recall 값이고, y축은 precision 값이다.
즉, PR 곡선에서는 recall 값의 변화에 따른 precision 값을 확인할 수 있다.
Average Precision (AP)
PR 곡선은 성능을 평가하는 데 매우 좋은 방법이긴 하지만, 단 하나의 숫자로 성능을 평가하긴 어렵다.
AP는 precision-recall 그래프에서 그래프 선 아래쪽의 면적으로 계산된다.
이렇게 바꾼 다음에 그래프 선 아래의 넓이를 계산함으로써 AP를 구한다.
이 경우 AP = 왼쪽 큰 사각형의 넓이 + 오른쪽 작은 사각형의 넓이 = 1 * 0.33 + 0.88 * (0.47-0.33) = 0.4532 가 된다.
Computer Vision 분야에서 물체 검출 및 이미지 분류 알고리즘의 성능은 대부분 이 AP로 평가한다.
물체 클래스가 여러 개인 경우, 각 클래스당 AP를 구한 다음, 그것의 평균을 구하는 것이 mAP이다.
-
AP (Average Precision) : Recall Value [0.0, 0.1, ... , 1.0] 값들에 대응하는 Precision 값들의 Average 이다.
-
mAP (mean Average Precision) : 1개의 Object 당 1개의 AP 값을 구하고, 여러 Object_Detector 에 대해서 mean 값을 구한 것.
'개발지식 (이론) > 인공지능' 카테고리의 다른 글
경사하강법(Gradient Descent) (0) | 2020.02.07 |
---|