yolov8 모델의 inference를 위한 입력 데이터 전처리 시 고려해야할 사항 (ultralytics 환경에서는 preprocessing 과정을 제공함)
입력 데이터 고려해야할 것
- ultralytics python 라이브러리에서는 preprocessing 과정으로 자동으로 데이터를 전처리하지만, c++와 같은 직접 inference 파이프라인을 구현하는 상황에서 입력 데이터의 전처리 과정
1. Normalization
- 입력 데이터(영상)를 [0,255] → [0, 1] 범위로 정규화함
- 일반적으로
hef
컴파일 시 양자화 단계에서 수행하도록 설정하므로 hailo에서 실행됨 - 따라서, inference 코드에서 중복으로 정규화 작업을 하지 않도록 주의
2. Letter Box
- YOLO 모델은 정방형(ex. 640x640) 데이터 입력을 가정하여 컨볼루션 네트워크가 구성되므로, 학습 시 입력데이터의 가로세로 비율을 유지하며 정방형 데이터로 만들기 위해 레터박스(패딩)를 추가함
- 양자화 및 추론 시에도 일관성있는 데이터 입력을 위해 모델 입력 사이즈에 맞게 resize 후 레터박스 추가 해야함
- 참고: (Hailo) YOLOv8 모델 입출력 데이터 처리
3. Color Type (RGB vs BGR)
- 일반적으로 모델은 RGB 형식으로 학습됨
- OpenCV로 이미지를 로드한 경우 컬러 포맷은 BGR이므로 RGB로 변환 후 입력 데이터로 사용함