To
CNN으로 깃발 인식 - (3) 모델 만들기, 평가하기 본문
Tensorflow를 사용하며 느낀 것은 웬만한 것은 구현이 다 되어있다는 사실이다. 그래서 이론적인 부분을 깊게 알지 못해도 모델은 어떻게 만지다 보면 짤 수 있다. 그래서 사람들이 tensorflow를 많이 사용하는 것 같다.
Data 불러오기
먼저 데이터를 ImageDataGenerator를 사용해 불러오자.
너무 데이터 수가 적어서 ImageDataGenerator에서 Data Augmention을 해주었다. 함수들에 대한 자세한 argument들과 설명은 https://www.tensorflow.org/api_docs 에서 참고하자.
여기서 왜 (2)편에서 폴더를 깔끔하게 정리해야 하는지 이유가 나온다. .flow_from_directory를 사용하면 폴더별로 다른 클래스라고 자동으로 인식하고 alphabetical한 order으로 자동으로 0,1,2,3.. 을 labeling해준다. 원래대로라면 또 한참 고민해서 함수를 구현해야 했을 작업인데 정말 편했다.
모델 구성하기
그런 다음, keras.layers를 이용해 모델을 구성하자.
이미 Layer들이 다 구현되어 있어서 굳이 하나하나 layer들을 구현할 필요가 없다. 그냥 가져다 쓰면 된다!! 밑바닥부터 시작하는 딥러닝 때는 하나하나 다 직접 짰는데.. 물론 나중에 깊게 공부할 때는 하나하나 다 구현을 알아야하겠지만 모델을 이렇게 쉽게 만들 수 있다는 것은 정말 매력적이다. model.summary()는 심지어 모델 구조가 어떻게 생겼는지 요약해준다.
모델 학습
바로 train 시켜보자.
모델 평가
전반적으로 validation set의 accuracy가 train set의 accuracy와 차이가 있었다. Overfitting이 의심된다. 그래프를 그려보면 더 잘 보일 것이다.
제대로 overfitting 되었다. 이런 모델의 accuracy는 어느정도일까?
코드를 돌려보니 정확도는 대략 80%정도이다. 2000개의 데이터만으로 얻은 결과이므로 꽤 만족한다.
다음 글에서는 ILSRVC 수상 Model들을 살펴보고 다양한 방법을 사용해 더 발전된 모델을 만들어보겠다.
'Development Log > Deep Learning Study' 카테고리의 다른 글
CNN으로 깃발 인식 - (2) 데이터 수집/Labeling/Resizing/정리 (0) | 2020.05.21 |
---|---|
CNN으로 깃발 인식 - (1) 주제 선정 및 환경 세팅 (0) | 2020.04.25 |
딥러닝 스터디 첫 프로젝트...? (0) | 2020.04.25 |