일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- nn.Sequential
- kde
- tril
- RNN
- band_part
- forward
- tensorflow
- Chrome Remote Desktop
- pytorch
- ai tech
- ubuntu
- kernel density estimation
- 네이버 부스트캠프
- GRU
- 크롬 원격 데스크톱
- Linux
- error
- Til
- triu
- LSTM
- Today
- Total
무슨 생각을 해 그냥 하는거지
[학습정리] 2021-08-24 본문
※ 정보전달이 목적인 포스트가 아니라 개인 학습 기록 및 정리가 목적인 포스트입니다 ※
해당 포스트는 네이버 커넥트 재단의 부스트캠프 마스터님이신 김태진 강사님의 강의를 바탕으로 작성되었습니다.
1. 강의 복습 내용
[3강 Dataset]
Pre-processing
- bounding box
- resize
- change brightness & contrast
Generalization
- bias & variance
- split train/validation dataset
- data agumentation
Data pre-processing은 모델의 학습 능력과 효율을 끌어올리기 위한 처리
Data generalization은 train 결과와 inference 결과의 차이를 줄이기 위한 처리 (위 그림에서 맨 왼쪽이 원본 이미지인데, 원본 이미지에 대해서만 학습을 시킨다면 밤에 찍은 사진이나 우천 때 찍은 사진은 classification이 제대로 안될 수 있음. 그래서 data augmentation을 통해 train 데이터에 너무 overfit 하지 않도록 만들어주는 것)
Data Augmentation
- torchvision.transforms
- Albumentations → torchvision.transforms 보다 빠르고 다양함
[Data Generation]
torch.utils.data
- Dataset
- DataLoader
Dataset은 vanilla data를 우리 모델에 feed 할 수 있도록 예쁜 형태로 만들어주는 class
DataLoader는 Dataset을 효율적으로 불러오게 만들어주는 모듈 (transform + batch 형태로 불러오기)
2. 과제 수행 과정 / 결과물 정리
[P-stage: Mask-Classification Day2]
데이터셋: 다른 캠퍼님들께서 공유해주신 내용을 통해 labelling이 잘못된 데이터가 있다는 것을 알게 되었다. (e.g. 남성인데 여성으로, 마스크를 제대로 쓰지 않았는데 마스크를 벗은 상태로 labelling 되어 있었음) 수가 많지는 않아서 만들어 놓은 csv 파일을 수작업으로 수정하였다.
진행상황) dataset과 dataloader 코드, train 코드를 만들어 실험해보기 위해 torchvision에서 제공하는 resnet18과 vgg16을 마지막 fully-connected layer의 out_features만 18(class 개수)로 변경하여 학습시켜보았다.
문제1) 코드도 잘 실행되고, train loss도 잘 떨어지는데 validation loss가 너무 높은 상태에서 수렴해버린다. epoch 17 정도에서 수렴하고 oscillation이 발생했다. 또 resnet18의 경우 inference에서 모두 똑같은 label로 예측해버리는 것을 확인할 수 있었다. 이 문제는 학부 과제 Bone Fracture classification 했을 때도 발생했던 문제였다. task에 비해 모델이 너무 deep해서 overfitting이 되는 걸까..? vgg16의 경우엔 모두 같은 label로 예측하지는 않지만 여전히 결과라고 할 수 없는 결과를 내뱉었다^^.. 마찬가지로 train loss는 낮아지지만 validation loss가 낮아지지 않아 overfitting 된 것이라 생각한다.
→ 해결?) vgg16를 layer 수를 줄여 좀 더 가볍게 만들었다(혼자 light vgg라고 부른다..ㅎ). validation loss가 이전 모델들보다는 훨씬 낮아졌지만 여전히 만족할 만한 성능은 아니며, 안타깝게도 epoch 5 이후로는 validation loss가 낮아지지 않았다. 너무 모델이 가벼워서 underfit이 된건가?
3. 피어세션 정리
- 오늘 강의를 요약하고 발표했다. 마침 dataset과 dataloader에 대한 내용이어서, 내가 짠 코드를 보여드리면서 흐름을 설명드렸다.
- 이번 이미지 분류 대회 to do list를 작성했다. 아무래도 말로 아이디어를 적는 것보다는 앞으로 해야 할 일들을 가시적으로 적는 게 정리에 도움이 되는 것 같다.
4. 학습 회고
- 리더보드가 있으니까 마음이 조급해진다..😥 대회는 다음주까지인데 벌써 성능이 좋으신 캠퍼분들을 보면서 자괴감도 느껴지고 내 능력에 실망하게 된다.
- 하지만.. 능력이 좋은 사람들 곁에 있으면 많이 배우게 된다는 걸 내 자신이 알고 있다! 많이 자극받고, 많이 배우자!
'Naver AI Tech 2기 > Today I Learned' 카테고리의 다른 글
[학습정리] 2021-08-27 (0) | 2021.08.27 |
---|---|
[학습정리] 2021-08-25 (0) | 2021.08.27 |
[학습정리] 2021-08-23 (0) | 2021.08.24 |
[학습정리] 2021-08-20 (0) | 2021.08.20 |
[학습정리] 2021-08-19 (0) | 2021.08.20 |