1. 대회 진행 상황
1.1. 주말에 train 코드 구현해서 학습 성공
• train set과 validation set을 랜덤하게 8:2 비율로 나누어 학습
• augmentation은 resize만 적용
• F1 score : 0.675, Accuracy : 75.683
1.2. 랜덤 스플릿 적용
• data가 가장 적은 class의 데이터는 83개
• 모든 class에서 83개씩 뽑아 1494개의 data를 가진 train set만들어 학습
• 성능 하락
• F1 score : 0.671, Accuracy : 72.397
1.3. torchvision.transforms 적용
• train set의 data가 적어 여러 가지의 transform을 적용하면서 epoch 학습
• epoch 바깥에 transform 적용하여 매번 다른 transform이 적용된 dataset으로 학습
• torchvision library의 transform package에서 RandomRotation, RandomGaussianBlur, RandomHorizontalFlip 2회씩 적용하여 6개의 train set 생성
• 그러나 아무 일도 일어나지 않았다!
• F1 score : 0.641, Accuracy : 71.270
1.4. albumentations 적용
• albumentation 함수 실행하며 적당한 augmentation 기법 선택
2. 피어세션
• torchvision.transforms보다 albumentations 속도가 빠르다.
• albumentations.OneOf : 여러 augmentation 중 하나 적용
• config.json으로 hyperparameter 관리
• wandb 사용하여 결과 정리
• label smoothing loss 사용한 결과 안정적이지 않은 graph
• albumentation과 cutmix 적용 후 성능 하락
• k-fold 적용 방법 고민
• model darknet53으로 수정하는 방안
• kaggle mask datset 사용 여부 : 불가능(non-commercial)
3. 오피스 아워
3.0. 내가 고용주라면?
- 연구, 서비스 등 고용주 입장에서 어떤 질문을 던질 지 생각해보기
- 면접 때 물어볼 것 같다는 생각을 가지고 공부
3.1. Solution
• define problem
- 롯데 제품 image classification
- image -> 상품 이름(class)
- 좋지 않은 validation score
- class 별 data가 적은 문제
- 서로 다른 class에 속하지만 유사한 모양
• story line
- 같은 캔 음료이지만 다른 것을 구별할 수 있도록 학습하고 싶다
- 우선 비슷한 모양끼리 분류 : 캔, 페트, ...
- 비슷한 모양의 제품끼리 label smoothing : 다른 제품일 수 있는 가능성 만들기
- CNN + label smoothing -> validation score : 0.99, learder board score 소폭 상승
- 다시 EDA, 문제 해석
- test set의 data가 다르거나 validation score의 문제로 판단
- pair 기반 접근 : 두 image의 제품이 동일한지 판단
- CNN 통과하여 feature 추출하고, train set에서 유사한 것 return
- image retrieval : image 간 유사도 측정 (SOTA : arcface loss)
- GeM pooling layer : weight 적용한 pooling 방법
• Method
- train set -> CNN -> train feature vector 생성
- test set -> CNN -> test feature vector 생성
- train feature vector들과 test feature vector 간의 cosine similarity 측정
- 가장 유사한 제품 return
- Backbone : NFNet, EfficientNet
- Data augmentation : image compression, cutout, flip, shift scale rotate
- Learning rate scheduler : global warm-up scheduling + cosine annealing
- stratified k-fold (5 fold) ensemble
- TTA (Test Time Augmentation)
주말에도 꽤 오랜 시간을 투자해서 모델학습에 성공했다.
학습을 처음으로 돌려보는 것이라 에러가 어디서 왜 발생하는지 찾기가 너무 어려워서 오래 걸렸다.
결론은 batch size로 인한 gpu oom 문제였다.
다행히 강의를 잘 들어서 gpu monitoring까지 하는 것은 했는데 어디서 메모리가 초과되는지 찾는데 한참 걸렸다.
이래서 잘 알고 프로그래밍을 했어야 했는데 많이 아쉽다.
다음엔 좀 더 나아지겠지...
'BoostCamp' 카테고리의 다른 글
2021.09.01 - [Week 5] Day 3. 9월의 시작 (0) | 2021.09.02 |
---|---|
2021.08.31 - [Week 5] Day 2. 8월의 마지막 날 (0) | 2021.09.01 |
2021.08.27 - [Week 4] Day 5. 대회 1주차 마무리 (0) | 2021.08.27 |
2021.08.26 - [Week 4] Day 4. 대회 진행 중 (3) (0) | 2021.08.27 |
2021.08.25 - [Week 4] Day 3. 대회 진행 중 (2) (0) | 2021.08.27 |