T2221 최석민
나만의 베이스라인을 만들어서 customize 하기.
배웠던 내용을 코드로 구현해보자.
대회 성적 상위권 안에 들기.
기본적으로 대회마다 사용할 수 있는 code 모듈화 하기.
대회 시작한 당일 dataset을 전처리를 진행을 하고, 제출을 할 수 있는 모델을 만들어 제출을 할 수 있었다.
코드를 class화 한 경험이 많이 없어 최대한 해보려 노력을 했음. 베이스라인 코드가 공개된 뒤에 다시 한 번 처음부터 베이스라인 코드를 해보았음.
직접적인 EDA 실력이 부족하여 다른 분들이 시각화 해놓으신 자료를 통해 데이터를 분석하였음.
처음에 trainset과 valset을 나눴을 경우에는 그냥 데이터를 랜덤하게 추출하여 나눠줬으므로 train데이터에 있던 사람이 valset에 다시 나타나는 경우가 있었다. 그 결과 valset 성능도 높게 나왔지만 testset에서는 성능이 20% 정도 차이가 나는 등 큰 성능 차이를 보여주었다.
성능 차이가 남에도 불구하고 그냥 배운 것을 사용해보자는 생각으로 torchvision.transforms에 있는 augmentation을 적용을 하였다. 나름 다양하게 적용을 해보았는데 성능이 오르지 않는 것을 볼 수 있었다. 데이터의 불균형이 문젠가 싶어서 58세, 59세 데이터를 60세 이상의 데이터로 취급하여 학습을 진행시켜주었다. 데이터를 바꾸니까 확실히 결과가 변화하는 것을 볼 수 있었다. 조금 올랐음.
cutmix를 적용해보았다. clova ai github와 블로그를 이용해서 cutmix를 해보고 그 이미지를 확인해보았다. 사진을 직접 확인해보니까 배경을 자르는 경우도 있었고 그러한 부분을 해소하고자 데이터의 대부분의 얼굴은 중앙에 있으므로 centor crop을 해주고 세로축으로 잘라주는 방식을 사용하였다. 이미지를 확인해보니 보다 그럴싸한 느낌이 들긴 했지만 뭔가 잘못되었는지 성능이 오르지 않았었다. 오히려 떨어짐.
잘못된 부분을 찾았다. trainset에 centorcrop을 해주었다면 testset에 대해서도 centorcrop은 해줘야지 학습된 데이터랑 비슷하게 되어 예측을 잘 하게 될텐데 그 부분을 하지 않았었다. 적용을 해줬더니 이제 기존의 스코어와 근사해졌다. 아직까지도 valset score와 test score와는 괴리감이 있었음.. 이걸 해결을 해야 했음 !