이번주 목요일 19시까지 competition이 진행된다. 따라서 이번주는 따로 학습하는 내용은 없고 팀원들과의 협업이 주 과제이다. 아마 오늘 까지 base code가 완성되어서 내일부터는 지속적으로 여러가지 모델을 테스트해 볼 수 있을 것 같다.
저번주에 기본적인 파이프라인을 구축하고 train.py에 여러가지 feature을 추가하였다. 오늘은 크게 dataset부분과 wandb를 붙이는 파트로 나뉘어서 진행되었다.
dataset은 크게 TestDataset과 MaskBaseDataset으로 나누었다.
MaskBaseDataset은 학습을 하기위한 dataset class이고 TestDataset은 train후에 evaluation을 하기위한 dataset이다.
성능을 높이기 위해 dataset에 추가한 부분은 validation dataset을 train dataset과 완전하게 구분해주는 작업이었다. 기존에 있던 validation split 함수는 비율이 주어지면 그 비율만큼 validation 과 train dataset을 나누었었다. 하지만 이런식으로 나뉘어지면 train dataset과 validation dataset에 같은 사람의 이미지가 섞여 들어갈 수 있다는 문제점이 있었다. 즉, validation dataset이 적절하게 validation의 역할을 하지 못한다는 점이다.
현재는 이를 구현하기 위해 사람이 섞이지 않게 dataframe을 2개로 나누어서 각각의 dataframe으로 train dataset, valid dataset을 구현하였다.
wandb, Weight & Biases는 Tensorboard와 비슷한 ML 개발 tool이다. 아직 Tensorboard에 대해 잘 아는 것은 아니지만 wandb가 조금 더 github과 비슷한 느낌이라 편하고 팀원들끼리 공유하기 쉬울 것 같아서 wandb를 도입하기로 결정했다.
wandb는 사실상 추가된다고해서 코드가 크게 변하지는 않는다. train.py부분에 wandb.init
을 통해 쉽게 wandb를 삽입할 수 있다.
기타 configuration은 wandb.config 파일을 따로 만들어줘서 관리하고 있다.
이미 새벽이어서, 아마 오늘부터 여러가지 모델을 테스트 해보면서 성능이 좋은 모델들을 제출하게 될 것 같다. 현재 제일 궁금한 점은 valid set을 테스트해서 나온 F1 score와 실제로 aistage 플랫폼에 제출한 F1 score가 비슷하게 나올까? 라는점이다.
저번주, 이번주에 엄청나게 많은 '남이 쓴 코드'를 리뷰했다. 생각보다 남이 작성한 코드를 해석하는 것은 쉽지 않은 일 같다. 특히 남들에게 피드백을 남길 때 상대방이 기분 나쁘지 않을까 제일 걱정 됐었다. 하지만 팀원분들이 생각보다 너그럽게 받아주셨다. 더 힘내서 피드백을 할 수 있을 것 같다. ^^