[Naver Boost Camp] Week 11 ObjectDetection Competition 후기
▶️ 나는 내 학습목표 달성을 위해 무엇을 어떻게 했는가?
Nohup, Shell Script 사용하는 법 등에 대해 학습하여, 최대한 유휴시간 없이 실험이 돌아갈 수 있도록 하였다.
▶️ 나는 어떤 방식으로 모델을 개선했는가?
최대한 많은 실험을 해보기 위해, 4 epochs 기준 12분이 걸리는 MMDetection의 2Stage Model (Faster-RCNN) 보다 4 epochs 기준 2분 이내로 걸리는 Yolov8s 를 우선적으로 사용하였다.
Yolov8s를 통해 데이터 특징들을 살펴보면서, 무작위로 최대한의 Augmentation을 적용시켜 테스트해보았고, 이를 토대로 인사이트를 뽑아내었다. 이후 모델 리서치를 통해, Cascade RCNN을 모델로 채택하였고, 초반에는 ResNet101 을 백본으로 사용하여 이전에 얻은 인사이트를 적용시켜 Augmentation 실험을 진행볼 수 있었다. 성능이 잘 나오는 Dino Model과의 차이가 무엇일지 고민하였고, 백본의 차이가 아닐까 싶어 ImageNet 22K Pretrained Swin-L 백본으로 교체하여 성능을 높일 수 있었다. Yolov8에서 Loss 가중치를 높이니 성능이 증가하였다는 팀원의 말을 듣고, Cascade에서 또한 Loss 가중치를 높여 적용하여 성능을 개선시킬 수 있었다.
라벨링 가이드에 따라 교정한 Cleansing Data를 사용한 결과, Faster-RCNN의 점수가 높아졌다는 팀원의 말을 듣고, 마찬가지로 데이터를 변경, Cascade-RCNN 최종 모델을 만들어낼 수 있었다.
▶️ 내가 한 행동의 결과로 어떤 지점을 달성하고, 어떤 깨달음을 얻었는가?
개개인의 실험이 유기적으로 연결되어 최종 모델에 기여할 수 있도록 하였다.
- 팀원들이 각자 어떠한 실험을 진행하고 있는지 최대한 파악하고자 하였고, 그 결과 현재 필요한 Task가 무엇인지 알 수 있었고, 제안할 수 있었다.
- 최종 모델 국면에서는, 팀원들의 GPU 상태가 어떠한지 최대한 파악하고자 하였다. 각자의 실험 진행 상황과 앞으로의 실험에 대해 슬랙으로 전달하여, 유휴 GPU가 발생하지 않도록 조정할 수 있었다.
- 앙상블 진행과정을 화면 공유하여, 팀원이 다같이 모니터링 할 수 있도록 하였다. Submission CSV 파일을 같이 열어보고, 앙상블 전략을 가다듬을 수 있었으며 최대한 팀원 전원의 의견을 반영할 수 있었다.
개개인이 진행한 모든 실험이 레고 블럭과도 같이 최종 국면에서 연결되는 것을 볼 수 있었고, 효과적인 팀업을 위한 전체적인 구조와 프로세스를 경험해볼 수 있었다.
▶️ 전과 비교하여 새롭게 시도한 변화는 무엇이고, 어떤 효과가 있었는가?
이전 대회에서 github과 Baseline Template 직접 만들기에 집중한 것과 달리, 금번 대회에서는 프로젝트 자체의 완성도에 집중하였다. 그 결과 전체적인 파이프라인 및 프로젝트에 필수적인 과업들을 정리할 수 있었고, 팀원들에게 타임라인에 맞춘 선택과 집중을 강조할 수 있었다. 그 결과 우리는 기획한 프로젝트 전 과정을 진행해볼 수 있었고, 이 점이 다른 팀과의 유의미한 차이가 되었다고 생각한다.
▶️ 마주한 한계는 무엇이며, 아쉬웠던 점은 무엇인가, 이를 바탕으로 다음 프로젝트에서 시도해볼 것은?
초반의 EDA 단계가 많이 막막하였다. 무엇을 보아야할지 확신이 없었고, 이를 리서치하는 과정에서 약 2일 정도의 시간이 그냥 지나갔었다. 그러나 팀원분들이 필요한 EDA를 너무 잘해줬고 이를 통해 많이 배웠기 때문에 다음번 프로젝트에서는 더 잘 할 수 있을 것 같다.
( Object Detection을 수행하게 된다면, 먼저 Class 분포, Box 분포, 이미지 당 객체 분포, Box Ratio, Box CenterPoint 분포, 사전 학습된 모델을 통해 Train/Test 분포 확인 등의 기본적인 EDA를 진행하고, 이후의 EDA는 모델 학습을 통해 도출되는 결과를 기반으로 진행할 것이다. )