我正在尝试制作一个程序,您可以在其中输入(手写字母)图像,并输出预测。现在,我已经对模型进行了完整的训练(精度为90%),并保存了包含权重和所有内容的h5文件。
但是,当我尝试加载模型并预测图像时,它会使一切完全错误。
在这里,我首先收到一个文件路径,然后使用cv2加载图像并将其缩小为28x28。然后,由于将网络训练为带1通道的图像,因此我将图像转换为灰度,这时我调用了评估方法。
def fileBrowser():
filename = filedialog.askopenfilename(initialdir="/", title="Select file",
filetypes=(("jpeg files", "*.jpg"), ("all files", "*.*")))
global img
img = cv2.imread(filename)
img = cv2.resize(img, dsize=(28, 28))
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
prediction, confidence = network.evaluate(img)
之后,图像将重塑为4维。然后,我调用model.predict,其中将图像转换为numpy数组并除以255。得到的值小于1。
class Network:
class_mapping = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
def __init__(self):
self.model=keras.models.load_model('Z:\Projects\Python\gaoHandwriting\model.h5')
def evaluate(self, img):
img = img.reshape(1, 28, 28, 1))
prediction = self.model.predict(np.array(img/255.))
print(prediction[0])
return self.class_mapping[int(str(np.argmax(prediction[0]).item()))], str('%.2f' %
(prediction[0][int(str(np.argmax(prediction[0]).item()))]))
我每次运行此命令,都会使我的概率小于1%。我真的不知道为什么它不能准确预测,所以任何帮助将不胜感激!