尝试使用自定义飞机图片测试经过cifar-10训练的CNN

时间:2020-02-12 15:51:21

标签: python numpy tensorflow machine-learning keras

因此,在使用Keras在python中学习了CNN的基础之后,我尝试添加自己的飞机图片以测试我训练有素的程序。为此,我尝试导入1920x1080 png图像,经过一些研究,我发现了一种可能的方法来重塑图像,但出现以下错误消息:

回溯(最近通话最近): 文件“ C:/ Users / me / Desktop / Programming Courses / 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 \ fromnumeric.py”,行301 return _wrapfunc(a,'reshape',newshape,order = order) _wrapfunc中的文件“ C:\ Users \ me \ AppData \ Roaming \ Python \ Python37 \ site-packages \ numpy \ core \ fromnumeric.py”,第61行 返回界限(* 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 :(得分:0)

首先,您的图片是彩色的,因此您需要将其加载为彩色图片:

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 expand_dim功能:

img = np.expand_dims(img, 0) #give a shape of (1, 32, 32, 3), 0 means first dim