모델 평가 및 미세 조정에 관한 인사이트#
YOLO 모델을 학습한 다음에는 성능을 측정하고 부족한 부분을 보완하도록 미세 조정해야 합니다. 평가는 mAP 및 IoU와 같은 지표를 사용해 정확도를 정량화하며, 미세 조정은 학습 파라미터를 조정하여 취약한 부분을 강화하고 모델이 프로젝트 목표를 달성하도록 합니다. 이 가이드에서는 주요 평가 지표와 지표를 읽는 방법, 지표가 보여주는 내용을 바탕으로 조치하는 방법을 설명합니다.
시청: 모델 평가 및 파인튜닝에 관한 인사이트 | 평균 정밀도 향상 팁
평가와 미세 조정은 학습이 진행되어 모델의 정확성과 효율성을 확인하고 배포를 준비해야 하는 컴퓨터 비전 프로젝트 워크플로의 후반 단계에서 이루어집니다.
주요 평가 지표#
다양한 지표를 통해 모델의 성능을 측정할 수 있습니다. 이러한 성능 지표는 모델이 의도한 목표를 달성하도록 개선 방향을 안내하는 명확한 수치 정보를 제공합니다.
신뢰도 점수#
신뢰도 점수는 탐지된 객체가 특정 클래스에 속한다고 모델이 얼마나 확신하는지를 나타냅니다. 점수 범위는 0부터 1까지이며, 점수가 높을수록 신뢰도가 높습니다. 신뢰도 점수는 예측을 필터링하는 데 도움이 되며, 지정된 임계값보다 높은 신뢰도 점수를 가진 탐지만 유효한 것으로 간주됩니다.
추론을 실행했는데 예측이 표시되지 않고 다른 사항을 모두 확인했다면 신뢰도 임계값을 낮춰 보세요. 임계값이 너무 높으면 모델이 유효한 예측을 무시할 수 있습니다. 임계값을 낮추면 모델이 더 많은 가능성을 고려합니다. 이 설정이 최종 프로젝트 목표에 부합하지 않을 수도 있지만, 모델의 기능을 확인하고 미세 조정 방법을 결정하는 데 유용합니다.
교집합 대비 합집합#
교집합 대비 합집합(IoU)은 객체 탐지에서 예측 바운딩 박스가 정답 바운딩 박스와 얼마나 겹치는지 측정하는 지표입니다. IoU 값의 범위는 0부터 1까지이며, 1은 완벽하게 일치함을 뜻합니다. IoU는 예측 경계가 실제 객체 경계와 얼마나 가까운지 측정하므로 중요합니다.
평균 정밀도#
평균 정밀도(mAP)는 객체 탐지 모델의 전반적인 성능을 측정합니다. 각 객체 클래스의 탐지 정밀도를 살펴보고 점수를 평균하여 모델이 객체를 얼마나 정확하게 식별하고 분류하는지 보여주는 단일 수치를 산출합니다.
가장 일반적으로 보고되는 mAP 지표는 두 가지입니다.
- mAP@.5: 단일 IoU 임계값 0.5에서 평균 정밀도를 측정합니다. 이 지표는 모델이 완화된 정확도 요구 사항으로 객체를 올바르게 찾을 수 있는지 확인합니다. 완벽한 위치 지정이 아니라 객체가 대략 올바른 위치에 있는지에 초점을 맞추며, 모델의 전반적인 객체 탐지 성능을 파악하는 데 도움이 됩니다.
- mAP@.5:.95: 0.5부터 0.95까지 0.05씩 증가하는 여러 IoU 임계값에서 계산한 mAP 값의 평균입니다. 이 지표는 더 상세하고 엄격합니다. 다양한 엄격도 수준에서 모델이 객체를 얼마나 정확하게 찾는지 전체적으로 보여주며, 정밀한 객체 탐지가 필요한 애플리케이션에 특히 유용합니다.
그 밖의 mAP 지표로는 더 엄격한 IoU 임계값 0.75를 사용하는 mAP@0.75와 크기가 서로 다른 객체에 대한 정밀도를 평가하는 mAP@small, medium, large가 있습니다.
YOLO26 모델 평가#
학습된 YOLO26 모델은 검증 모드를 사용해 평가할 수 있습니다. 각 지표를 계산하고 해석하는 방법을 자세히 알아보려면 YOLO26 성능 지표 가이드를 참조하세요.
다양한 이미지 크기 처리#
다양한 크기의 이미지로 모델을 평가하면 여러 데이터셋에서의 성능을 파악하는 데 도움이 됩니다. 검증에서는 기본적으로 직사각형 배치 처리(rect=True in model.val())를 사용합니다. 종횡비에 따라 이미지를 그룹화하고 각 배치를 맞출 수 있는 가장 작은 크기로 패딩하므로, 직사각형 이미지를 정사각형으로 강제 변환하지 않고 평가합니다.
imgsz 파라미터는 검증에 사용할 이미지 크기를 정하며, 정사각형으로 적용됩니다. 이 값을 명시적으로 설정하지 않으면 YOLO26은 모델 설정에 저장된 값을 다시 사용합니다(공식 사전 학습 모델의 경우 640, 사용자 지정 체크포인트의 경우 학습에 사용한 크기). rect=true을 사용하면 YOLO26은 긴 변을 imgsz로 제한하고 종횡비를 유지하면서 짧은 변을 stride 배수로 패딩합니다. 데이터셋의 크기와 사용 가능한 GPU 메모리에 따라 imgsz을 조정하세요.
YOLO26 지표 액세스#
몇 줄의 Python 코드로 특정 평가 지표에 액세스하면 모델 성능을 자세히 파악할 수 있습니다. 아래 코드 조각은 모델을 불러오고 검증을 실행한 다음 가장 유용한 지표를 출력합니다.
from ultralytics import YOLO
# 모델 로드
model = YOLO("yolo26n.pt")
# 데이터셋을 검증합니다.
results = model.val(data="coco8.yaml")
# 전체 지표
print("mAP50-95:", results.box.map) # IoU 0.50:0.95에서의 mAP
print("mAP50:", results.box.map50) # IoU 0.50에서의 mAP
print("mAP75:", results.box.map75) # IoU 0.75에서의 mAP
print("Mean precision:", results.box.mp)
print("Mean recall:", results.box.mr)
print("Fitness:", results.box.fitness()) # 모델 선택에 사용되는 가중 점수
# 클래스별 지표
print("Class indices evaluated:", results.box.ap_class_index)
print("Per-class mAP50-95:", results.box.maps)
# 이미지별 precision, recall, F1, TP, FP, FN
print("Per-image metrics:", results.box.image_metrics)
# 이미지당 밀리초 단위의 단계별 시간 분석
print("Timing breakdown (ms/image):", results.speed)fitness()은 메서드이므로 괄호를 붙여 호출해야 하며, map, map50, mp과 같은 지표는 속성이므로 직접 접근한다는 점에 유의하세요.
results.box.image_metrics 속성은 이미지 파일명을 키로 사용하고 각 이미지의 IoU 0.5에서 precision, recall, f1, tp, fp, fn을 포함하는 이미지별 사전입니다. 전처리, 추론, 손실, 후처리 시간은 results.speed 사전에 별도로 보고됩니다. 이 정보를 함께 활용하면 모델이 어려움을 겪는 이미지를 정확히 파악하고 이에 맞게 미세 조정할 수 있습니다.
모델 미세 조정#
미세 조정은 사전 학습된 모델의 파라미터를 조정하여 특정 작업이나 데이터셋에서 성능을 향상하는 과정입니다. 모델 재학습이라고도 하며, 실제 애플리케이션에서 접할 데이터에 대해 모델이 더 잘 이해하고 결과를 예측하도록 합니다. 평가 결과를 바탕으로 자체 데이터로 모델을 재학습하고, 미세 조정 가이드에서 다루는 학습 인수를 조정합니다.
작은 객체를 위한 이미지 타일링#
이미지 타일링은 작은 객체의 탐지 정확도를 높일 수 있습니다. 1280x1280 이미지와 같은 큰 이미지를 여러 640x640 세그먼트로 나누면 원본 해상도를 유지하면서 모델이 고해상도 조각으로 학습할 수 있습니다. Ultralytics는 추론 시 SAHI 타일 추론을 통해 이를 지원합니다. 타일 이미지로 학습할 때는 새로 분할된 각 세그먼트에 맞게 레이블을 정확히 조정해야 합니다.
결론#
평가와 미세 조정을 거치면 학습된 모델을 신뢰할 수 있고 배포 가능한 모델로 만들 수 있습니다. mAP 및 IoU와 같은 지표로 약점을 파악하고, 이에 맞춰 파라미터를 변경할 수 있습니다. 먼저 검증 모드로 모델의 성능을 벤치마크한 다음, 미세 조정 가이드에서 다루는 인수를 사용해 재학습하고 새로운 파라미터, 기법, 데이터셋을 적용하며 계속 반복하세요. 진행 중에 궁금한 점이 있으면 Ultralytics GitHub 저장소 또는 Ultralytics Discord 서버에서 커뮤니티에 질문하세요.
자주 묻는 질문#
YOLO26 모델 성능을 평가할 때 중요한 지표에는 Confidence Score, Intersection over Union (IoU), Mean Average Precision (mAP)이 있습니다. Confidence Score는 탐지된 각 객체 클래스에 대한 모델의 확신도를 측정합니다. IoU는 예측된 바운딩 박스가 정답 바운딩 박스와 얼마나 겹치는지 평가합니다. Mean Average Precision (mAP)은 클래스별 precision 점수를 종합한 값이며, IoU 임계값에 따라 달라지는 일반적인 두 가지 유형으로 mAP@.5와 mAP@.5:.95가 있습니다. 이러한 지표에 대해 자세히 알아보려면 YOLO26 성능 지표 가이드를 참고하세요.
사전 학습된 YOLO26 모델의 미세 조정은 특정 작업이나 데이터셋에서 성능을 향상하도록 파라미터를 조정하는 과정입니다. 먼저 지표를 사용해 모델을 평가한 다음, 사전 학습된 가중치에서 시작해 자체 데이터셋으로 재학습하세요. 평가 중에는
rect=true과 같은 파라미터가 다양한 이미지 크기를 효과적으로 처리하는 데 도움이 됩니다. 조정할 학습 인수는 미세 조정 가이드를 참고하세요.평가 중 이미지 크기가 다양한 경우, 직사각형 검증(
rect=True;model.val()의 기본값)을 사용하세요. 이 기능은 모든 이미지를 정사각형으로 강제 변환하는 대신 종횡비에 따라 이미지를 그룹화하고 각 배치에 패딩을 적용합니다.imgsz파라미터는 검증에 사용할 이미지 크기를 설정합니다. 값을 재정의하지 않으면 YOLO26은 모델에 저장된 값(공식 사전 학습 모델의 경우 640)을 재사용합니다. 데이터셋과 GPU 메모리에 맞게imgsz을 조정하세요. 자세한 내용은 이미지 크기가 다양한 경우의 처리 섹션을 참고하세요.검증을 실행한 후 Python에서 YOLO26 모델 평가 지표에 접근할 수 있습니다.
사용법from ultralytics import YOLO # 모델 로드 model = YOLO("yolo26n.pt") # 검증 실행 results = model.val(data="coco8.yaml") # 주요 지표 확인 print("Mean average precision at IoU=0.50:", results.box.map50) print("Mean average precision at IoU=0.50:0.95:", results.box.map) print("Mean recall:", results.box.mr) print("Class indices evaluated:", results.box.ap_class_index)이러한 지표를 분석하면 YOLO26 모델을 미세 조정하고 최적화하는 데 도움이 됩니다. 자세한 내용은 YOLO 성능 지표 가이드를 참고하세요.