재활용 품목 분류는 수작업으로 이루어질 경우 시간이 많이 소요되고, 사람의 실수로 인해 분류 정확도가 떨어질 수 있다. 본 프로젝트는 객체 탐지 기술을 활용하여 재활용 품목(General trash, Paper, Plastic 등)을 자동으로 탐지하고 분류함으로써, 효율적이고 정확한 분리배출 시스템을 구축하는 것을 목표로 한다.
- COCO 형식의 재활용 품목 데이터셋에서 10개 클래스(General trash, Paper 등)를 정확히 탐지하는 객체 탐지 모델 개발.
- 성능 지표로 [email protected]:0.95 ≥ 0.5 달성 및 IoU ≥ 0.7 목표.
- 초기에는 CO-DETR(Transformer 기반 모델)을 고려했으나, 학습 및 추론 시간이 오래 걸려 테스트가 어려운 점을 감안해, 경량화와 실시간 처리에 강점이 있는 YOLOv11n으로 진행 방향을 전환
- 데이터셋
- COCO (Common Objects in Context)
- 클래스 개수
- class(10) : [ General trash, Paper, Paper pack, Metal, Glass, Plastic, Styrofoam, Plastic bag, Battery, Clothing ]
- 이미지 크기
- height: 1024
- width: 1024
- 어노테이션 형식
- COCO JSON
2. 데이터 탐색(EDA link)
- 중복 이미지 및 잘못된 라벨링 확인
- 너무 작은 객체 및 잘린 객체 분석
- 바운딩 박스 위치 분포
-
2.1 ~ 2.3를 참고하여 데이터 정제
-
담배꽁초는 라벨링이 되어 있지 않아 제외
-
0001, 0038, 0051, 0069, 0071, 0120, 0147, 0160, 0164, 0186, 0189, 0208, 0752, 1557, 1670, 1941, 1954, 2381, 2431, 2434, 2491, 2555, 2561, 2610, 2622, 2656, 2675, 2965, 2978, 3024, 3044, 3078, 3088, 3100, 3126, 3131, 3161, 3170, 3476, 3492, 3511, 3531, 3786, 3821, 3874, 4097, 4139, 4233, 4242, 4246, 4280, 4358
-
-
라벨 제거 및 추가
-
잘못된 라벨 정제
- Train/Validation/check 비율: 70/15/15 (check: class wise 용도)
- Stratified Split 적용 (클래스별 샘플 개수 균형 고려)
- 목적: 데이터셋의 객체 크기와 종횡비를 기반으로 YOLO 모델의 앵커 박스를 최적화.
- 방법: 데이터셋의 바운딩 박스 분포를 분석하여 사전 정의된 앵커 박스를 튜닝.
anchors:
[75.08939902, 69.50222697, 162.38635929, 166.20860914, 346.43648184, 189.85621415] # P3/8
[230.93618444, 347.09457937, 281.05258752, 579.09482496, 478.85510678, 372.36021356] # P4/16
[749.27767768, 418.93633634, 516.2599182, 691.93343558, 874.50543478, 810.12217391] # P5/32
[925, 792, 739, 380, 436, 615] # P6/64
-
기본 변환: 크롭, 좌우 반전, 밝기 조절
-
객체 보존 증강: CutMix, MixUp, Mosaic 적용
-
라이브러리 활용: Albumentations
-
커리큘럼 러닝: 점차 어려운 증강 적용 easy - 기본 학습률, Mosaic, 밝기 대비 조정 학습 단계 요약
-
Easy: 기본 객체 인식 학습
- Epochs: 10, 이미지 크기: 640, 배치: 8
- 학습률: 0.002, Mosaic: 0.2, Flipud: 0.5, HSV 조정: 0.2
-
Medium: 중간 복잡도 데이터로 일반화 강화
- Epochs: 10, 이미지 크기: 832, 배치: 8
- 학습률: 0.002, Mosaic: 0.3, Mixup: 0.2, Rotate: ±15°, 기타 증강 추가
-
Hard: 복잡한 상황 대응 학습
- Epochs: 10, 이미지 크기: 1024, 배치: 8
- 학습률: 0.001, Mosaic: 0.5, Mixup: 0.3, Rotate: ±30°, 강한 증강 적용
-
- CO-DETR: Swin-Large 백본으로 높은 정확도 제공, 다만 연산 비용이 높아 실시간 활용에는 제약
- YOLOv11n: 경량화된 구조로 실시간 처리(FPS 30 이상) 가능, GPU(T4)에서 학습 가능
- YOLO11n을 기본 모델로 설정하여 성능 비교 실험 진행.
| Model | mAP |
|---|---|
| CO-DETR O365 Cleansing | 0.7373 |
| YOLO11n | 0.3814 |
| YOLO11n Cleansing + Curriculum Learning | 0.4783 |
| YOLO11n_TTA | 0.3944 |
| YOLO11n Cleansing + Curriculum Learning + TTA | 0.5271 |
- CO-DETR O365 cleansing: 데이터 클렌징과 Objects365 데이터셋으로 사전 학습 활용해 mAP 0.7373으로 최고 성능을 기록
- YOLO11n: YOLO11n 모델은 소규모 데이터셋으로 학습되어 Validation mAP가 0.3814로 낮은 성능을 보임
- YOLO11n Cleansing + Curriculum Learning: 데이터 클렌징과 커리큘럼 러닝 기법을 적용하여 mAP가 0.4783으로 개선되어 일반화 성능이 향상 (Threshold 조정)
- YOLO11n_TTA: TTA(Test-Time Augmentation) 적용하여 mAP 0.3944으로 개선 (Threshold 조정)
- YOLO11n Cleansing + Curriculum Learning + TTA: 데이터 클렌징과 커리큘럼 러닝 기법, TTA를 적용하여 YOLO11n 최고 성능 0.5271으로 개선 (Threshold 조정)
- CO-DETR O365: 대규모 사전 학습(OpenImages 365)을 사용해 mAP 0.7373으로 최고 성능을 기록.
- YOLO11n은 소규모 데이터셋에서 과적합 경향(Validation mAP 0.3814) 보임. Cleansing과 Curriculum Learning으로 일반화 개선(0.4783).
- TTA는 소폭 향상(0.3944)했으나, 계산 비용 증가로 실시간성 저하.
- 앙상블: 서로 다른 구조나 학습 조건을 가진 모델들을 조합하여 단일 모델의 한계를 보완하고, 보다 robust한 결과를 도출하는 것을 목표
- class wise: 데이터를 Train/Validation/Check로 나눈 후, Check 데이터에서 클래스별로 높은 점수를 기록한 모델을 선별해 앙상블하려 함
- 모델 학습 시간이 길어 시간 부족으로 인해 구현하지 못함
| 모델 조합 | 비율 | mAP |
|---|---|---|
| WBF (O365 + Codino + YOLO) | 1.5:1.5:1 | 0.7339 |
| WBF (O365 + Codino) | 2:1 | 0.7341 |
| WBF (O365 + YOLO + WBF(0.7341) ) | 1.5:1:1.3 | 0.7297 |
| WBF (O365 + Codino) | 1:1 | 0.7297 |
| WBF (O365 + YOLO11n) | 2:1 | 0.7180 |
| WBF (O365 + YOLO11n_TTA) | 2:1 | 0.6490 |
- 하드웨어: Google Colab Pro, NVIDIA L4 GPU (24GB VRAM), 32GB RAM.
- 소프트웨어: PyTorch 2.0, Albumentations 1.3, Python 3.9.
- 탐지율 저하:
General trash와Metal클래스의 탐지율이 낮음(mAP 0.3 이하). 주요 원인은 작은 객체(예: 50x50 픽셀 미만)가 많아 모델이 이를 인식하는 데 어려움이 있음. - 소수 클래스 문제:
Battery와 같은 소수 클래스의 낮은 탐지율이 여전히 해결되지 않은 과제로 남아 있음.
- 클래스별 가중치 조정:
General trash와Metal클래스의 작은 객체에 대해 손실 함수 가중치를 높여 탐지율을 개선할 계획. - 모델 경량화:
Pruning과Quantization기법을 적용하여 모델 크기와 연산 비용을 줄이고, 실시간 성능을 향상. - 데이터셋 강화: 작은 객체를 포함한 추가 데이터를 수집하고, 다양한 증강 기법을 통해 모델의 일반화 능력을 강화.










