当使用model.predict()进行预测时,获得与图像相同的输出数组



我是神经网络的新手,我正在研究图像预测。我从Kaggle下载了一个手势识别代码https://www.kaggle.com/code/benenharrington/hand-gesture-recognition-database-with-cnn并保存模型使用model.save('hand-guesture-model.h5')

所以当我试图预测图像时使用这个模型。我得到相同的输出数组不同的图像。

代码:

from keras.models import load_model
import cv2
from PIL import Image
import numpy as np
model = load_model('hand-guesture-model.h5')
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
img = Image.open('test.jpg').convert('L')
img = img.resize((120, 320))
arr = np.array(img, dtype = 'float32')
arr = arr.reshape(1,120, 320,1)
prediction = model.predict(arr)
print(prediction)
np.argmax(prediction[0])

结果:

1/1 [==============================] - 0s 77ms/step
[[1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]

无论我使用什么图像我得到相同的答案。

该模型要求输入图像的范围为0-1,而不是0-255
因此,通过除以255来缩放图像像素值应该可以解决您的问题。下面是完整的代码:

from keras.models import load_model
import cv2
from PIL import Image
import numpy as np
model = load_model('hand-guesture-model.h5')
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
img = Image.open('test.jpg').convert('L')
img = img.resize((120, 320))
arr = np.array(img, dtype = 'float32')
arr = arr.reshape(1,120, 320,1)
arr = arr/255.0 # Scale pixel values
prediction = model.predict(arr)
print(prediction)
np.argmax(prediction[0])

最新更新