신경망과 Tensorflow를 사용한 손 숫자 예측
Tensorflow 패키지가 설치되어 있는지 확인하십시오. 여기에서 Deep Learning 라이브러리로 활용됩니다.
우리에게 필요한 모든 패키지를 가져오자
import os
import cv2
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
모든 필수 패키지를 가져온 후에는 MNIST 데이터 세트를 가져와야 모델을 훈련할 수 있습니다. 데이터 세트를 가져온 후 교육 및 테스트로 분할합니다.
mnist = tf.keras.datasets.mnist
(x_train , y_train) , (x_test , y_test) = mnist.load_data()
x_train = tf.keras.utils.normalize(x_train , axis = 1)
x_test = tf.keras.utils.normalize(x_test , axis=1)
이제 우리의 신경망 모델을 통합할 시간입니다. Keras로 네트워크 모델을 만들어 봅시다.
Flatten 레이어를 사용하여 이미지의 치수를 단일 치수로 재구성합니다. 128개 뉴런, 128개 뉴런 및 64개 뉴런의 Dense 레이어는 각각 두 번째, 세 번째 및 네 번째 레이어를 구성합니다. 최종 출력 레이어는 MNIST 데이터 세트에 10개의 서로 다른 클래스가 있기 때문에 10개의 뉴런이 있는 Dense 레이어입니다.
model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape = (28 , 28)))
model.add(tf.keras.layers.Dense(128 , activation='relu'))
model.add(tf.keras.layers.Dense(128 , activation='relu'))
model.add(tf.keras.layers.Dense(64 , activation='relu'))
model.add(tf.keras.layers.Dense(10 , activation='softmax'))
나중에
adam
에 optimizer
, accuracy
에 metrices
, sparse_categorical_crossentropy
에 loss
를 지정하여 네트워크 모델을 컴파일해 보겠습니다.model.compile(optimizer='adam' , loss='sparse_categorical_crossentropy' , metrics=['accuracy'])
마지막으로
fit
함수를 사용하여 모델을 훈련합니다.학습된 모델을 테스트해야 합니다. figma로 생성된 입력 이미지를 제공할 예정입니다.
digits
라는 폴더를 만든 다음 그 안에 숫자 이미지를 digit1.png, digit2.png 등으로 넣습니다.def predict_img(model):
image_number = 1
while os.path.isfile(f"digits/digit{image_number}.png"):
img = cv2.imread(f"digits/digit{image_number}.png")[:,:,0]
img = cv2.resize(img,(28 , 28))
img = np.invert(np.array([img]))
prediction = model.predict(img)
print(f"This digit is probably a {np.argmax(prediction)}")
plt.imshow(img[0] , cmap = plt.cm.binary)
plt.show()
image_number += 1
모델을 매개변수로 사용하여 이 함수를 호출해 봅시다.
predict_img(model)
결과적으로 아래와 같은 일련의 사진을 얻을 수 있습니다.
이제 모델을
hand_digit.h5
로 저장하고 해당 모델을 사용하여 예측을 수행하는 다른 접근 방식을 시도해 보겠습니다.model.save('hand_digit.h5')
loaded_model = tf.keras.models.load_model('hand_digit.h5')
loss , accuracy = model.evaluate(x_test , y_test )
print(loss)
print(accuracy)
predict_img(loaded_model)
결과적으로 최종 출력은 다음과 같습니다.
그 결과 다른 네트워크를 개발하고 작업했습니다. jupyter 파일은 내 github 저장소에서 찾을 수 있습니다.
Github 레포 : https://github.com/ndrohith09/Hand-digit-classificaiton-using-MNIST-dataset-and-CNN
이 블로그가 손 숫자 인식을 위한 자신만의 CNN 모델을 만드는 데 도움이 되기를 바랍니다.
Reference
이 문제에 관하여(신경망과 Tensorflow를 사용한 손 숫자 예측), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ndrohith/hand-digit-prediction-using-cnn-and-tensorflow-23d1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)