ChoiHongrok / Boostcamp-AI-Tech-image-classification

level1-image-classification-level1-cv-14 created by GitHub Classroom
0 stars 0 forks source link

[부스트캠프] level-01 Mask Classification 팀랩업리포트


CV 14조(김찬민_T3060, 김준_T3054, 조유진_T3208, 최홍록_T3228)

프로젝트 개요

● 프로젝트 주제: 마스크 착용 상태 분류

18(233)개의 클래스에 대해 예측하는 것이 목표

● 프로젝트 개요(프로젝트 구현 내용, 컨셉, 교육 내용과의 관련성 등)

● 활용 장비 및 재료(개발 환경, 협업 tool 등)

● 프로젝트 구조 및 사용 데이터셋의 구조도(연관도)

Untitled

Untitled1


프로젝트 팀 구성 및 역할

프로젝트 수행 절차 및 방법

실제로 모델링을 처음 하기 때문에 모델을 검증하고 개선하는 경험이 필요하다고 판단했다.

그래서 이번 프로젝트의 목적은 개인의 프로젝트 이해와 모델링에 익숙해지는 것이었다.

프로젝트의 수행 절차

  1. 각자 모델링 및 Data Augmentation, Optimizer 사용
  2. 각자 해본 Augmentation 기법, Scheduler등 여러가지 기법들 공유
  3. Git을 사용한 코드 공유
  4. 공유한 내용들 바탕으로 각자의 모델 개선
  5. 개선된 모델 중 좋은 성능을 보이는 모델 2개를 선정 및 결과 제출

최종 모델

  1. Pretrained ResNet152

    1. 세부 사항 Oversampling과 Tomek Links를 사용한 Data Augmentation Mix Up을 사용한 Data Augmentation AMP를 사용한 학습 시간 단축 NNI를 사용한 하이퍼 파라미터 튜닝
    2. 고려사항 데이터의 양이 적은 클래스를 Oversampling 하는 과정에서 Overfitting을 우려해 60세 이상의 이미지는 4배로 늘려주고 59세의 데이터를 60세로 바꾼 뒤 2배로 늘려줌 Mix Up을 사용할 때 일정 비율로 사용하지 않고 랜덤한 이미지와 랜덤한 비율로 데이터를 섞어서 써서 일반화가 잘 될 수 있게 함
    3. 개선 과정 ResNet18에서 Data Augmentation을 사용해 성능 향상 ResNet152로 모델의 크기를 키워서 성능 향상 NNI를 사용해 Loss Function 결정 Adam과 CosineAnnealingLR을 사용해 Local Minimum 탈출 도모
  2. ResNet18 + GoogLeNet (모델 분리)

    1. 세부 사항
      1. 마스크 착용 여부 예측 모델 : ResNet18 + Normalization
        1. ResNet18만으로 성능이 충분하다고 생각하여 특별히 개선 사항 없음.
      2. 성별, 나이 예측 모델 : GoogLeNet + CenterCrop + Normalization
        1. optimizer : Adam
        2. LR scheduler : CosineAnnealingLR
    2. 고려사항
      1. 마스크 착용 여부에 따라 성별, 나이 예측 시 고려해야할 feature가 다르지 않을까 하여 모델을 분리.
      2. 60세 이상 데이터가 적은 것을 고려하여, 58~59세를 60세로 수정. & 60세의 데이터를 2배로 증가.
      3. train 시 배경보다 얼굴에 좀 더 집중할 수 있도록 CenterCrop 사용.
    3. 개선 과정
      1. 60세 이상의 데이터를 늘리니 미착용과 올바르지 않게 착용 시의 val acc. 향상.
      2. 60세 이상 데이터 증가만으로 최종 F1 score가 0.6918 → 0.7144로 향상.

프로젝트 수행 결과

자체 평가 의견

잘한 점들

  1. github을 활용한 코드공유가 잘 이루어졌다.
  2. 모듈화된 코드를 이해하고 command line에서 활용하였다.
  3. tmux, tensorboatd, nii 등의 툴들을 활용했다.

아쉬운점

  1. 협업이 잘 이루어지지 않았다.
  2. LB 상에서 성능이 좋지 않았다
  3. 배경을 지우는 Transform을 적용했다면 더 좋은 성능을 얻을 수 있었을 것이다.

시도 했으나 잘 되지 않았던 것들

  1. Data Imbalance 해결
  2. Overfitting 문제 해결
  3. 데이터 resize 및 crop을 통해 학습데이터의 multi-scaling 시도