9주차부터 11주차까지 3주에 걸쳐 Object Detection 대회가 진행되었다. 이 대회를 시작으로 앞으로 계속 3개의 대회가 연속으로 진행된다.
바야흐로 대량 생산, 대량 소비의 시대. 우리는 많은 물건이 대량으로 생산되고, 소비되는 시대를 살고 있습니다. 하지만 이러한 문화는 '쓰레기 대란', '매립지 부족'과 같은 여러 사회 문제를 낳고 있습니다.
분리수거는 이러한 환경 부담을 줄일 수 있는 방법 중 하나입니다. 잘 분리배출 된 쓰레기는 자원으로서 가치를 인정받아 재활용되지만, 잘못 분리배출 되면 그대로 폐기물로 분류되어 매립 또는 소각되기 때문입니다.
따라서 우리는 사진에서 쓰레기를 Detection 하는 모델을 만들어 이러한 문제점을 해결해보고자 합니다. 문제 해결을 위한 데이터셋으로는 일반 쓰레기, 플라스틱, 종이, 유리 등 10 종류의 쓰레기가 찍힌 사진 데이터셋이 제공됩니다.
여러분에 의해 만들어진 우수한 성능의 모델은 쓰레기장에 설치되어 정확한 분리수거를 돕거나, 어린아이들의 분리수거 교육 등에 사용될 수 있을 것입니다. 부디 지구를 위기로부터 구해주세요! 🌎
Input : 쓰레기 객체가 담긴 이미지가 모델의 인풋으로 사용됩니다. 또한 bbox 정보(좌표, 카테고리)는 model 학습 시 사용이 됩니다. bbox annotation은 COCO format으로 제공됩니다. (COCO format에 대한 설명은 학습 데이터 개요를 참고해주세요.)
Output : 모델은 bbox 좌표, 카테고리, score 값을 리턴합니다. 이를 submission 양식에 맞게 csv 파일을 만들어 제출합니다.
데이터 개요
우리는 수많은 쓰레기를 배출하면서 지구의 환경파괴, 야생동물의 생계 위협 등 여러 문제를 겪고 있습니다. 이러한 문제는 쓰레기를 줍는 드론, 쓰레기 배출 방지 비디오 감시, 인간의 쓰레기 분류를 돕는 AR 기술과 같은 여러 기술을 통해서 조금이나마 개선이 가능합니다.
제공되는 이 데이터셋은 위의 기술을 뒷받침하는 쓰레기를 판별하는 모델을 학습할 수 있게 해줍니다.
데이터셋 통계
전체 이미지 개수 : 9754장
10 class : General trash, Paper, Paper pack, Metal, Glass, Plastic, Styrofoam, Plastic bag, Battery, Clothing
이미지 크기 : (1024, 1024)
Annotation file
annotation file은 coco format 으로 이루어져 있습니다.
coco format은 크게 2가지 (images, annotations)의 정보를 가지고 있습니다.
- images :
- id : 파일 안에서 image 고유 id, ex) 1
- height : 1024
- width : 1024
- filename : ex) train/0002.jpg
- annotations :
- id : 파일 안에 annotation 고유 id, ex) 1
- bbox : 객체가 존재하는 박스의 좌표 (xmin, ymin, w, h)
- area : 객체가 존재하는 박스의 크기
- category_id : 객체가 해당하는 class의 id
- image_id : annotation이 표시된 이미지 고유 id
- 이미지 당 annotation 수
이미지가 대체로 적은 수의 annotation을 가짐. 간혹 하나의 이미지에 지나치게 많은 annotation이 존재하기도 한다는 것을 알 수 있음.
- 하나의 이미지가 가지는 class 수 분포
최소 1가지 종류의 class만 포함된 이미지가 가장 많고 최대 7가지 class를 포함한 이미지가 있음.
- Class 당 annotation 분포
General trash, Paper, Plastic bag의 비율이 매우 높은 반면, Battery의 비율이 굉장히 낮음을 알 수 있음.
- Bounding Box의 크기 비율
대체로 이미지의 0~10% 정도의 크기를 차지한다는 것을 알 수 있음.
- Bounding Box의 위치 분포
대체로 Bounding Box는 이미지의 중앙 부분에 위치한다는 것을 알 수 있음.
- Class별 Bounding Box의 width/height 비율 분포
비율이 1.0~1.5 사이인 것으로 보아 대체로 정사각형에 가깝거나 가로가 약간 긴 모양의 Bounding Box를 가지고 있음.
나는 주로 2stage model들을 위주로 실험을 진행하였다. 아무래도 real-time detection을 하는 것이 아니기 때문에 2stage detector가 더 안정적인 성능을 보일 것이라고 생각하였다. 또한 1stage detector와의 앙상블을 통해 성능을 올려보고자 하였다.
Baseline 모델을 학습시킨 후 결과를 확인해 보았을 때, 과도하게 많은 예측 bbox가 존재함을 알 수 있었다. 이에 따라 많은 False Positive가 존재할 것이라고 생각하였고, 이를 줄이기 위해 Cascade RCNN 기반의 모델들을 사용하기로 하였다.
EDA 결과 bbox의 크기가 대체로 이미지에 비해 작은 크기를 가지고 있어 큰 input image size를 사용하는 것이 작은 크기의 객체들을 탐지하는데 유리하다고 생각하였다. 그에 따라 무거운 모델을 사용하는 것이 좋을 것이라고 생각하여 나는 다음과 같은 두 모델을 사용해보았다.
Mosiac | RandomCrop | ColorTransform | Paste In |
---|---|---|---|
Mosaic Augmentation을 활용하여 모델의 성능을 향상시켰다.
- Mosaic이란? : 여러장의 이미지에서 각 부분을 잘라 붙여 하나의 이미지로 만들어 학습을 시키는 Augmentation 방법
RandomCrop을 활용하여 모델의 성능을 향상시켰다.
최종 성능을 높이기 위해 성능이 좋았던 여러 모델들을 Ensemble하는 과정을 거쳤다.
Weighted Boxes Fusion이라는 앙상블 방법을 사용하였다.
- Weighted Boxes Fusion : 예측의 일부를 단순히 제거하는 NMS, Soft-NMS 방식과 달리, WBF는 예측된 모든 사각형을 사용하므로, 결합된 사각형의 품질이 크게 향상시킨다.
출처 - https://lv99.tistory.com/74
Soft-NMS
모델을 앙상블 하는 과정에서 Soft-NMS를 활용해보고자 하였다.
- Soft-NMS란? : 기존 NMS는 가장 높은 confidence를 가지는 bbox를 찾고, 같은 클래스 인 bbox들 중 겹치는 영역이 일정 비율 이상인 (iou > threshold) bbox 를 제거해서 중복된 detection 결과를 없앤다. 이러한 hard NMS 방식은 실제로 존재하는 object 를 제거함으로써 mAP 가 낮아지는 문제가 있다. 그래서 일정 비율 이상인 (iou > threshold) 겹치는 bbox 들의 confidence를 0으로 만들어 없애지 말고, confidence 를 줄여서 최종 mAP 를 향상 시키자는 개념이다.
출처 - https://eehoeskrap.tistory.com/407
이러한 Soft-NMS를 활용하여 mAP를 높이고자 하였으나 오히려 큰 폭으로 점수가 낮아졌다. 우리의 예측 모델은 이미 Ground Truth에 비해 많은 bbox를 예측하고 있었고, 그런 모델들을 Soft-NMS를 통해 앙상블을 하려다보니 오히려 잘못된 bbox 또한 많이 남게되어 mAP가 낮아진 것 같다.
MixUp
Detection 논문들에서 MixUp을 통해 성능 향상을 이루었다는 이야기가 많아 MixUp을 시도해보았다. 하지만 Augmentation을 하는 과정에서 MixUp을 시도해보았을 때, 모델의 성능 향상을 이끌어내지는 못했다. 대부분의 bbox가 가운데에 위치하여 있고 또한 Paper와 PaperPack과 같이 비슷한 특성의 class가 있다보니 오히려 분류하는데 혼동을 크게 주어 점수가 떨어졌을 것이라고 생각했다.
Confusion Matrix
Cascade ResNet152 | Cascade ResNest200 | Cascade Swin-T | UniverseNet | Yolov7x |
---|---|---|---|---|
Metric : mAP50
Cascade ResNet152 | Cascade ResNest200 | Cascade Swin-T | UniverseNet | Yolov7x |
---|---|---|---|---|
0.5173 | 0.5092 | 0.5292 | 0.5665 | 0.5374 |
Ensemble
Ensemble Weight Box Fusion |
---|
0.6258 |
재활용 품목 분류를 위한 Object Detection 대회 - 팀 GitHub Repository
https://github.com/boostcampaitech4lv23cv2/level2_objectdetection_cv-level2-cv-09