BoostCamp

2021.08.31 - [Week 5] Day 2. 8월의 마지막 날

배기니어 2021. 9. 1. 02:15

1. 대회 진행 상황

 1.1. albumentations 적용

  - albumentations 함수 중 21개 augmentation 기법 선택

  - HorizontalFlip, GaussianBlur, GaussNoise, CoarseDropout, RandomRain, MotionBlur, OpticalDistortion, RandomFog, RandomGridShuffle, RandomShadow, RandomSunFlare, Sharpen, Superpixels, CLAHE, Cutout, CoarseDropout, Downscale, Emboss, GridDistortion, GridDropout, ImageCompression

 

 

  - 지난 과정에서의 학습 방법을 똑같이 적용하여 생성한 21개 dataset으로 학습

  - F1 score : 0.005, Accuracy : 5.079

  - 결과를 하나도 맞추지 못해 over-fitting된 것으로 판단

 

 1.2. albumentations의 augmentation 함수를 2개씩 적용해서 11개의 dataset으로 학습

  - train loss와 train accuracy 그래프는 비슷한 양상

 

 1.3. dataset 확인

  - 학습은 정상적으로 된 것 같지만 결과가 이상하다고 생각되어 dataset 확인

  - dataset은 내부에서 image를 tensor로 변환하여 return

  - return 과정에서 byte tensor로 변환되어 forward 과정에서 model의 weight(float tensor)와 tensor type이 맞지 않아 에러가 발생

  - return 전에 image.float()로 float tensor로 변환하여 return하도록 적용했지만 여기서 문제가 발생한 것 같다!

  - float tensor로 변환된 이미지를 pyplot을 이용해 출력해보니 channel이 inversion된 것처럼 출력되는 것을 확인

  - tensor.to(dtype=float), tensor.float(), tensor.type(torch.float) 모두 같은 결과

  - image / 255.0으로 uint8 tensor를 float tensor로 channel inversion 없이 변환

  - 수정 후 이미지 정상적으로 출력

 

 1.4. git으로 파일 관리하는 법 공부

 

2. 피어세션

 • confusion matrix 적용 : class 별로 정답, 오답 비율 확인

 • class 별로 균등하게 dataset 만들고, augmentation 적용

 • k-fold : 기본 모델의 성능이 좋지 않아 k-fold 적용 후 좋지 않은 성능

 • ViT + self-supervised learning + CutMix

 • self-supervised learning : 동일 인물인지 맞추는 pretext task

 • face crop 여부

 • model 앞,뒤로 layer 추가하는 방법

 • train set과 validation set의 분포를 맞추는게 맞는지?

  - 일반화 성능을 위해선 균등하게 하는게 맞는 것 같다.

  - test set의 분포에 맞추는게 중요하지만 test set의 분포를 알 수 없는 것이 문제이다.

  - 멘토님께 질문드리기

 • data가 가장 적은 수의 class에 맞게 dataset 나누는 방법

 • 각자 성능이 가장 좋은 code ensemble하는 방법 고민

 • team report와 team code 작성 방법

  - code 합치는 방법, 역할 등

  - 멘토님께 질문드리기

 

3. 멘토링

 • imbalanced data

  - over sampling

   · class 별 가장 많은 것 뽑도록 구현

   · collate_fn : 모든 batch마다 label 들어가도록 구현

  - GAN 사용해서 새로운 학습 data 생성

  - under sampling

 • 실험 별로 결과 정리

  - 실험 별 method on, off에 따라 $2^n$가지 결과 정리

 • cutmix

  - 얼굴만 나이에 영향을 주는 것이 아니라 옷 색깔 등도 관련있을 수 있다.

  - $\frac{1}{2}$ crop만 할 것이 아니라 $\frac{1}{4}$ crop도 추천

  - random한 cutmix가 성능이 좋은 것으로 알려져 있다. -> random과 vertical 실험 후 비교

 • code 병합

  - baseline model 정해서 module 구현하여 추가

  - 구현이 빨리 안되는 사람은 코드 읽는 것만 해도 많은 공부

  - 지금부터는 code 병합하며 team으로 작업해보기

  - coding style 통일, coding convention 참고

  - 80점 목표

  - pair programming 추천

 • 참고자료

https://github.com/ufoym/imbalanced-dataset-sampler

 


교육받은 지 꼬박 한 달이 지났다.

나는 얼마나 성장했을까 돌아보면 좋겠지만 아직 기초도 많이 부족한 것 같다.

대회가 3주정도 기간으로 진행되었다면 복습을 하면서 이런 저런 실험도 많이 해볼 수 있었을 것 같은데

예상보다 팀을 빨리 합치게 되었다 보니 생각보다 더 짧게 느껴진다.

복습할 시간이 앞으로 얼마나 남았을 지는 모르겠지만 기초를 다지고 더 깊게 공부할 수 있었으면 좋겠다.