뉴럴 네트워크(Neural Network)를 사용하여 직접 촬영한 손글씨 이미지로부터 숫자를 인식시켜 보았습니다.
지난번 포스팅과 데이터 훈련 시키는 방식만 다르기 때문에 1 ~ 6 번까지는 동일한 내용입니다.
Tensorflow 강좌 - Logistic Regression를 이용하여 실제 손글씨 숫자 인식해보기(MNIST) http://webnautes.tistory.com/1238 |
1. A4용지에 0 ~ 9까지 숫자를 적은 후, 카메라로 찍었습니다. 그리고나서 이미지를 10개로 나누어서 저장했습니다.
이미지 크기는 똑같을 필요없지만 중앙에 숫자가 오도록 이미지를 잘라줘야 합니다.
2. 세션을 시작하면서 디스크에 저장했던 모델 파라미터를 가져옵니다. 이미지로부터 숫자를 예측할 때 사용되어집니다.
with tf.Session() as sess: |
모델 파라미터를 저장했다가 불러오는 것은 다음 포스팅을 참고하세요.
예제로 배우는 텐서플로우 강좌 - 7. 훈련된 모델 파라미터 저장하기 http://webnautes.tistory.com/1237 |
3. 흑백 이미지로 읽어서 28 x 28 크기의 이미지로 변환합니다. 현재 흰바탕에 검은 글씨입니다.
gray = cv2.imread(str(no)+".png", 0) |
4. 검은색 바탕의 흰글씨로 이진화한 후, 숫자 영역외의 공백을 모두 제거합니다.
(thresh, gray) = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU) while np.sum(gray[0]) == 0: |
5. 숫자가 중앙에 오도록 공백을 다시 추가합니다.
if rows > cols: |
6. 이미지를 0 ~ 1 사이 값을 갖는 크기 784( = 28 x 28 )의 일차원 배열로 변환합니다.
flatten = gray.flatten() / 255.0 |
7. 뉴럴 네트워크를 사용하여 입력 이미지로부터 예측한 숫자를 출력합니다.
print(sess.run(tf.argmax(prediction, 1), feed_dict={X: images})) |
Logistic regression에서는 8을 5로 인식하는 오류가 있었는데 문제 없이 모두 인식되었습니다.
[0 1 2 3 4 5 6 7 8 9] |
8. 전체 코드입니다. 모델을 훈련시키는 코드와 모델을 사용하여 이미지를 인식하는 두개의 코드로 구성됩니다.
이 코드를 먼저 실행하여 훈련 결과물인 모델 파라미터를 디스크에 저장합니다.
# 수정 및 주석 : webnautes |
..
..
9. 훈련된 모델을 사용하여 이미지로부터 숫자를 예측하는 코드입니다.
import tensorflow as tf |
참고한 코드
https://github.com/opensourcesblog/tensorflow-mnist/blob/master/mnist.py
마지막 업데이트 - 2018. 9. 15
'Deep Learning & Machine Learning > 강좌&예제 코드' 카테고리의 다른 글
Tensorflow 강좌 - Tensorboard 간단한 사용방법 (5) | 2019.01.22 |
---|---|
Tensorflow 강좌 - 텍스트 분류( Text classification )를 위해 뉴럴 네트워크 학습 시키기 (0) | 2019.01.17 |
Tensorflow 강좌 - Logistic Regression를 이용하여 실제 손글씨 숫자 인식해보기(MNIST) (6) | 2018.09.15 |
예제로 배우는 텐서플로우 강좌 - 7. 훈련된 모델 파라미터 저장하기 (0) | 2018.08.31 |
예제로 배우는 텐서플로우 강좌 - 6. Logistic Regression( MNIST 데이터를 이용한 손글씨 인식 ) (0) | 2018.08.31 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!