텐서플로우 활용한 수기데이터(손글씨) 인식 모델 만들기
1.계획
1. 28px * 28px 의 손글씨 숫자 이미지를 입력 받아 실제로 의미하는 숫자를 인식시키기.
2. mnist 손글씨 데이터셋을 머신러닝을 통해 학습시키고 실제로 예측하기.
3. GUI프로그램으로 구현해보기
4. 데이터를 입력하여 실제로 예측이 가능한지 검증하기
2.학습데이터로부터 머신러닝 모델링 수행 및 결과 동영상
★결과★
DNN모델로 epochs=100으로 합습시킨 후
mnist 샘플데이터를 별도로 편집하여 저장한 테스트데이터 경우 90%의 정확도를 보임.
C:\springworkspace\mytest\mytest\data_0.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 2s 2s/step
이미지 예측값 : [0]
C:\springworkspace\mytest\mytest\data_1.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 47ms/step
이미지 예측값 : [1]
C:\springworkspace\mytest\mytest\data_2.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 56ms/step
이미지 예측값 : [2]
C:\springworkspace\mytest\mytest\data_3.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 46ms/step
이미지 예측값 : [3]
C:\springworkspace\mytest\mytest\data_4.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 48ms/step
이미지 예측값 : [4]
C:\springworkspace\mytest\mytest\data_5.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 47ms/step
이미지 예측값 : [5]
C:\springworkspace\mytest\mytest\data_6.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 46ms/step
이미지 예측값 : [6]
C:\springworkspace\mytest\mytest\data_7.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 45ms/step
이미지 예측값 : [7]
C:\springworkspace\mytest\mytest\data_8.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 48ms/step
이미지 예측값 : [9]
C:\springworkspace\mytest\mytest\data_9.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 48ms/step
이미지 예측값 : [9]
CNN모델로 epochs=100으로 합습시킨 후
mnist 샘플데이터를 별도로 편집하여 저장한 테스트데이터 경우 100%의 정확도를 보임.
C:\springworkspace\mytest\mytest\data_0.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 1s 596ms/step
이미지 예측값 : [0]
C:\springworkspace\mytest\mytest\data_1.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 77ms/step
이미지 예측값 : [1]
C:\springworkspace\mytest\mytest\data_2.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 75ms/step
이미지 예측값 : [2]
C:\springworkspace\mytest\mytest\data_3.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 72ms/step
이미지 예측값 : [3]
C:\springworkspace\mytest\mytest\data_4.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 80ms/step
이미지 예측값 : [4]
C:\springworkspace\mytest\mytest\data_5.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 81ms/step
이미지 예측값 : [5]
C:\springworkspace\mytest\mytest\data_6.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 75ms/step
이미지 예측값 : [6]
C:\springworkspace\mytest\mytest\data_7.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 72ms/step
이미지 예측값 : [7]
C:\springworkspace\mytest\mytest\data_8.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 74ms/step
이미지 예측값 : [8]
C:\springworkspace\mytest\mytest\data_9.jpg
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 75ms/step
이미지 예측값 : [9]
3. 선택한 머신러닝 기법의 적절성
28px의 저해상도 사진이고, 손글씨의 경우 구분선의 정확도가 중요하기 때문에 DNN기법을 사용하여 편집된 별도의 테스트 데이터를 테스트해 본 결과 90%의 정확도를 보이고 있기 때문에 손글씨 데이터를 예측하는데 적절한 기법으로 판단됨.
다만 DNN의 경우 공간정보가 소실되기 때문에 데이터의 위치가 조금 틀어지면 인식을 하지 못하는 경우가 발생하므로, CNN모델을 사용하면 더 높은 정확도를 보임.
4. 소스파일 및 사용데이터
5.한국기수교육대학교 STEP 머신러닝 기반 데이터분석 수료증