I'm trying to print out all known classes with their probability values. The first value is the class with the highest probability.
Here is my code so far:
from keras.applications.vgg16 import VGG16
from keras.preprocessing.image import load_img
from keras.preprocessing.image import img_to_array
from keras.applications.vgg16 import preprocess_input
from keras.applications.vgg16 import decode_predictions
model = VGG16()
print(model.summary())
# load an image from file
image = load_img('./pictures/door.jpg', target_size=(224, 224))
image = img_to_array(image) #output Numpy-array
#4-dimensional: samples, rows, columns, and channels.
image = image.reshape((1, image.shape[0], image.shape[1], image.shape[2]))
# prepare the image for the VGG model.
image = preprocess_input(image)
# predict the probability across all output classes.
yhat = model.predict(image)
# convert the probabilities to class labels
label = decode_predictions(yhat)
# retrieve the most likely result, e.g. highest probability
for i in range(0,5):
label = label[i][i]
print('%s (%.2f%%)' % (label[1], label[2] * 100))
I get the following error:
Traceback (most recent call last):
File path, line 38, in <module>
print('%s (%.2f%%)' % (label[1], label[2] * 100))
IndexError: string index out of range
Do you have any idea how to handle it? Thanks in advance^^
You have an error in your code. Try this out:
labels = decode_predictions(yhat)[0]
# retrieve the most likely result, e.g. highest probability
for i in range(0,5):
label = labels[i]
#print('%s (%.2f%%)' % (label[1], label[2] * 100))
print('%s (%.2f%%)' % (label[1], float(label[2]) * 100))