YOLO 튜닝 전략 – 앵커, 스케일 조절법

데이터 튜닝 사진


YOLO 모델을 처음 학습시켰을 때 기대만큼 성능이 잘 나오지 않아 당황했던 경험이 있습니다. 모델 아키텍처나 데이터셋 구성은 제대로 갖추었다고 생각했지만, 작은 객체를 제대로 탐지하지 못하거나 바운딩 박스의 위치가 일관되지 않은 문제들이 나타났습니다. 이후 YOLO의 앵커 설정과 이미지 스케일 조절 등 튜닝 요소를 하나하나 살펴보며 조정한 결과, 같은 데이터셋에서도 정확도가 크게 향상되는 것을 확인할 수 있었습니다. 이 글에서는 YOLO 모델을 더욱 효과적으로 활용하기 위한 핵심 튜닝 전략 중 앵커와 스케일 조절에 대해 다뤄보겠습니다.

YOLO의 앵커 박스 개념과 조정 방법

YOLO 모델은 객체의 위치를 직접 예측하는 방식이지만, 그 예측은 사전에 정의된 여러 개의 앵커 박스를 기반으로 이루어집니다. 앵커 박스란 이미지 내에 다양한 크기와 비율을 가진 박스를 미리 정의해두고, 실제 객체가 이들 중 어떤 박스에 가장 잘 맞는지를 학습하는 방식입니다. YOLOv3부터 도입된 이 개념은 다양한 객체 크기에 대응하기 위한 장치이며, 작은 객체부터 큰 객체까지 모두 탐지할 수 있도록 합니다.

YOLOv5에서는 기본적으로 9개의 앵커 박스를 사용하며, 각 스케일별로 3개씩 할당됩니다. 하지만 데이터셋의 특성에 따라 이 기본값이 최적이 아닐 수 있습니다. 예를 들어 특정 프로젝트에서 대부분의 객체가 매우 작거나 특정한 비율을 가진 경우, 기본 앵커 박스로는 탐지 성능이 떨어질 수 있습니다. 이럴 때는 앵커 박스를 재설정하여 모델이 더 적절한 후보 영역을 기준으로 학습할 수 있도록 해야 합니다.

YOLOv5에서는 자동으로 앵커를 재계산해주는 기능을 제공하며, 명령어를 통해 데이터셋에 가장 잘 맞는 앵커 크기를 추천받을 수 있습니다. 이 작업은 k-means 클러스터링 방식으로 수행되며, 학습 데이터 내의 객체 크기 분포를 분석해 최적의 박스 크기를 찾아줍니다. 이를 통해 작은 객체의 탐지 성능을 높이거나 과도한 false positive를 줄일 수 있습니다.

최근 YOLOv8에서는 anchor-free 구조가 도입되며 앵커 설정이 필요 없는 방식으로 바뀌었지만, YOLOv5 이하 버전 또는 anchor 기반 모델을 사용하는 경우에는 앵커 튜닝이 여전히 중요한 역할을 합니다. 따라서 프로젝트에서 사용하는 YOLO 버전에 따라 적절히 앵커 관련 설정을 점검해야 합니다.

입력 이미지 스케일 조절의 중요성

YOLO 모델의 또 다른 핵심 튜닝 포인트는 입력 이미지의 크기, 즉 스케일입니다. 모델은 일반적으로 640x640 또는 416x416 크기의 정사각형 이미지를 입력으로 받으며, 이 크기에 맞추기 위해 원본 이미지를 리사이즈하거나 패딩을 추가하게 됩니다. 문제는 이 과정에서 객체의 비율이나 크기가 왜곡될 수 있다는 점이며, 특히 작은 객체는 리사이즈 과정에서 사라지거나 인식이 어려워질 수 있습니다.

입력 이미지 크기를 조정하면 모델의 receptive field, 즉 한 번에 인식 가능한 영역도 같이 바뀌게 됩니다. 예를 들어 1280x1280으로 이미지를 확대하여 학습하면 더 정밀한 객체 탐지가 가능하지만, 연산량과 학습 시간이 크게 증가합니다. 반대로 320x320처럼 해상도를 낮추면 속도는 빨라지지만 작은 객체를 놓칠 확률이 높아집니다.

따라서 프로젝트의 목적과 환경에 따라 적절한 스케일을 선택하는 것이 중요합니다. 실시간 처리가 필요한 경우에는 중간 크기(640x640)를 유지하면서 앵커를 조정하는 것이 일반적이며, 고정밀 탐지가 필요한 경우에는 고해상도 입력으로 학습을 시도해볼 수 있습니다. 단, 고해상도 이미지에는 GPU 메모리 사용량이 크게 증가하므로 자원에 따른 제한을 고려해야 합니다.

또한 YOLOv5와 v8은 학습 시 자동 멀티스케일 기능을 제공하여, 일정 범위 내에서 이미지 크기를 랜덤하게 조정하며 학습하는 방식도 지원합니다. 이를 통해 다양한 크기와 위치의 객체를 보다 유연하게 인식할 수 있는 모델을 만들 수 있습니다. 하지만 inference 단계에서는 다시 고정된 이미지 크기를 사용하므로, 학습과 추론 간 스케일 일관성도 확인해야 합니다.

기타 튜닝 팁과 실전 적용 전략

YOLO 모델의 성능은 앵커와 스케일 외에도 다양한 요소에 영향을 받습니다. 예를 들어 학습 시 사용하는 IoU 임계값, NMS(Non-Maximum Suppression) 설정, confidence threshold, augmentation 기법 등도 튜닝을 통해 성능 개선이 가능합니다. 하지만 이 중에서도 앵커와 스케일은 비교적 직관적이며, 성능에 즉각적인 영향을 줄 수 있는 핵심 요소입니다.

제가 수행한 한 프로젝트에서는 초기에는 기본 앵커를 그대로 사용했지만, 작은 객체의 탐지율이 낮다는 분석 결과가 나왔습니다. 이후 앵커를 재조정하고, 이미지 해상도를 640x640에서 960x960으로 높인 후 학습을 다시 진행하자 탐지 정확도가 10% 이상 향상되었습니다. 물론 연산 속도는 약간 떨어졌지만, 정밀도를 중시하는 환경에서는 충분히 감수할 수 있는 부분이었습니다.

실전에서는 다음과 같은 순서로 튜닝을 진행하는 것이 효과적입니다. 1. 기본 모델로 학습 후 성능 확인 2. 객체 크기 분포 분석 → 앵커 재설정 3. 해상도 실험 → 메모리, 속도, 정확도 균형 조절 4. 최종 추론 환경에 맞는 스케일 및 앵커 고정 이러한 절차를 통해 YOLO 모델의 탐지 성능을 점진적으로 개선할 수 있으며, 특정 조건에서의 실시간성과 정밀도 요구를 동시에 충족시킬 수 있습니다.

결론 – YOLO 성능의 핵심을 조율하는 두 가지

YOLO 모델은 매우 강력하고 빠르지만, 그 성능을 극대화하려면 앵커와 입력 이미지 스케일이라는 두 가지 핵심 요소에 대한 이해와 조율이 필요합니다. 정해진 구조를 그대로 사용하는 것보다, 데이터 특성과 환경에 맞게 모델을 튜닝하는 과정은 실전에서 매우 큰 차이를 만들어냅니다.

앵커는 객체의 크기와 비율에 맞춰 탐지의 기초를 제공하며, 스케일은 탐지의 정밀도와 처리 속도 사이의 균형을 결정짓습니다. 이 두 요소를 체계적으로 조절함으로써 YOLO 모델은 다양한 산업 환경과 요구 조건에서도 안정적인 성능을 발휘할 수 있습니다.

YOLO를 단순한 사전학습 모델이 아니라, 데이터에 최적화된 맞춤형 탐지 시스템으로 발전시키고 싶다면, 앵커와 스케일 튜닝 전략을 반드시 실험해보시기 바랍니다. 그 차이는 곧 결과로 이어질 것입니다.

댓글

이 블로그의 인기 게시물

모델 평가 지표 정리 – 정확도, 정밀도, F1 Score까지

선형회귀와 로지스틱 회귀 – 가장 기초적인 예측 모델들

지도학습 vs 비지도학습 – 머신러닝의 대표 학습 방식 비교