/semantic-segmentation-level2-cv-03

semantic-segmentation-level2-cv-03 created by GitHub Classroom

Primary LanguageJupyter Notebook


1. Introduction


본 과정은 NAVER Connect 재단 주관으로 인공지능과 딥러닝 Production의 End-to-End를 명확히 학습하고 실무에서 구현할 수 있도록 훈련하는 약 5개월간의 교육과정입니다. 전체 과정은 이론과정(U-stage, 5주)와 실무기반 프로젝트(P-stage, 15주)로 구성되어 있으며, 세 번째 대회인 Semantic Segmatation과제에 대한 Level2 - 03조 의 문제해결방법을 기록합니다.


🧙‍♀️ Dobbyision - 도비도비전잘한다

”도비도 비전을 잘합니다”

🔅 Members

김지수 박승찬 박준수 배지연 이승현 임문경 장석우
image1 image2 image3 image4 image5 image6 image7
Github Github Github Github Github Github Github

🔅 Contribution

  • 김지수   Modeling • Data Augmentation
  • 박승찬   Modeling • Cross-Validation
  • 박준수   Modeling • Data Augmentation
  • 배지연   Modeling • EDA
  • 이승현   Modeling • Cross-Validation
  • 임문경   Modeling • Model Augmentation
  • 장석우   Modeling • Pseudo Labeling

2. Project Outline

competition_title

  • Task : Semantic Segmantation
  • Date : 2021.10.18 - 2021.11.4 (3 weeks)
  • Description : 쓰레기 사진을 입력받아서 일반 쓰레기, 플라스틱, 종이, 유리 등를 추측하여 10개의 class에 해당하는 객체의 영역을 구합니다.
  • Image Resolution : (512 x 512)
  • Train : 3,272
  • Test : 819

🏆 Final Score


3. Solution

process

KEY POINT

  • mmsegmantation을 활용하여 실험 환경을 구축합니다.
  • 모델이 학습하기 어려워하는 클래스의 예측률을 높일 수 있는 조건을 찾아갑니다.
  • 객체 안의 작은 점들이 노이즈로 작동하지 않도록 전처리 했습니다.
  • Loss, Augmentation, lr scheduler 등을 하나씩 바꾸고 각 기능의 효과를 분석하여 최적의 조건을 찾아갔습니다.

    → 검증된 모델의 실험을 기반으로 backbone을 다양하게 확보하여 앙상블을 통한 일반화 성능 향상을 추구합니다.

Checklist

  • Data Curation
  • Test Time Augmentation
  • Loss - Cross entropy
  • Ensemble(BEiT, UperSwinB, OCR+DyUnetCBAM3)
  • Background patches
  • Oversampling for class imbalance problem
  • Pseudo labeling
  • Cutmix
  • Straified k-fold
  • Change backbone model
  • Post Processing

Evaluation

Method single K-fold Pseudo Labeling Total
BEiT 0.758 - 0.771 -
UperSwinB 0.738 0.743 - -
OCR+DyUnetCBAM3 0.758 0.768 - 0.769
Ensemble - - - 0.775

4. How to Use

.
├──/dataset
|   ├── train.json
|   ├── test.json
|   ├── /train
|   ├── /test
├──/semantic-segmentation-level2-cv-03
│   ├── model1
│         ├── config.py
│         └── readme.md
│   ├── model2
│         ├── config.py
│         └── readme.md
  • model안에는 각각 config.pyreadme.md가 들어있습니다
  • 사용자는 전체 코드를 내려받은 후 설명서에 따라 옵션을 지정하여 개별 라이브러리의 모델을 활용할 수 있습니다
  • 각 라이브러리의 구성요소는 readme.md에서 확인할 수 있습니다