Я считаю, что вам нужно инвертировать цветовую карту для вашего нового (нарисованного от руки) изображения.
Когда я смотрю на примеры изображений MNIST, я вижу что-то вроде этого:
# show mnist image
index_of_mnist_img = 0
plt.imshow(x_test[index_of_mnist_img], cmap = plt.cm.binary)
plt.show()
Однако, если я сделаюНапример, рукописная цифра, и читать ее, как у вас, я вижу перевернутое изображение.
img = cv2.imread("4.png")
img = cv2.resize(img, (28,28))
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.imshow(img, cmap = plt.cm.binary)
Вы можете инвертировать изображение с помощьюOpenCV, добавив одну строку, cv2.bitwise_not()
.
img = cv2.imread(r"4.png")
img = cv2.resize(img, (28,28))
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img= cv2.bitwise_not(img) # invert image
plt.imshow(img, cmap = plt.cm.binary)
Когда я инвертирую изображение, я получаю правильные прогнозы из нейронной сети, которую выОбучались выше.
predictionsB = model.predict(img)
print(np.argmax(predictionsB[0]))
4