我使用自己的自定义数据集训练了CNN,其中使用PIL库完成了数据集图像的调整。现在,当我尝试预测数据集中输入图像的标签时,它可以正常工作。我在CNN课程中预测的功能如下:
def predict(self, X):
X = np.asarray(X, dtype=np.float32)
if self.pred is None:
try:
self.pred = theano.function([self.input_var], T.argmax(self.get_output(network=self.network, deterministic=True), axis=1))
except:
print("failed")
else:
pass
dim = X.ndim
if dim == 3:
X = X[newaxis,:,:,:]
elif dim == 2:
X = X[newaxis, newaxis, :, :]
else:
pass
try:
predicted_label = self.pred(X)
return int(predicted_label)
except:
print("failed")
这是从主要人员这样称呼的:
[bilder, label, names] = read_images1(dataset_path, sz=im_size, na=False)
bilder = np.asarray(bilder, dtype=np.float32)
print("The shape of bilder is; number of images: {}, height: {}, width: {}".format(bilder.shape[0], bilder.shape[1], bilder.shape[2]))
pred = model.predict(bilder[0])
print("Predicted label for image is: {}".format(pred))
bilder1 = bilder[0]
#bilder1 = cv2.resize(bilder1, (58, 58), interpolation=cv2.INTER_CUBIC)
pred1 = model.predict(bilder[400])
print("Predicted label for image is: {}".format(pred1))
bilder几乎是一个有形状的数组(图像,高度,宽度),如果我运行代码,输出如下:
The shape of bilder is; number of images: 442, height: 58, width: 58
Predicted label for image is: 3
Predicted label for image is: 39
Process finished with exit code 0
请注意:
#bilder1 = cv2.resize(bilder1, (58, 58), interpolation=cv2.INTER_CUBIC)
是评论而未使用。现在,如果我发表评论,我得到以下输出:
The shape of bilder is; number of images: 442, height: 58, width: 58
Predicted label for image is: 3
意味着在我自己停止代码之前它会卡在这一部分上:
try:
predicted_label = self.pred(X)
return int(predicted_label
我根本不明白。存储在bilder1中的图像甚至没有在预测中使用,因为它只是存储在bilder1中,然后当我继续尝试在bilder中预测图像nr 400时它会卡住..这只是一个测试,因为我试图做直播通过网络摄像头识别,在调整面部图像大小后出现同样的问题。
编辑:问题似乎与使用cv2库对图像所做的任何更改一致。这些图像是否在神经网络中使用似乎并不重要。