본 프로젝트는 현대 사회의 쓰레기 처리 문제와 환경 위기에 대응하기 위해 2차원 이미지 기반의 쓰레기 분류 모델을 개발을 목표로 함. EDA를 통해 데이터 품질 및 클래스 간 불균형 문제를 파악함. 이를 해결하고자 전략적 학습 데이터 분류, 데이터 정제, 데이터 증강, 초해상도, 디블러링, 클래스 재분류, 다양한 모델 학습 및 앙상블 등의 전략 수립 후 각 실험을 탐색적으로 수행 후 각 전략에 대한 결과를 비교 분석함. 이 중 가장 유의미한 결과를 얻은 전략을 최종적으로 적용하여 최종 2위의 성적을 거둠.
Test dataset(Public)
Test dataset(Private)
Example image data w/ 2D Bounding Boxes, annotation data
- Images & Size : (Train), 4871 (Test), (1024, 1024)
- classes : General trash, Paper, Paper pack, Metal, Glass, Plastic, Styrofoam, Plastic bag, Battery, Clothing
김민윤 |
김채아 |
배종욱 |
박찬종 |
조명현 |
최시현 |
Name | Roles |
---|---|
Common | EDA, Data Relabeling, SGK-Fold, 모델 학습, 아이디어 검증 |
김민윤 | MMDetection 모델 baseline 작성, 모델 실험 및 평가 |
김채아 | Deblurring, Super Resolution |
배종욱 | 프로젝트 기획, General class reclassifcation, Super Resolution |
박찬종 | Framework 별 Baseline 작성, RandAugment 실험, 모델 실험 및 평가 |
조명현 | wandb 세팅, General trash class reclassification |
최시현 | MMDetection 모델 실험, Augmentation 실험, Ensemble 실험 |
- Language: Python 3.10
- Hardwares: Intel(R) Xeon(R) Gold 5120, Tesla V100-SXM2 32GB × 6
- Framework: Pytorch, Detectron2 v0.6, Ultralytics v8.1, MMDetection v3.3.0
- Cowork Tools: Github, Weight and Bias, Notion, Discord, Zoom, Google calendar
- Labeling Tool: Supervisely
Distribution of Bbox area as % of Image area by class
- 전체 데이터에서 Paper, Plastic bag, General trash가 높은 비율을 차지하고 있으며 데이터의 분포가 불균형을 이룸
- 각 클래스 별 객체의 크기 분포는 작은 순으로 큰 객체로 갈 수록 줄어듦
Object Bounding Box distribution of each class
- 이미지 상의 객체들이 이미지의 중심부에 주로 위치하고 있음
Pipeline of Applied Methods
- 데이터 시각화를 통해 다수의 레이블 오류가 발견되어 Supervisely를 활용해 데이터 레이블 수정 후 실험 진행
- 실험 결과 수정한 데이터셋이 기존의 데이터셋보다 낮은 성능 결과를 보임
- 이는 Test dataset과 train dataset 모두 유사한 오류 경향성을 가지는 것으로 추정되어 수정하지 않은 Original dataset으로 이후 실험을 진행
Dataset | Model | Backbone | mAP_50(Val) | mAP_50(Test) |
---|---|---|---|---|
Original | Dino | Swin-l | 0.716 | 0.6938 |
Relabeled | Dino | Swin-l | 0.582 | 0.6488 |
Annotation per class in Class-20 Train Dataset
- EDA를 통해 General Trash 클래스 이미지들이 다양한 객체로 이루어져 있음을 발견
- General Trash 클래스를 10개의 클래스로 추가 분류하여 총20개의 클래스로 이루어진 Class-20 데이터셋으로 재구성함
- Class-20의 General trash 클래스 중 높은 mAP를 보인 3개의 클래스를 선정해 12개의 클래스로 이루어진 Class-12, 13개의 클래스로 이루어진 Class-13 데이터셋으로 재구성함
- 실험 결과 클래스를 추가하여 검출한 경우보다 기존의 Original 성능과 비슷하거나 낮음
- 이는 General class에 다양한 종류의 객체들이 있음에도 불구하고 모델이 충분히 학습 및 추론이 가능한 것으로 판단
Dataset | Model | Backbone | Epochs | mAP_50(Test) |
---|---|---|---|---|
Original | Dino | Swin-l | 23 | 0.717 |
Class-20 | Dino | Swin-l | 23 | 0.679 |
Class-12 | Dino | Swin-l | 23 | 0.673 |
Class-13 | Dino | Swin-l | 23 | 0.711 |
- EDA를 통해 Train 및 Test dataset에 blur image 다수 발견함
- 이를 분류 한 결과 Train 21.89% Test 22.02% blurred image 존재함
- 이들을 deblurr를 통해 보정 후 학습에 사용하였으나 유의미한 성능 향상 없음
Dataset | Model | Backbone | mAP_50(Val) | mAP_50(Test) |
---|---|---|---|---|
Original | Dino | Swin-l | 0.716 | 0.6938 |
Deblurred | Dino | Swin-l | 0.704 | 0.6825 |
- EDA를 통해 작고 흐릿한 이미지들을 다수 발견함
- Enhanced Deep Residual Networks for Single Image Super-Resolution에 제안된 SR 기법을 적용하여 2배 해상도의 이미지로 변환함
- 해당 이미지를 Center-crop 또는 Multi-crop 수행한 뒤 이를 기존 데이터셋과 합께 학습 데이터로 활용함
- 실험 결과 1개의 이미지만 추가로 사용하는 Center-crop에 비해 4배의 학습 데이터를 사용하는 Multi-crop 방식에서 높은 성능 개선을 확인할 수 있음
Center-Crop
Multi-Crop
Dataset | Model | Backbone | Epoch | mAP_50(Val) | mAP_50(Test) |
---|---|---|---|---|---|
Original | DINO | Swin-l | 20 | 0.731 | 0.7172 |
Original+SR(Center-Crop) | DINO | Swin-l | 25 | 0.802 | 0.721 |
Original+SR(Multi-Crop) | DINO | Swin-l | 25 | 0.817 | 0.7398 |
- 객체들의 크기 및 위치를 고려했을 때 RandomResize, RandomCrop, RandomAugment 방법을 적용했을 때 성능 개선을 기대함
- 학습시 모델의 일반화를 높이기 위한 방법으로 다양한 증강 기법을 적용한 뒤, 여러 평가 지표를 기반으로 증강 기법을 선정함
- 기하학적 변환을 적용할 경우 IoU 임계값에 따라 mAP가 크게 달라지는 경향을 보여줌
- 색상 변환에 대한 RandAugment 기법을 적용한 결과 강건하고 높은 성능 향상을 보여줌
Augmentation | Info | mAP_50(Val) |
---|---|---|
None | - | 0.554 |
RandomCrop | RandomCrop | 0.565 |
RandomCenterCropPad | CenterCrop + pad | 0.568 |
RandomAffine | Geometric transformation | 0.561 |
PhotoMetricDistortion | Color Jitter | 0.564 |
RandAugment | Color transformation | 0.571 |
- 1-stage, 2-stage 모델부터 레거시 및 최신 모델을 활용함
- YOLO 등의 1-stage 모델의 경우 낮은 객체 검출 성능을 보임
- 최근 연구로 제안된 DINO, Co-Detr과 같은 모델들을 학습 및 평가함
Frameworks : Detectron2 v0.6, Ultralytics v8.1, mmDetection v3.3.0
- Confusion Matrix로 모델별 특징을 파악하여 모델 조합을 판단함
- WBF (Weighted Box Fusion) 기법 적용 하였으나 유의미한 성능 향상 없음
- 단일 모델의 성능이 앙상블 기법보다 높음
Models | Average mAP_50(Val) | Ensemble mAP_50(Test) |
---|---|---|
YOLO + Cascade (R50 + ConvNeXt) | 0.5123 | 0.6061 |
DINO + DDQ + Co-detr | 0.6761 | 0.5911 |
mAP_50 Test dataset(Public)