BoostCamp

2021.09.03 - [Week 5] Day 5. 마무리

배기니어 2021. 9. 3. 21:14

1. 대회 마무리 작업

 1.1. team code 작성

  - 개인 실험 내용을 담은 코드 정리

  - team code에 모듈화된 code를 병합

 

2. 피어세션

 • team wrap-up report 작성

 • team code 제출 방법 논의

 • team 회고지 작성

 

3. 마스터 클래스

 3.1. 1등 team

  • 접근

   - EDA : 인간지능으로 miss labeling된 데이터 검색에 시간 투자

   - 50, 60대 구별이 어려워 50, 60대에서 점수 갈릴 것으로 판단

   - 일정하지 않은 class 분포 확인

   - weighted random sampler 적용하여 빈도 수에 맞게 dataset 생성

  • 전처리

   - data augmentation 적용

   - cutout : 얼굴 가려서 학습 어렵도록 설정 -> over fitting 방지

  • 추가 data 적용했지만 얼굴과 나이가 잘 맞지 않아 적은 효과

  • model

   - resnet 계열 중 resnet18이 가장 좋은 성능

   - dataset 적고 분류 어렵지 않아 성능 좋은 model은 over fitting의 가능성이 있다고 생각

   - efficientnet b0 model 사용 

  • label smoothing loss 사용

  • adam optimizer 사용, learning rate은 0.00006 고정

  • train set : validation set = 8 : 2

  • gender, mask, age 분류하는 3개의 model 학습

   - validation set에 노인이 많아 age classification model의 validation score 신뢰도 낮다고 판단

  • pseudo labeling

   - test set을 labeling하여 train set에 사용

   - classification의 boundary가 부드러워지는 효과

 

 3.2. 2등 team

  • 협업 방식

   - 1주차 : 각자 model, baseline 학습

   - 2주차 : 각자 성능 좋은 model 제출

  • EDA

   - gender, mask classification의 성능 좋다.

   - age에 집중

   - train set과 validation set에 다른 사람이 들어가도록 stratified sampling

   - 60대 threshold 58세 적용

   - 60세 이상 분류 성능 향상 위해 나이 많은 아시아인 dataset 사용

   - facenet & retinaface 적용하여 얼굴만 crop

  • model

   - VGG16 : 얕은 깊이지만 높은 성능

   - ViT : data 적어 좋지 않은 성능

   - ResNet152 : 높은 성능

  • loss

   - gender와 mask는 관련이 적다

   - label smoothing : middle age에만 smoothing할 수 있도록 구현

  • pseudo labeling 적용

  • ensemble : soft voting

 

 3.3. solution

  • mask 착용 여부 + 성별, 나이

   - 성별, 나이가 noise 역할

   - 자연에서 충분히 발생할 수 있는 noise

  • model을 3개(age, gender, mask)로 나눈 것이 핵심

   - model마다 특정 feature를 나타내는 embeddning 생성

   - 한 가지 일을 하는 model보다 여러 가지 일을 하는 model을 만들어낸 것이 좋은 접근

   - dataset 품질이 좋지 않다는 가정 하에 좋은 선택

  • pseudo labeling

   - test set은 사용하지 않는 것이 가장 좋다

   - label되지 않은 정보까지 feature에 담을 수 있지만 label에 대해 훈련이 잘 되지 않을 수 있다.

  • validation set과 test set의 score 차이 발생

   - dataset의 크기와 표본의 신뢰성의 문제

   - dataset 적어서 발생했을 가능성도 있다.

   - data에 대한 분석도 좋지만, 결과에 대한 분석을 많이 해볼 것

   - 어떤 것을 맞추고, 어떤 것을 틀렸는지 case마다 true, false 확인

  • over fitting 많이 발생하는 이유

   - 낮은 learning rate

   - augmentation 적용한다면 도움될 수 있다

   - code 상의 문제 가능성

   - train set에 test set을 모두 담지 못해서 발생하는 문제

 


랩업 리포트를 작성하고, 스페셜 피어세션에서 다른 팀들과 대회 내용을 공유하고, 마스터 클래스를 듣고 나니 정말 대회가 끝났다는 것을 실감하게 된다.

부스트캠프에 들어왔을 때는 정말 일자무식이었는데 이제 딥린이 정도는 될 것 같다.

딥린이도 안되려나?

아무튼 정말 많이 배운 p stage였고, 협업의 기회는 적었지만 팀원들과 다양한 내용을 공유하고 함께 공부하며 여러가지 실험을 할 수 있어서 정말 좋았다. 매우매우 좋았다.

열심히 해주시고 도와주신 팀원들께 정말 감사하다.