최근... (음 제가 보통 예약글로 발행하니까.. 어쩌면 연달아서) 발행한 글에서 케라스를 이용해서 MNIST 필기 숫자를 익하는 CNN 알고리즘을 간단하게 테스트하는 투토리얼을 학습한 후 마치 지가 한듯이(^^) 글을 올린적이 있는데요.[바로가기] 이번에는 그 때의 학습된 모델을 저장하고, 다시 읽어 와서 적용만 하는 부분과 내가 쓴 글씨를 인식하는 부분을 보여드릴려고 합니다. 먼저 학습을 수행한 이전 글[바로가기]에서
저 위치에 model.save 명령으로 학습이 완료된 모델을 저장해둡니다. 이 내용은 김태영님의 블록과 함께 하는 파이썬 딥러닝 케라스[바로가기]에 있는 내용입니다. 아무튼 저렇게 저장하고 나면.. 이제 다른 파일에서 저 모델을 읽어주면 됩니다.^^
import warnings warnings.simplefilter(action='ignore', category=FutureWarning) import sys import tensorflow as tf import keras print('Python version : ', sys.version) print('TensorFlow version : ', tf.__version__) print('Keras version : ', keras.__version__)
저걸 실행하면 텐서플로우는 1.5, 케라스는 2.1.5라고 뜹니다. 당연히 제 경우죠^^
from keras.models import load_model model = load_model('MNIST_CNN_model.h5')
이제. 위 코드로 이미 저장된 학습 모델을 읽어옵니다. 와우~
model.summary()
model.summary를 확인해보면
그때 학습한 모델이 맞네요^^ 이제.. 중요합니다.ㅋㅋㅋㅋ.
연습장에다가 제가 숫자를 적은거죠.. 흠. 멋지게 테스트하고 싶었지만.. 그냥 이렇게 하는 걸로...ㅠㅠ
그리고, 저는 맥이라서 PhotoScape X로 크기를 28*28 픽셀로 일일이 바꾸어 주었습니다. pil이나, opencv로 멋지게 하는 것은 다음에.ㅠㅠ.
이렇게 크기를 조절하고.
음영반전을 주고, 블랙앤화이트 효과도 주었습니다.~~ 이걸...
import matplotlib.pyplot as plt %matplotlib inline test1 = plt.imread('./my_num/re_1.jpg') plt.imshow(test1);
로 읽어보면...
이렇게 됩니다. 흠...ㅠㅠ.
test_num = plt.imread('./my_num/re_1.jpg') test_num = test_num[:,:,0] test_num = (test_num > 125) * test_num test_num = test_num.astype('float32') / 255. plt.imshow(test_num, cmap='Greys', interpolation='nearest'); test_num = test_num.reshape((1, 28, 28, 1)) print('The Answer is ', model.predict_classes(test_num))
이렇게 하면... 내가 쓴 숫자가 뭔지 확인할 수 있습니다. 세 번째줄의 > 125는 그냥 귀찮아서 자세히 안 알아보고 threshold 개념으로 125라고 줘버렸습니다. 지금은 그걸 정하는게 중요한게 아니라서요~^^
아하~~ 제가 쓴 숫자 1을 1이라고 생각해주는군요^^
2도...
3도... ㅎㅎㅎ. 살짝 무리하게 쓴 0은 몰라봤지만... 그래도 괜찮은 결과입니다.^^ 오늘 중요한 것은 학습된 모델을 그냥 사용만 해서, 내가 쓴 숫자를 확인해 보았다는 거죠.. 킁~~~^^
'Theory > DeepLearning' 카테고리의 다른 글
[Keras] 붓꽃 Iris 데이터 분류해보기 Iris classification using Keras (30) | 2018.05.18 |
---|---|
Python에서 OpenCV를 통해 내가 손으로 쓴 숫자 영역 확인하기 (42) | 2018.05.08 |
Python에서 OpenCV를 이용해서 초간편하게 사람 얼굴, 몸을 인식하기 (42) | 2018.04.27 |
[Keras] MNIST 데이터 셋을 이용한 필기 글씨에 대한 CNN Tutorial (56) | 2018.04.16 |
[Keras] 타이타닉 생존자 분석. 디카프리오는 정말 살 수 없었을까? (32) | 2018.04.13 |
[Tensor Flow] 신경망을 조금 더 깊게 하고 xavier_initializer를 이용해서 MNIST 숫자 판독해보기 (30) | 2018.04.09 |
[Keras] 케라스로 풀어보는 다변수 입력에 대한 선형회귀 예제 - 나이, 체중에 대한 혈액지방함량 문제- (18) | 2018.04.06 |