P stage 1 이미지 분류

  • TASK : 마스크 착용여부, 성별, 나이를 기준으로 총 18개의 클래스 분류
  • 진행 기간: 2021.03.29 ~ 2021.04.08

결과 및 순위

  • f1-score : 0.7372
  • accuracy : 79.3651%
  • 등수 : 74

Model & Parameter

  • 1) 마스크 착용 여부
    • 아키텍처 : resnext50d_32x4d
    • training time augmentation : HueSaturationValue, center crop (380, 350)
    • img_size : 512, 384
    • loss : cross-entropy
    • optimizer : AdamW(weight_decay=1e-2)
    • sheduler : CosineAnnealingWarmRestarts(T_0=10, T_mult=1, eta_min=1e-3)
  • 2) 성별 구분, male age, female age
    • 아키텍처 : tf_efficientnet_b3_ns
    • training time augmentation : RandomBrightnessContrast, HueSaturationValue, CLAHE, center crop (380, 350)
    • img_size : 512, 384
    • loss : (cross-entropy)x0.3 + (f1-score)x0.7
    • optimizer ; Adam(lr=1e-5, weight_decay=1e-5)
    • sheduler : CosineAnnealingWarmRestarts(eta_min=1e-7)

교훈

  • 피어세션을 진행하면서 여러 아이디어들이 있음을 알게 되었고 협업의 중요성을 알게 되었습니다.
  • 인상깊었던 아이디어 : 세 개의 클래스를 각각 나누어 진행하는 방법에 대해 마지막 layer에서 8개의 결과값(마스크 유무 3개, 성별 2개, 나이 3개)으로 각각 loss를 적용시켜주는 방법
  • U-stage 팀원들과 계속 소통을 하는데 좋은 자료나 아이디어를 적극적으로 공유를 해주어 많은 도움이 되었습니다.
  • 여러가지 augmentation 방법 (CLAHE, IAAPerspective)
  • loss (cross-entropy + f1-score)
  • data labeling (60세 이상의 data의 boundary를 낮추는 방법)
  • 경험을 통해 공유했던 내용
  • 리더보드의 채점 기준이 f1-score이므로 f1-score에 가중치를 주는 방법 ex) (cross-entropy)x0.3 + (f1-score)x0.7
  • 여자, 남자의 나이를 따로 분류하는 방법
  • 여자와 남자 나이를 분류할 때 3개의 class가 아닌 5개의 class로 나눈 뒤 3개로 합치는 방법 ex) 20이하 / 29이하 / 45이하 / 57이하 / 나머지

아쉬운 점 및 계획

  • 다양한 아이디어를 시도해보지 못해 아쉬웠습니다.
  • 18개 class 기준으로 분류 진행
  • 마지막 layer에서 8개의 결과값(마스크, 성별, 나이)으로 각각 loss 적용시켜주는 분류
  • cutmix, test time augmentation
  • 여러 모델을 사용해 보지 못해 아쉬웠습니다.
  • resnet, efficientnet 계열만 사용했습니다.
  • 여러 model을 한번에 돌리는 code를 구현해보지 않았습니다.
  • EDA의 중요성을 느끼게 되었습니다. 다음 stage에서 EDA에 더욱 집중해야겠다는 생각이 들었습니다.
  • 다음 stage에서는 Argparse 모듈을 사용해 볼 계획입니다.
  • 시도해 본 경험을 다음 stage에서는 조금 더 깔끔하게 정리할 계획입니다.
  • tensorboard or wandb를 활용해 볼 계획입니다.