您的位置:首页 > 其它

利用已经得到的keras模型识别自己手写的数字

2018-02-25 21:57 323 查看
环境:Python+keras,后端为Tensorflow
训练集:MNIST
对于如何训练一个识别手写数字的神经网络,网上资源十分丰富,并且能达到相当高的精度。但是很少有人涉及到如何将图片输入到网络中并让已经训练好的模型惊醒识别,下面来说说实现方法及注意事项。
首先import相关库,这里就不说了。
然后需要将训练好的模型导入,可通过该语句实现:model = load_model('cnn_model_2.h5') (cnn_model_2.h5替换为你的模型名)
之后是导入图片,需要的格式为28*28。可用opencv导入:img = cv2.imread('temp3.png', 0) (temp3.png替换为你手写的图片)
然后reshape一下以符合模型的输入要求:img = (img.reshape(1,1,28,28)).astype("float32")/255
之后就可以用模型识别了:predict = model.predict_classes(img)
最后print一下predict即可。

下面划重点:因为MNIST使用的是黑底白字的图片,所以你自己手写数字的时候一定要注意把得到的图片也改成黑底白字的,否则会识别错(至少我得到的结论是这样的 ,之前用白底黑字的图总是识别出错)

源码一览:
import cv2
import numpy as np
from keras.models import load_model

model = load_model('cnn_model_2.h5')

image = cv2.imread('temp3.png', 0)
img = cv2.imread('temp3.png', 0)

img = (img.reshape(1,1,28,28)).astype("float32")/255
predict = model.predict_classes(img)
print ('识别为:')
print (predict)

cv2.imshow("Image1", image)
cv2.waitKey(0)

效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: