- 이번에는 GPU사용을 위해 colab에서 작업했는데, 식물의 잎을 통해 식물의 질병 유무를 파악하는 딥러닝 모델을 구축했다.
- 먼저 데이터를 불러오는데, ImageFolder기능을 구현하기 위해 파일마다 Label를 구분해서 만들었다.
- 각 식물마다 train, test, val 0.6, 0.2, 0.2 등으로 구분했으며, 각 식물별 라벨별로 데이터를 구분해서 저장했다.
- 그리고 batch_size를 256으로 저장하고, 10번의 epoch를 돌리기 위한 변수를 미리 만들었다.
- 그리고 torchvision의 ImageFolder의 경우 파일별로 라벨을 나누어 데이터를 구분할 경우 tuple의 형태로 데이터와 라벨값을 불러올 수 있다.
- 또한, Compose를 통해 데이터 전처리를 구현했는데, 사이즈는 64×64로, 텐서 형태로 처리했다.
- 하나의 데이터를 확인해보니 튜플 형태로 데이터와 라벨값이 정상적으로 출력된다.
- 이제 아까 불러온 데이터를 batch_szie만큼씩 나누어 모델에 교육시키기 위해서 train, val데이터를 torch로 불러왔다.
- 모델은 CNN기반으로 33의 Label값을 출력하기 위해 FullyConnected를 사용해 마지막에 33개의 출력값을 나오게 했고, Conv와 Maxpooling를 통해 모델을 구축했다.
- 또한, view(-1, 4096)을 통해 Flatten기능을 수행했다.
- 불러온 데이터와 모델을 통해 학습 모델과 평가 모델을 구현하는 함수를 만들고, trian에서 구축한 모델을 최적화를 시켜 교육시킨 후 모델의 loss값과 accuracy를 측정하는 함수를 만들었다.
- 이제 만든 교육 모델과 평가 모델을 하나의 모델로 합친 후 최고 성능을 보이는 epoch를 변수에 저장 후 해당 단계에서 모델의 return하는 함수를 만들었다
- 성능 테스트 결과 validation데이터에 91%의 성능을 보인다.