Mean Average Precision (mAP)
평균 정밀도(mAP)가 컴퓨터 비전 모델을 평가하는 방법을 알아봅니다. IoU, 정밀도 및 재현율을 살펴보고 지금 Ultralytics YOLO26으로 mAP를 계산해 봅니다.
평균 정밀도 (mAP)는 컴퓨터 비전 모델의 성능을 평가하는 데 널리 사용되는 종합적인 지표로, 특히 객체 탐지와 인스턴스 세그멘테이션과 같은 작업에 사용됩니다. 단순히 이미지가 올바르게 분류되었는지만 확인하는 정확도와 달리, mAP는 모델이 객체를 얼마나 잘 찾는지와 객체 주변의 바운딩 박스를 얼마나 정확하게 배치하는지를 모두 평가합니다. 따라서 mAP는 YOLO26과 같은 최신 아키텍처를 이전 세대와 비교하는 기본 벤치마크로 사용됩니다. 모든 클래스에 대한 정밀도와 재현율 간의 상충 관계를 요약함으로써, mAP는 실제 환경에서 모델의 견고성을 반영하는 단일 점수를 제공합니다.
mAP의 구성 요소#
mAP를 계산하려면 먼저 탐지 품질을 정의하는 다음 세 가지 기본 개념을 이해해야 합니다:
- 교집합 대비 합집합 (IoU): 예측된 박스와 정답 어노테이션 간의 공간적 중첩을 측정합니다. 값은 0에서 1 사이의 비율로 나타납니다. 일반적으로 IoU가 0.5 또는 0.75와 같은 특정 임계값을 초과하는 경우에만 예측을 "True Positive"로 간주합니다.
- 정밀도: "모델이 탐지했다고 판단한 모든 객체 중 실제로 올바르게 탐지된 객체의 비율은 얼마인가?"라는 질문에 답하는 지표입니다. 정밀도가 높다는 것은 모델이 매우 적은 수의 거짓 양성을 생성한다는 의미입니다.
- 재현율: "이미지에 실제로 존재하는 모든 객체 중 모델이 찾은 객체의 비율은 얼마인가?"라는 질문에 답하는 지표입니다. 재현율이 높으면 모델이 거짓 음성을 방지하고 객체를 놓치는 경우가 드물다는 의미입니다.
계산 방법론#
계산은 각 특정 클래스(예: "person", "car", "dog")에 대한 평균 정밀도 (AP)를 계산하는 것부터 시작합니다. 이는 다양한 신뢰도 임계값에서 재현율에 대한 정밀도를 표시하는 정밀도-재현율 곡선 아래의 면적을 구하여 계산합니다. 평균 정밀도에서 "평균"은 학습 데이터의 모든 카테고리에 걸쳐 이러한 AP 점수의 평균을 계산한다는 의미입니다.
COCO 데이터셋과 같은 표준 연구 벤치마크에서는 일반적으로 다음 두 가지 주요 변형을 보고합니다:
-
mAP@50: IoU가 0.50 이상이면 탐지를 올바른 것으로 간주합니다. 관대한 지표입니다.
-
mAP@50-95: 0.50에서 0.95까지 0.05 간격으로 설정한 IoU 임계값에서 계산한 mAP의 평균입니다. 이 엄격한 지표는 높은 위치 정확도를 달성하는 모델에 더 높은 평가를 부여합니다.
mAP와 관련 지표 비교#
mAP와 정확도를 구분하는 것이 중요합니다. 정확도는 전체 이미지에 대해 하나의 레이블을 출력하는 이미지 분류에 적합하지만, 객체의 공간적 위치나 배경 클래스를 고려하지 않기 때문에 객체 탐지에는 적합하지 않습니다. 마찬가지로 F1-Score는 단일 신뢰도 임계값에서 정밀도와 재현율의 조화 평균을 제공하는 반면, mAP는 모든 신뢰도 수준에서의 성능을 통합하여 모델 안정성을 보다 종합적으로 보여줍니다.
실제 적용 사례#
안전성과 효율성이 무엇보다 중요한 환경에서는 높은 mAP 점수가 중요합니다.
- 자율주행 차량: 자율주행 기술에서 안전성은 높은 재현율(어떤 것도 놓치지 않음)과 높은 정밀도(돌발 제동 방지)로 보행자와 교통 표지판을 탐지하는 데 달려 있습니다. mAP는 인식 시스템이 이러한 요구 사항 간의 균형을 효과적으로 유지하도록 합니다.
- 의료 영상 분석: X선에서 종양이나 골절을 식별할 때 영상의학 전문의는 잠재적인 문제를 표시하기 위해 의료 분야의 AI에 의존합니다. 높은 mAP 점수는 모델이 오탐 경고로 의사를 압도하지 않으면서 이상 징후를 안정적으로 강조한다는 것을 나타내므로, 정확한 진단을 지원합니다.
Ultralytics로 mAP 측정#
최신 프레임워크는 검증 단계에서 이러한 지표의 계산을 간소화합니다. 다음 예제에서는 모델을 로드하고 ultralytics Python 패키지를 사용하여 mAP를 계산하는 방법을 보여줍니다.
from ultralytics import YOLO
# Load the YOLO26 model (recommended for new projects)
model = YOLO("yolo26n.pt")
# Validate the model on a dataset to compute mAP
# This runs inference and compares predictions to ground truth
metrics = model.val(data="coco8.yaml")
# Print mAP@50-95 (map) and mAP@50 (map50)
print(f"mAP@50-95: {metrics.box.map:.3f}")
print(f"mAP@50: {metrics.box.map50:.3f}")모델 배포 전에 mAP를 이해하고 최적화하는 것이 중요합니다. 이 프로세스를 간소화하기 위해 Ultralytics Platform은 학습 중 mAP, 손실 곡선 및 기타 KPI를 자동으로 추적하여 개발자가 진행 상황을 시각화하고 프로덕션에 사용할 최적의 모델 체크포인트를 선택할 수 있도록 합니다.









