Попытка проверить мою обученную Сифар-10 CNN с пользовательским изображением самолета - PullRequest
0 голосов
/ 12 февраля 2020

Итак, изучив основы CNN с Керасом в python, я попытался добавить свою собственную фотографию самолета, чтобы проверить мою обученную программу. Для этого я попытался импортировать изображение PNG 1920x1080, после некоторых исследований я нашел вероятный способ изменить изображение, но я получаю следующее сообщение об ошибке:

Traceback (последний вызов был последним): File " C: / Users / me / Рабочий стол / Курсы программирования / Image_Classifier_Project / Model_Test.py ", строка 21, в файле img = np.reshape (img, [1, 32, 32, 3])" <<strong> array_function internals> ", строка 6, в файле изменения формы" C: \ Users \ me \ AppData \ Roaming \ Python \ Python37 \ site-packages \ numpy \ core \ fromnumeri c .py ", строка 301, в новой форме вернуть _wrapfun c (a, 'изменить форму', новостную форму, порядок = порядок) Файл "C: \ Users \ me \ AppData \ Roaming \ Python \ Python37 \ site-packages \ numpy \ core \ fromnumeri c .py ", строка 61, в _wrapfunc предельная граница (* args, ** kwds) ValueError: невозможно преобразовать массив размером 1024 в форму (1,32,32,3)

Изображение в цвете (как и учебные).

Вот код. Я называю результаты своих тренировок из файла.

from keras.datasets import cifar10
import keras.utils as utils
from keras.models import load_model
import numpy as np
import cv2

# Get Model Data
labels = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']

(_, _), (x_test, y_test) = cifar10.load_data()

x_test = x_test.astype('float32') / 255.0
y_test = utils.to_categorical(y_test)

model = load_model('Classified.h5')

img = cv2.imread("a400m.png", 0)
img = cv2.resize(img, (32, 32))

img = np.reshape(img, [1, 32, 32, 3])

# results = model.evaluate(x=x_test, y=y_test)
# print("Loss: ", results[0])
# print("Accuracy", results[1])

test_image_data = np.asarray(img)

prediction = model.predict(x=test_image_data)
print("Prediction: ", labels[np.argmax(prediction)])
# max_index = np.argmax(prediction[0])
# print("Prediction: ", labels[max_index])

Извините за грязный код, просто попытался его реализовать, а не начинать с нуля

Заранее спасибо!

1 Ответ

0 голосов
/ 12 февраля 2020

Во-первых, ваше изображение в цвете, поэтому вам нужно загрузить его как цветное изображение:

img = cv2.imread("a400m.png", 1)  # 0 means grayscale

Во-вторых:

img = cv2.resize(img, (32, 32)) #give a shape of (32, 32, 3)

Эта строка изменит ваше изображение формы (1920, 1080, 3) до формы (32, 32, 3).

Последнее, чтобы предсказать на этом изображении, вам нужно увеличить его тусклость, для этого используйте numpy Функция расширения_дим:

img = np.expand_dims(img, 0) #give a shape of (1, 32, 32, 3), 0 means first dim
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...