[P Stage 1 - 이미지 분류] TIL
오늘의 목표
- submission.csv 구조 파악
- VGG 11 모델 inference 한 결과, 리더보드에 올리기
- VGG 11 결과에 대한 분석 필요
- ResNet 사용해보기
- 데이터셋 EDA 해보기
- 데이터셋을 학습한 결과가 뭔지 모르는 상태에서 하는 EDA는 딱히 도움이 안될 것 같아서, 모델 하나 만들어보고 EDA 시작하려고 함
- EDA에 대한 지식이 거의 없으니까, 맨땅에 헤딩하는 것은 의미가 없을 것 같음
- 따라서, 모델 학습 후, loss/accuracy 그래프 추이를 확인하며, 부족해보이는 부분을 주로 파보려고 함
나의 노력 & 모델 개선 방식
- VGG 11 모델을 inference한 결과를 리더보드에 올려보았다.
- 오늘은 batch size, learning rate, transforms 등을 조작해보는 대신 여러 backbone을 사용해보고 iteration에 따라 변화하는 결과(acc, loss) 추이를 확인했다.
- ResNet50을 학습시켜, inference한 결과를 리더보드에 올려보았다.
- VGG11과 거의 비슷한 하이퍼파라미터, 전처리를 해주었다.
- 마찬가지로, iteration에 따른 loss, acc 추이를 보고, 제출해보기까지만 했다.
→ 추후 분석 과정이 필요하다!
오늘 달성한 것 & 깨달음
- ResNet이 언제나 VGG보다 좋은 성능을 내는 것은 아니다.
- 물론 좋은 backbone이 좋은 결과를 얻어주는 것은 맞겠지만, 문제에 따라서 어떤 backbone이 좋은 backbone인지는 모르는 일이다. 따라서 다양한 가정, 실험, 추측을 통해 인사이트를 기르는 것이 무척 중요함을 깨달았다.
- 일단 계획한대로, 이번주 금요일까지는 backbone을 최대한 다양하게 써보려고 한다.
- 대신 잘되면 왜 잘되는지, 안되면 왜 안되는지 정확히 정리하고 넘어가야겠다.
어제와 비교해서 오늘 새롭게 시도한 변화 & 효과?
- 어제는 VGG를 사용했고,
- 오늘은 ResNet을 사용했다.
- center crop을 사용해보았다! 성공적!
왜 성공 or 왜 실패?
- ResNet50 모델 성능 개선의 연이은 실패
- 오늘 정말 바보같은 실수를 했다
- train 시, transfroms로 데이터 크롭을 했는데, inference할 때에는 data crop을 하지 않은 상태로 돌렸더니 성능이 VGG보다 안나왔던 것!
- transforms에 무엇을 넣느냐, 데이터를 어떻게 처리하느냐에 따라 결과가 바뀌는 것을 체감함
- 내가 만든 방식에 문제가 있는지 확인 해봐야 할 것 같다. 우리 조 다른 사람은 ResNet으로 60 acc을 넘겼다고 하는 것을 보니, 코드를 다시 검토해봐야겠다는 생각이 들었다.
내일의 목표
- 오전 안에 강의를 듣고, 학습정리 끝내기
- (월, 화, 수)에 주어진 mission 3개 수행하기
- 월: 데이터셋 EDA 해보기
- 화
- 1. 직접 Dataset Class 작성해보기
- 2. torchvision transform 기법 적용해보고 plot 통해 확인해보기, 성능 체크
- 수
- submission.csv 구조 파악
- 데이터셋 분석 💥 중요 💥
- 데이터 분포, 특징 확인
- VGG 11 결과에 대한 분석 필요
- 분석 리스트 세우기
- 잘나온 데이터셋, 안나온 데이터셋 show하여 확인하기
- ResNet 50 결과에 대한 분석 필요
- 분석 리스트 세우기
- 잘나온 데이터셋, 안나온 데이터셋 show하여 확인하기
- 앞으로 만들어질 모델, 결과 등에 대해서 어떻게 정리할지 방법 정하기
- 실험할 수 있는 요소들의 리스트 작성해보기
- 구체적인 실험 계획 세우기
느낀점
- 무작정 이 모델 저 모델 써보는 것이 아닌, 데이터에 대해서 먼저 파악하고 있어야함을 느꼈다.
- 많은 모델을 사용해보자는 목표가 흐려진 것은 아니지만, 그 전에 데이터 분석이 선행되어야함을 느꼈다.
- 데이터셋의 imbalance 문제가 꽤 크게 다가왔다.
- 성능이 잘 안올라서 더 크게 다가왔나?
- 좀 더 구체적인 실험 계획이 필요하다.