Недавно написал распознавание цифр на keras . Но сейчас захотелось ещё распознавать цифры на загружаемых картинка но, чтобы подать картинку в модель надо её сжать в 28 x 28 , но тогда получается полная каша (проверял при помощи plt) и смысла тогда 0 ,что делать ? Первая идея пикселизовать изображение , но может есть ещё способы ?
P.S. сейчас ещё попробовал рисовать сразу в 28 на 28 , вроде всё норм и если сравнивать картинки из mnist и мои , то выглядят схоже , но в итоге всё равно каша
И да , я заранее извиняюсь за синтаксическую кашу , но я просто писал в коллабе , вот и быстро сюда перекинул
P.S. сейчас ещё попробовал рисовать сразу в 28 на 28 , вроде всё норм и если сравнивать картинки из mnist и мои , то выглядят схоже , но в итоге всё равно каша
И да , я заранее извиняюсь за синтаксическую кашу , но я просто писал в коллабе , вот и быстро сюда перекинул
Python:
import numpy as np
import pandas as pd
from tensorflow import keras
from keras import layers
from keras.layers import Dense, Flatten
from keras.utils import to_categorical
import matplotlib.pyplot as plt
from keras.datasets import mnist
import PIL
import tkinter
(X_train, y_train), (X_test, y_test) = mnist.load_data()
model = keras.Sequential([
Flatten(input_shape=(28, 28, 1)),
Dense(16, activation='relu'),
Dense(16, activation='relu'),
Dense(10, activation='softmax')
])
print(model.summary())
X_train = X_train / 255
X_test = X_test / 255
y_train_cat = keras.utils.to_categorical(y_train, 10)
y_test_cat = keras.utils.to_categorical(y_test, 10)
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.evaluate(X_test, y_test_cat)
model.fit(X_train, y_train_cat, batch_size=32, epochs=5, validation_split=0.2)
from google.colab import files
# Загрузка файла с компьютера
uploaded = files.upload()
# Получение имени загруженного файла
filename = next(iter(uploaded))
# Проверка, что файл загружен успешно
if uploaded:
print('Файл успешно загружен:', filename)
else:
print('Ошибка загрузки файла.')
from PIL import Image
# Прочитайте изображение
image = Image.open(filename)
plt.imshow(image)
plt.show()
# Преобразуйте изображение в массив numpy
image_array = np.array(image)
# Измените размер изображения до 28x28 пикселей
resized_image = np.resize(image_array, (28, 28))
plt.imshow(resized_image)
plt.show()
Последнее редактирование: