YOLO 모델을 훈련시킬 때 모델의 성능에 대해서 mAP로 표현하여 mAP 수치가 가장 높은 것을 가장 성능이 좋은 모델이라고 best.pt 파일로 저장하게 된다.
patience 매개변수는 인내, 인내심이라는 뜻을 가지고 있는데 이는 지정된 숫자의 에폭만큼 모델을 훈련시켰는데 mAP의 향상이 없으면 훈련을 중단하는 옵션이다.
이처럼 mAP는 모델의 성능과 거의 동일하게 사용되고 있는데 대체 이 mAP가 정확하게 무엇인지 제대로 몰라서 알아보기로 하였다.
https://artiiicy.tistory.com/25
https://sumniya.tistory.com/26
위 두 블로그 글을 참고하여서 내용을 정리한다.
mAP를 알기 위해서는 우선 confusion matrix(혼동 행렬)에 대해 이해하여야 한다.
confusion matrix란 다음과 같은 행렬을 뜻한다.
이는 알고리즘의 분류 성능을 시각화할 수 있는 표이다.
각 case별로 살펴보자면 다음과 같다.
- True Positive(TP) : 실제 True인 정답을 True라고 예측 (정답)
- False Positive(FP) : 실제 False인 정답을 True라고 예측 (오답)
- False Negative(FN) : 실제 True인 정답을 False라고 예측 (오답)
- True Negative(TN) : 실제 False인 정답을 False라고 예측 (정답)
위 행렬을 통해 여러가지 성능 지표를 표현할 수 있는데 그 중 mAP와 관련된 지표는 precision(정밀도)과 recall(재현율)이다.
precision : 모델이 정답이라고 답한것들(아래 그림의 파란 박스) 중, 실제로 맞은(TP) 비율
recall : 실제 정답들(아래 그림의 빨간 박스) 중에서 내가 정답이라고 말한 비율
위의 precision과 recall을 그래프로 나타내면 아래의 그래프가 나타나는데 해당 그래프의 면적을 AP(Average Precision)이라고 한다.
object detection 모델은 각 class마다 AP를 계산하고 그 값들의 평균을 취함으로써 모델의 성능을 요약한다.
따라서 mAP는 모든 클래스에 대한 평균 정확도를 나타내는 지표이다.
위 사진은 내가 산학협력 연구과제로 제작한 차종 분류 모델의 PR Curve이다.
해당 그래프의 면적이 곧 AP이고 각 클래스 별 AP의 평균이 mAP라고 할 수 있다.