程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了字符识别结果不佳大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决字符识别结果不佳?

开发过程中遇到字符识别结果不佳的问题如何解决?下面主要结合日常开发的经验,给出你关于字符识别结果不佳的解决方法建议,希望对你解决字符识别结果不佳有所启发或帮助;

我正在尝试从图像中读取六位数字。我使用 tensorflow/keras 进行训练。 这是我为此想出的模型:

@H_741_5@model = Sequential()

model.add(Conv2D(20,(5,5),padding="same",input_shape=(20,20,1),activation="relu"))
model.add(MaxPooling2D(pool_size=(2,2),StriDes=(2,2)))

model.add(Conv2D(50,2)))

model.add(Flatten())
model.add(Dense(500,activation="relu"))

model.add(Dense(10,activation="softmax"))

model.compile(loss="categorical_crossentropy",optimizer="adam",metrics=["accuracy"])

model.fit(X_Train,Y_Train,valIDation_data=(X_test,Y_test),batch_size=40,epochs=30,verbose=1)

我采集了 97,000 多个样本,其中 30% 用于测试。 训练后:

字符识别结果不佳

如您所见,样品上的结果非常好,但是当我使用相同的样品进行测试时,几乎每 10 个项目都会得到错误的结果。

我匹配了训练和测试样本,它们都是一样的。这是预处理部分:

letter_image = img_number[y: y + h,x: x + w]
letter_image = cv2.copymakeborder(letter_image,5,cv2.border_CONSTANT,value=(255,255,255))
letter_image = cv2.cvtcolor(letter_image,cv2.color_BGR2GRAY)
letter_image = Helper.resize_to_fit(letter_image,20)
raw = letter_image
letter_image = np.expand_dims(letter_image,axis=2)
letter_image = np.expand_dims(letter_image,axis=0)
preDiction = cheque_number_model.preDict(letter_imagE)
letter = cheque_number_label.inverse_transform(preDiction)[0]

如果有任何建议,我将不胜感激。 谢谢,也很抱歉我的英语。

解决方法

我认为您应该虑提高准确性的几点。

  1. 尝试增加训练-测试拆分。
  2. 您在 Conv2D 中添加的层具有非常小的 5x5 形状,而您的输入是 20x20。想想你在做什么,你实际上是在删减或忽略数据的重要特征。
  3. 随着您不断添加新层,形状保持不变,但神经元数量却在增加,这很荒谬。
  4. 还要虑最大池化对您的输入形状有何影响。

请查看这 4 点并进行相应的更改。 你会看到改善。请将结果回复给我。

@H_801_44@
@H_801_44@

大佬总结

以上是大佬教程为你收集整理的字符识别结果不佳全部内容,希望文章能够帮你解决字符识别结果不佳所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。