yolox 학습 커맨드 입력시 cache 옵션을 사용하면 augmentation 이미지를 미리 생성하여 인덱싱한다.
학습전 원본 db의 사이즈보다 큰 array 파일이 생성된다.
모델 입력 size를 변경하거나, cahce array를 삭제하지 않으면 동일한 aug 데이터셋을 불러오기때문에, 하이퍼 파라미터 실험결과를 분석하기에 좋다.
yolox에서는 다양한 사이즈 오브젝트를 검출하기위해 multi scale training 기능이 적용되었다.(기본설정)
10 iteration 마다 랜덤 적용된다.
이미지의 종횡비 사이즈 중 한쪽에 맞춰 스케일링 되므로, 종횡비, 입력이미지의 사이즈에 때라 최대/최소 크기 비가 다를 수 있다.
입력 사이즈에 따른 멀티스케일 input size를 테이블로 정리해 보았다.
모델이 640x640 정방형인데, 카메라가 비정방형인 경우 아래와 같이 이미지 하단에 패딩으로 인해 비효율적이다.
coco 데이터셋과 같이 다양한 해상도의 DB인 경우 어쩔 수 없지만,
(yolov5의 경우 rectangle 학습으로 비정방형의 경우 32배수로 잘라 학습속도를 개선할 수 있음, 이 기능 마저도 mosaic 적용시에는 복잡한 후처리가 필요함)
추론 시 처리할 이미지가 고정이미지인 경우 학습이미지를 입력이미지 해상도와 맞춰주는 것이 좋다.(단, 이미지 비율을 유지하면서)
3가지 처리방법이 있다.
1) 종횡비가 바뀌더라도 모델 입력 사이즈에 맞게 resize하도록 코드 수정
2) 모델 입력 사이즈를 (640x512)로 db에 맞게 조정
3) db를 640x640으로 오프라인 resize
3번 방식을 채택하여 적용하였다.