최신 YOLO 모델에서 학습 및 추론 시 입력데이터를 전처리하는 과정 및 방법
YOLO 모델의 입력 데이터 전처리 과정
- YOLO(You Only Look Once) 모델에서 입력 데이터를 전처리하는 과정은 모델의 성능과 학습 안정성에 매우 중요한 역할을 합니다. YOLO 모델은 Object Detection 문제를 해결하기 위해 설계된 구조로, 이미지 데이터를 효과적으로 처리하기 위한 몇 가지 전처리 단계를 거친다.
1. 이미지 크기 조정 (Resizing)
- YOLO 모델은 고정된 입력 크기를 요구함 (예: YOLOv3의 경우 416×416 또는 608×608).
- 입력 이미지를 네트워크의 요구 크기로 리사이즈해야 한다.
- Aspect Ratio 유지 여부:
- 일반적으로 YOLO는 비율을 유지하지 않고 이미지를 고정 크기로 왜곡(rescale) 함.
- 일부 프레임워크에서는 패딩(padding)을 사용해 비율을 유지하면서 크기를 조정하기도 합니다.
- YOLOv5 이상은 패딩을 사용해 비율을 유지함. ((Hailo) YOLOv8 모델 입출력 데이터 처리)
2. 픽셀 값 정규화 (Normalization)
- YOLO 모델은 이미지의 픽셀 값을 [0, 1] 범위로 Min-Max Normalization 한다.
- 이 작업은 모델의 학습 속도를 높이고, 안정적인 학습을 보장함.
3. 데이터 증강 (Data Augmentation)
- 데이터 증강은 YOLO 모델에서 학습 데이터 다양성을 확보하고, 과적합(overfitting)을 방지하기 위해 매우 중요한 역할을 한다.
- 일반적으로 아래와 같은 증강 기법이 사용됨.
- 랜덤 크롭(Random Crop):
- 이미지 일부를 자르고, 객체가 포함된 패치를 중심으로 입력 크기에 맞게 다시 조정.
- 수평/수직 뒤집기 (Horizontal/Vertical Flip):
- 객체 탐지에서 좌우 대칭 이미지는 흔히 등장하므로 수평 뒤집기를 주로 사용.
- 색상 변환(Color Jitter):
- 이미지 밝기, 대비, 채도, 색조 등을 랜덤하게 조정.
- 랜덤 스케일(Random Scaling):
- 이미지 크기를 조정하고, 레이블(Bounding Box) 좌표도 적절히 변환.
- 랜덤 회전(Random Rotation):
- 작은 각도로 회전시키는 변환.
- Mosaic Augmentation (YOLOv4 이후 도입):
- 네 개의 이미지를 결합하여 하나의 학습 샘플로 만드는 기술.
- 작은 객체 탐지에 특히 효과적.
4. Bounding Box 정규화
- YOLO는 Bounding Box를 이미지 크기에 상대적인 좌표로 표현함.
- 아래와 같이 Bounding Box의 중심좌표(), 너비와 높이 () 를 이미지 크기에 대해 정규화함.
5. 채널 순서 변경 (RGB 또는 BGR)
- YOLO 모델은 일반적으로 RGB 형식의 이미지를 입력으로 받음.
- OpenCV를 사용해 데이터를 읽으면 기본적으로 BGR 형식으로 로드되므로, 이를 RGB로 변환해야 한다.
- Ultralytics 라이브러리에서는 Opencv BGR을 받아도 자동으로 RGB로 변환하여 입력됨