Ultralytics YOLO27:
Get Started

컴퓨터 비전 모델 테스트 방법#

소개#

모델 테스트는 학습된 모델이 선별된 벤치마크가 아니라 움직이거나 조명이 좋지 않거나 부분적으로 가려진 객체가 포함된, 이전에 보지 못한 실제 데이터에서 어떻게 작동하는지 확인하는 과정입니다. 모델 평가가 레이블이 지정된 데이터셋의 지표를 측정한다면, 테스트는 배포 전에 모델이 학습한 동작이 애플리케이션의 목표에 부합하는지 확인합니다. 이 가이드에서는 테스트 데이터 준비, Ultralytics YOLO26 모델 테스트, 과적합, 과소적합, 데이터 누수 탐지 방법을 다룹니다.



시청: 머신러닝 모델 테스트 방법 | 컴퓨터 비전에서 데이터 누수 방지 🚀

모델 테스트와 모델 평가 비교#

모델 테스트와 모델 평가는 컴퓨터 비전 프로젝트의 서로 다른 두 단계입니다. 평가는 레이블이 지정된 데이터셋에서 지표로 성능을 측정하고, 테스트는 배포 환경과 유사한 조건에서 모델이 학습한 동작이 제대로 유지되는지 확인합니다.

고양이와 개를 인식하도록 컴퓨터 비전 모델을 학습했으며, 동물을 모니터링하기 위해 반려동물 매장에 모델을 배포하려 한다고 가정해 보세요. 모델 평가 단계에서는 레이블이 지정된 데이터셋을 사용해 정확도, precision, recall과 같은 지표를 계산합니다. 예를 들어, 특정 데이터셋에서 모델의 고양이와 개 구분 정확도가 98%일 수 있습니다.

평가 후에는 반려동물 매장의 이미지를 사용해 더 다양하고 현실적인 조건에서 모델이 고양이와 개를 얼마나 잘 식별하는지 테스트합니다. 고양이와 개가 움직이거나, 조명이 다르거나, 장난감이나 가구 같은 물체에 부분적으로 가려졌을 때도 올바르게 레이블을 지정하는지 확인합니다. 모델 테스트를 통해 통제된 평가 환경을 벗어난 상황에서도 모델이 예상대로 동작하는지 확인할 수 있습니다.

모델 테스트 준비#

컴퓨터 비전 데이터셋은 일반적으로 실제 환경을 모방하기 위해 학습 세트와 테스트 세트로 나뉩니다. 학습 데이터는 모델을 학습시키고, 테스트 데이터는 모델이 한 번도 본 적 없는 예제에서 동작을 검증합니다. Ultralytics Platform은 데이터셋 구성과 어노테이션을 한곳에서 관리하므로 레이블이 지정된 테스트 세트를 구축하는 데 도움이 됩니다.

테스트하기 전에
  • 실제 환경 반영: 이전에 보지 못한 테스트 데이터는 모델이 배포 후 처리할 데이터와 유사해야 합니다. 그래야 모델의 성능을 현실적으로 파악할 수 있습니다.
  • 충분한 크기: 모델의 성능을 신뢰성 있게 파악하려면 테스트 데이터셋의 크기가 충분해야 합니다.

YOLO26 모델 테스트 방법#

학습된 YOLO26 모델 테스트에는 서로 보완적인 두 가지 워크플로가 포함됩니다. 정량적 지표를 얻기 위해 레이블이 지정된 테스트 분할에서 검증하고, 정성적으로 동작을 확인하기 위해 새 이미지에 대해 예측합니다.

레이블이 지정된 테스트 분할에서 검증#

검증 모드는 모델의 예측을 정답 레이블과 비교하고 탐지 모델의 precision, recall, mAP50, mAP50-95를 보고합니다. 또한 혼동 행렬과 precision-recall 곡선 등의 시각 자료를 저장하여 모델 성능이 저조한 특정 영역을 파악하는 데 도움을 줍니다.

사용법
from ultralytics import YOLO

# 사전 학습된 모델 또는 자체 학습한 체크포인트를 불러옵니다(예: "path/to/best.pt").
model = YOLO("yolo26n.pt")

# 검증을 실행합니다. 데이터셋 YAML에 테스트 분할이 정의되어 있으면 split="test"를 추가하세요.
metrics = model.val(data="coco8.yaml")
print(metrics.box.map)  # mAP50-95

기본적으로 검증은 데이터셋의 val 분할에서 실행됩니다. 별도로 분리해 둔 테스트 세트의 성능을 측정하려면 데이터셋 YAML에 test: 분할을 정의하고 split="test"를 전달하세요.

새 이미지에 대해 예측#

예측 모드는 레이블이 없어도 이전에 보지 못한 새 데이터에서 모델을 실행합니다. 성능 지표는 생성하지 않지만 어노테이션이 포함된 결과를 저장하면 실제 이미지에서 모델이 어떻게 동작하는지 검토할 수 있습니다. 예를 들어 테스트 이미지가 있는 폴더 전체를 한 번에 처리할 수 있습니다.

사용법
from ultralytics import YOLO

# 사전 학습된 모델 또는 자체 학습한 체크포인트를 불러옵니다(예: "path/to/best.pt").
model = YOLO("yolo26n.pt")

# 테스트 이미지 폴더에서 예측을 실행하고 어노테이션 결과를 저장합니다.
results = model.predict(source="path/to/test_images", save=True)
사용자 지정 학습 전 사전 학습 모델 테스트

사용자 지정 학습에 투자하기 전에 YOLO26이 애플리케이션에 적합한지 확인하려면 사전 학습된 체크포인트를 사용해 자체 이미지에서 예측 모드를 실행하세요. 모델은 COCO와 같은 데이터셋으로 사전 학습되므로, 특정 상황에서 모델이 얼마나 잘 작동할지 빠르게 파악할 수 있습니다.

검증 모드와 예측 모드 비교#

모드용도레이블 필요 여부출력
검증정답과 비교해 성능을 정량화합니다.예Precision, recall, mAP50, mAP50-95, 혼동 행렬, PR 곡선
예측레이블이 없는 새 데이터에서 모델 동작을 확인합니다.아니요어노테이션이 포함된 이미지와 예측 결과를 제공하며 지표는 제공하지 않습니다.

테스트 결과 분석 방법#

예측과 지표를 확인한 후에는 모델이 어디서 왜 실패하는지 자세히 살펴보세요.

  • 오분류된 이미지: 모델이 잘못 분류한 이미지를 찾아 검토하고 오류가 발생한 지점을 파악하세요.
  • 오류 분석: 오류 유형(예: false positive와 false negative) 및 잠재적 원인을 파악하기 위해 철저히 분석하세요.
  • 편향 및 공정성: 모델 예측에 편향이 있는지 확인하세요. 특히 인종, 성별, 연령과 같은 민감 속성이 포함된 경우 데이터의 하위 집합별로 모델이 동등하게 잘 작동하는지 확인해야 합니다.

머신러닝의 과적합과 과소적합#

머신러닝 모델, 특히 컴퓨터 비전 모델을 테스트할 때는 과적합과 과소적합에 주의해야 합니다. 이러한 문제는 모델이 새 데이터에서 작동하는 성능에 큰 영향을 미칠 수 있습니다.

문제일반적인 징후해결 방법
과적합학습 정확도는 높지만 검증 정확도는 낮음; 이미지의 사소한 변화나 관련 없는 세부 사항에 지나치게 민감함드롭아웃과 같은 정규화를 적용하고, 학습 데이터셋의 크기를 늘리거나 모델 아키텍처를 단순화합니다.
과소적합학습 세트에서도 정확도가 낮음; 명확한 특징이나 객체를 지속적으로 인식하지 못함더 복잡한 모델을 사용하고, 관련성이 높은 특징을 추가하며, 학습 에폭 수를 늘립니다.

핵심은 학습 데이터셋과 검증 데이터셋 모두에서 모델이 잘 작동하도록 균형을 찾는 것입니다. 테스트 중 지표를 정기적으로 모니터링하고 예측 결과를 시각적으로 점검하면 어느 한쪽 극단으로 치우치는 현상을 조기에 발견할 수 있습니다.

Comparison of underfitting, appropriate fitting, and overfitting on the same dataset

컴퓨터 비전의 데이터 누수와 방지 방법#

데이터 누수는 학습 데이터셋 외부의 정보가 실수로 모델 학습에 사용될 때 발생합니다. 데이터 누수가 있으면 학습 중에는 모델의 정확도가 매우 높아 보일 수 있지만, 새롭게 접하는 데이터에서는 성능이 저하됩니다.

데이터 누수는 발견하기 어려울 수 있으며 학습 데이터의 숨겨진 편향에서 비롯되는 경우가 많습니다.

편향 유형발생 양상
카메라 편향다양한 각도, 조명, 그림자, 카메라 움직임으로 원치 않는 패턴이 생깁니다.
오버레이 편향이미지에 포함된 로고, 타임스탬프 또는 기타 오버레이가 모델을 오도합니다.
폰트 및 객체 편향특정 클래스에 자주 등장하는 특정 폰트나 객체가 모델의 학습을 왜곡합니다.
공간 편향전경과 배경의 불균형, 바운딩 박스 분포, 객체 위치가 학습에 영향을 미칩니다.
레이블 및 도메인 편향잘못된 레이블이나 데이터 유형의 변화는 데이터 누수로 이어집니다.

데이터 누수를 감지하고 방지하는 방법#

데이터 누수를 찾으려면 모델 결과가 예상보다 지나치게 좋은지 확인하고, 특정 피처의 중요도가 다른 피처보다 훨씬 높은지 살펴보세요. 모델의 판단이 직관적으로 타당한지도 다시 확인하고, 데이터가 처리 전에 올바르게 분할되었는지 검증하세요.

데이터 누수를 방지하려면 다양한 카메라와 환경에서 촬영한 이미지나 동영상으로 구성된 데이터셋을 사용하고, 특정 시간대에 모든 양성 샘플이 촬영되는 경우처럼 데이터에 숨겨진 편향이 있는지 꼼꼼히 검토하세요. 데이터 누수를 방지하면 실제 환경에서 컴퓨터 비전 모델의 신뢰성을 높일 수 있습니다.

모델 테스트 후 진행할 단계#

모델을 테스트한 후 다음 단계는 결과에 따라 달라집니다. 모델 성능이 우수하다면 실제 환경에 배포할 수 있습니다. 결과가 만족스럽지 않다면 개선이 필요합니다. 여기에는 오류 분석, 데이터 추가 수집, 데이터 품질 개선, 하이퍼파라미터 조정, 모델 재학습 등이 포함될 수 있습니다.

결론#

보류된 테스트 분할로 검증하고, 실제 이미지에 대해 예측을 수행하며, 과적합과 데이터 누수 여부를 확인하는 엄격한 모델 테스트를 거쳐야 평가가 잘 된 모델을 신뢰할 수 있는 모델로 만들 수 있습니다. 테스트에서 발견된 문제를 배포 전에 해결하면 프로덕션 환경에서 모델이 의도한 대로 동작할 가능성이 훨씬 높아집니다. 진행 중 궁금한 점이 있으면 Ultralytics GitHub 저장소나 Ultralytics Discord 서버에서 커뮤니티에 문의하세요.

자주 묻는 질문#

  • 모델 평가는 레이블이 지정된 데이터셋에서 지표를 사용해 성능을 측정하는 반면, 모델 테스트는 배포 조건과 유사한 새 미관측 데이터에서 모델이 어떻게 동작하는지 확인합니다. 평가는 통제된 데이터셋에서 정밀도와 mAP 같은 수치를 산출하고, 테스트는 조명, 움직임, 가림 현상이 다양한 환경에서도 학습된 동작이 유지되는지 확인합니다. 실제 사례는 모델 테스트와 모델 평가 비교를 참조하세요.

  • 예측 모드를 사용하고 폴더 경로를 source로 전달하면 YOLO26이 폴더의 모든 이미지에서 실행되며, 검토를 위해 주석이 추가된 결과를 저장할 수 있습니다. 예측 모드는 지표를 계산하지 않습니다. 레이블이 지정된 데이터셋에서 성능을 정량화하려면 대신 검증 모드를 사용하세요. 두 워크플로 모두 YOLO26 모델 테스트 방법에서 확인할 수 있습니다.

  • 객체 탐지 모델의 경우 검증을 통해 정밀도, 재현율, mAP50, mAP50-95를 보고하고 혼동 행렬과 정밀도-재현율 곡선 등의 플롯을 저장합니다. 기본 val 분할 대신 전용 테스트 분할에서 검증하려면 데이터셋 YAML에 test:을 정의하고 split="test"를 전달하세요. 각 지표를 해석하는 방법은 성능 지표 가이드를 참조하세요.

  • 과적합에는 드롭아웃과 같은 정규화 기법을 적용하거나, 학습 데이터셋의 크기를 늘리거나, 모델 아키텍처를 단순화하세요. 과소적합에는 더 복잡한 모델을 사용하거나, 관련 피처를 추가하거나, 에포크 수를 늘려 학습하세요. 각 문제의 징후와 해당 해결 방법은 머신러닝의 과적합과 과소적합에 정리되어 있습니다.

  • 테스트 성능이 예상보다 지나치게 좋거나, 단일 피처가 예측을 좌우하거나, 모델의 판단이 직관적으로 타당하지 않다면 데이터 누수를 의심하세요. 다양한 카메라와 환경에서 수집한 데이터셋을 사용하고, 숨겨진 편향이 있는지 데이터를 검토하며, 처리 전에 학습/테스트 분할을 수행했는지 확인해 데이터 누수를 방지하세요. 일반적인 편향 유형은 컴퓨터 비전의 데이터 누수를 참조하세요.

  • 결과가 프로젝트 목표를 충족하면 모델을 배포하고, 그렇지 않으면 배포 전에 모델을 개선하세요. 오류 분석, 더욱 다양한 데이터 수집, 데이터 품질 개선, 하이퍼파라미터 튜닝, 재학습 등이 개선 방법에 포함될 수 있습니다. 각 변경 작업 후 테스트를 반복해 수정 사항이 효과가 있었는지 확인하세요.

댓글