小编Joh*_*nna的帖子

改善使用 mnist 数据集训练的神经网络的真实结果

我已经使用 mnist 数据集用 keras 构建了一个神经网络,现在我正尝试将它用于实际手写数字的照片。当然,我并不期望结果是完美的,但我目前得到的结果还有很大的改进空间。

首先,我用一些用我最清晰的笔迹书写的单个数字的照片来测试它。它们是方形的,并且与 mnist 数据集中的图像具有相同的尺寸和颜色。它们保存在一个名为individual_test的文件夹中,例如:7(2)_digit.jpg

网络通常非常确定错误的结果,我会给你一个例子:

显然是 7

我得到这张图片的结果如下:

result:  3 . probabilities:  [1.9963557196245318e-10, 7.241294497362105e-07, 0.02658148668706417, 0.9726449251174927, 2.5416460047722467e-08, 2.6078915027483163e-08, 0.00019745019380934536, 4.8302300825753264e-08, 0.0005754049634560943, 2.8358477788259506e-09]
Run Code Online (Sandbox Code Playgroud)

所以网络有 97% 的把握确定这是一个 3,而这张图片并不是唯一的情况。在 38 张图片中,只有 16 张被正确识别。令我震惊的是,网络对它的结果如此确定,尽管它与正确的结果相差无几。

编辑
在为prepare_image ( img = cv2.threshold(img, 0.1, 1, cv2.THRESH_BINARY_INV)[1])添加阈值后,性能略有提高。它现在得到了 38 张图片中的 19 张正确,但对于包括上面显示的图片在内的一些图像,它仍然很确定是错误的结果。这就是我现在得到的:

result:  3 . probabilities:  [1.0909866760000497e-11, 1.1584616004256532e-06, 0.27739930152893066, 0.7221096158027649, 1.900260038212309e-08, 6.555900711191498e-08, 4.479645940591581e-05, 6.455550760620099e-07, 0.0004443934594746679, 1.0013242457418414e-09]
Run Code Online (Sandbox Code Playgroud)

所以现在只有 72% 确定它的结果更好,但仍然......



我可以做些什么来提高性能?我可以更好地准备我的图像吗?还是应该将自己的图像添加到训练数据中?如果是这样,我将如何做这样的事情?

编辑

这是上面显示的图片在应用prepare_image之后的样子:
我治疗后的照片
使用阈值后,这是同一张图片的样子:
阈值后
对比:这是mnist数据集提供的其中一张图片:
mnist 数字之一
他们看起来和我很相似。我该如何改进?
这是我的代码(包括阈值):

# import keras …
Run Code Online (Sandbox Code Playgroud)

python machine-learning mnist handwriting-recognition keras

7
推荐指数
1
解决办法
980
查看次数