Project
오늘의 목표 및 진척상황
- Multi Loss 실험
- Label Cleansing 작업 및 성능 확인
- Three Classification Model Pipeline 구축
- Augmentation 실험
직면했던 문제와 학습한 내용
- Multi Loss 구성 및 실험
Peer가 전해준 아이디어로, 다양한 Loss Function으로부터 Loss를 생성하는 방법을 알게 됐다. 기존에 사용하던 WCE Loss와 다양한 Loss의 조합을 시험해봤다. F1 Loss, Focal Loss, WCE Loss 모두를 활용한 학습은 성능이 매우 낮았고, Focal Loss와 WCE Loss를 결합한 Multi Loss가 좋은 성능을 냈다. 학습간 Validation Set으로 확인했을 때에는, WCE보다 높은 성능이 나올 것으로 기대됐으나, 실제 Public Score는 높지 않았다. 아마 Private Score로 가려진 부분을 잘 맞춘 모델이지 않을까 추측해보며, 일단은 Base Loss로 선정했다.
- Label Cleansing 작업
원래는 Anomaly Detection 방법이나, Image간 유사도를 통해 Noise Data를 선별하려고 했으나 구현상의 어려움이 컸다. 결국, CleanLab과 Logit의 Threads Holds 등을 이용해서 Noise로 의심되는 Data를 확인하고 수정해줬다. 이 과정에서 Hidden File이 자동으로 생겨서 이후 Coding에 방해가 됐다.
- 대분류 별로 예측하는 Model Pipeline 구성
기존에 사용하던 18개의 Class를 예측하는 모델은 이 이상 어떻게 성능을 향상시켜야 할 지 막막했다. 다른 캠퍼분들도 많이 사용하시고, 마스터께서도 권장하는 형태의 Model을 구축해봐야겠다 생각이 들었다. 덕분에 엄청 오래 고생했다.
먼저 부딪혔던 문제는, Model의 Architecture구성이다. 각 출력까지의 Layer를 어떻게 구성할 것인지부터 의사결정의 문제였다. 최종적으로는 Backbone으로부터 Mask와 Gender는 바로 출력되도록 Linear Layer 1개만 쌓았고, Age에 대해서는 Linear Layer 2개와 Silu를 사용했다.
그 다음 문제는 Data Feeding이었다. 기존의 Dataset과는 다르게 구성을 해야했기 때문에, Dataset의 구성요소를 싸그리 갈아 엎었다. 이전에는 단순히 Index에 대해 전체 Image Paths와 Image Label에서 해당 값을 뽑으면 됐었는데, 이번엔 Label 등을 어떻게 전달할 지에 대해서도 고민이 필요했다.
가장 고달팠던 문제는 Validation Set 구성이었다. 처음에, 기존에 사용하던대로 학습을 진행했더니 Validation에서 거의 100%에 가까운 성능이 나왔다. 곰곰히 생각해보니, 이번에는 사람별로 Data가 구분되어야 했었다. 이를 구현하기 위해 Image의 Directory 뜯어오는 것부터 Dataset 구조 변경 등 많은 작업을 해야했다.
지금은 학습을 진행하고 있고, 어떤 Loss Function이 적합할 지 실험중에 있다.
- Augmentation 실험
Augmentation을 너무 적게 활용하고 있나 싶은 생각에, 이런 저런 기법을 실험해봤다. 성능 향상에 오히려 방해가 되는 것 같기도 해서, 좋은 Aug를 찾지 않으면 이 부분은 실험을 중단할 예정이다.
추가로 진행 할 사항
- SGD를 활용한 재학습 실험
- Three CLF Model Loss Function 실험
'네이버 부스트캠프 AI Tech' 카테고리의 다른 글
[P1] Day 49 (0) | 2021.04.11 |
---|---|
[P1] Day 48 (0) | 2021.04.11 |
[P1] Day 46 (0) | 2021.04.11 |
[P1] Sunday 5 April (0) | 2021.04.11 |
[P1] Saturday 4 April (0) | 2021.04.11 |
Uploaded by Notion2Tistory v1.1.0