(3강) Dataset
Pre-processing
Dataset이란, Vanilla Data를 학습할 수 있도록 만든 상태를 의미한다. 이를 위한 모든 과정을 전처리라고 한다. 이렇게 전처리 파이프라인을 구축해두면, 추가적으로 수집하는 데이터를 학습 가능하도록 할 수 있다. 실제 현업에서의 Data는 엄청난 양의 전처리를 필요로 하고, 실제로 업무의 가장 많은 비중을 차지한다. (지금 잘 배워둬야하는 이유이다.)
모델이 데이터를 잘 학습하기 위한 다양한 전처리 기법으로는 Resize, Crop, 밝기 조절 등이 있다.
Generalization
Data는 일반화 되는 것이 중요하다. 특히 Augmentation은 이미지 처리에 매우 중요한 부분을 차지한다. 이는 주어진 데이터가 가질 수 있는 경우와 상태의 다양성을 모델에게 학습시키는 과정이라고 이해할 수 있다. 이는 문제 정의와 도메인에 대한 이해로부터 시작된다.
Augmentation을 적용하는 방법으로는, torchvision.transforms 혹은 Albumentations를 참고하는 것이 좋다.
마지막으로, 언제나 적용할 수 있는 '무조건'의 방법은 없다는 것을 명심하자.
(4강) Data Generation
Data Feeding
Model에게 Data를 Feeding 한다는 것은, Model의 상태에 맞게 Data를 잘 전달해야 함을 의미한다. 속도를 높이기 위해 양만 늘리는 식의 접근은 위험할 수 있다.
또한, Data를 생성하는 과정에도 주목할 필요가 있다.
torch.utils.data
Torch 내부에 있는 Dataset과 DataLoader는 전혀 다른 기능을 하는 완전히 다른 Class이다. DataLoader는 Dataset을 효율적으로 사용할 수 있도록 관련 기능을 추가한 Class이다. 재활용성 등을 위해 하는 일을 완전히 구분해 놓은 것이다. 매우 많은 기능을 가지고 있고, 이를 잘 활용하면 Data Feeding에 큰 도움이 될 수 있다.
Reference
PyTorch Custom Dataset Examples
Project
오늘의 목표 및 진척상황
- Cross Entropy Loss Expect Input 확인 및 개선
- Labeling 검토 및 함수화
- Label 별 층화추출 Code 작성
- Data Loader Return Value 확인 및 개선
- 학습 시 Score 감소 문제 해결
직면했던 문제와 학습한 내용
- Cross Entropy Loss
기존에 Label을 One-Hot Vector 형태로 반환했었는데, Cross Entropy Loss은 Int와 같은 Type의 Input을 기대하기 때문에 오류가 발생했음. 이에 따라, Label을 Int Type으로 구성함.
- Labeling
Labeling이 제대로 됐는지 Data 분포와 함께 확인함. 또한, Labeling Code를 함수화해서 재사용성을 높임. Label이 Int Type으로 구성되어서, Stratified K Fold를 사용할 수 있었음. 이를 통해 Label 별 층화추출 Code를 구성함.
- Data Loader
Data Loader가 Data를 가져올 때 shape와 관련된 이슈로 오류가 계속 발생함. 최초에는 이를 해결하기 위해 Dataset return 시 reshape을 수행했음. 문제는, Tensor Type의 return이 예상 외의 값을 가져온다는 것이었음. 이 때문에 학습을 진행해도 Score가 오히려 감소하는 현상이 발생함.
추가로 진행 할 사항
- Model이 한 개의 Class로만 예측을 수행하고 있는 문제 해결
- Albumentation 사용 방법 확인하기
- Colab에서 사용할 수 있도록 Code 구성하기
- 다양한 실험 시 Option을 간편하게 적용할 수 있도록 Code 구성하기
'네이버 부스트캠프 AI Tech' 카테고리의 다른 글
| [P1] Day 44 (0) | 2021.04.11 |
|---|---|
| [P1] Day 43 (0) | 2021.04.11 |
| [P1] Day 41 (0) | 2021.03.31 |
| [U] Day 40 - Lightweight V (0) | 2021.03.28 |
| [U] Day 39 - Lightweight IV (0) | 2021.03.28 |
Uploaded by Notion2Tistory v1.1.0