티스토리 뷰
저해상도 이미지 15826장이 주어진다.
Vision | 분류 | Macro F1 score로 평가한다.
이번에는 pytorch lighiting을 사용했다.
가지고 있는 GPU가 없다.
그렇기에 colab환경과 kaggle의 환경에서 대부분을 진행했다.
기본 모델
해당 경진대회는 imagenet이나 cifar로 된 사전훈련 모델을 전이학습해서 사용할 수 있었다.
따라서 swinv2로 기본 모델을 진행했다.
이미지에 대한 실험
1) 업스케일링 이미지를 사용한 모델을 구축했을 때 성능이 하락했다.
2) Lanczos를 사용해서 보간했을 때 성능이 향상했다.
3) Augmentation에서 RandomHorizontalFlip이나 Vertical은 성능이 하락했다.
4) 최종적으로는 업스케일링 이미지와 작은 이미지를 사용해서 Ensemble했다.
손실함수
1)레이블 스무딩을 0.05로 설정했을 때 성능이 향상했다.
2) CrossEntropyloss를 선정했다. 다른 loss는 1위분과 같이 필자가 실험해봤을 때도 성능이 하락했다.
모델링
1)옵티마이저 - AdamW
2) CV : 5 Skf
3) Ealrystopping - Macro F1 Score 기준
최종 Private score 0.9742로, 1위인 0.98498, 4% 기준인 15위 0.97667과 조금 차이가 났다.
아마 모델을 바꿨으면 4% 안에도 들 수 있었을 듯 싶다.
다른 사람들에게서 배운 점
코드 공유에 올라온 timm 라이브러리에 아주 다양한 transformer 모델이 있다는 걸 확인할 수 있었다.
다음에 기회가 된다면 전부 써봐야겠다.
agmentation 기법 중에서 RandomAugmentation, AutoAugmentation 말고, TAW(Trival AugmentWide) 라는 기법이 있다고 한다. 이로 성능향상을 보였다고 했다. 다음에 시도해봐야겠다.
RandomErase 기법이 성능향상이 있었다.
1위하신 분은 시간이 아까워서 총 데이터의 1/4만 해서 모델의 성능을 평가했다고 한다.
4위분은 random sampler를 사용하면 성능이 올랐다고 한다. 이미 fold를 나눈 상태에서 사용했기에 뭔가 더 작용을 했을 거 같다.
그리고 microsoft에서 제공하는 모델 입력 크기와, timm에서 제공하는 모델 입력 크기는 192,288로 다르다고 한다.
그러한 성능 차이도 있었을 것 같다.
마치며
배운 것들을 제대로 활용해보려고 해본 경진대회였는데, 확실히 pytorch 라이브러리의 위력을 새삼 깨달았다.
그리고 visiontransformer의 위력도 확실히 알게 된 거 같다. 학습 시간은 정말 많이 걸리긴 하지만 말이다.
huggingface 라이브러리도 쓸 수 있게 되었고, 앞으로 vision을 할 때는 두려움이 없을 거 같다.