해당 포스팅은 네이버 부스트캠프 P-stage를 위해 개인 학습 내용을 정리했습니다.
Competition을 하다보니, 하루 하루 정리하기가 어려워서 주말을 활용해서 작성했습니다.
1. 실행 내용
1) mmDetection 라이브러리 이해하기
Object Detection에서는 mmdetection이라는 라이브러리를 사용해서 다양한 모델을 학습시킬 수 있습니다. 최근에 만들어진 새로운 모델들도 최대한 지원하려고 하고 있으며, config를 수정해서 쉽게 접근할 수 있습니다. 쉬운 만큼 폴더 구조나 구성이 어떻게 되는지를 충분하게 이해할 필요가 있습니다. 모델이 학습하기 위해서는 dataset.py, default_runtime.py, schedule.py, model.py가 필요합니다. dataset은 학습하고자 하는 데이터를 불러오고, augmentation에 대한 정보가 포함되어 있습니다. default_runtime에는 checkpoint에 대한 정보, log_config 이외에도 학습에 필요한 기본적인 정보들을 포함하고 있습니다. schedule에서는 optimizer 설정, lr schedule, max epoch을 설정하실 수 있습니다. model.py는 학습하려고 하는 모델에 대한 정보들을 포함하고 있습니다. model.py에 _base_에 위에서 언급했던 dataset.py, default_runtime.py, schedule.py를 포함해야 합니다.
2) 모델 다양하게 학습하기
3가지 종류의 모델을 학습해봤습니다. Faster_rcnn, DetectoRS, Swin Transformer를 사용해보니 확실히 성능의 차이가 있었습니다. DetectoRS와 Swin Transformer는 Object Detection 분야에서 준수한 성능을 보여주고 있었습니다. 성능은 Swin Transformer - DetectoRS - Faster_rcnn 순으로 좋았습니다. 학습은 Faster_rcnn - Swin Transformer - DetectoRS 순으로 빨랐습니다. 주로 논문에서 적용한 내용을 최대한 적용하려고 했으나, 논문에서는 모든 파라미터에 대해서 설명하지는 않고 있습니다.
3) 시각화 파일 만들기
아무래도 segmentation 대회와 비교해서 어떻게 bbox가 생성되었는 지 확인하기 위해 이미지에서 가지고 있는 segmentation과 bbox를 이미지 위에 표현해서 비교해봤습니다. 비교한 결과 생각보다 bbox는 붙어있는 경우가 엄청 많이 존재했습니다. 작은 객체를 판단하기는 어려울 것 같다고 생각했습니다.
4) 살짝 의문이 드는 것
DetectoRS_HTC 모델의 논문에서는 instance mask와 bbox를 활용하고 있는데, 저희에게 주어진 데이터는 일반 mask와 bbox만 존재하고 있어서 이를 HTC에 활용이 가능한지 궁금합니다.
2. 앞으로 계획
앞으로 대회를 마치기까지 nms에 대해 시각화하는 코드를 만들어볼 예정입니다. 이를 통해, nms, soft_nms, wbf 등을 비교한 뒤에 사용해볼 예정입니다. 그리고 Swin-Transformer 모델을 최대한 성능을 끌어 올려볼 예정입니다.