I use the pre-trained VGG-16 model from Keras.
My working source code so far is like this:
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()) image = load_img('./pictures/door.jpg', target_size=(224, 224)) image = img_to_array(image) #output Numpy-array image = image.reshape((1, image.shape[0], image.shape[1], image.shape[2])) image = preprocess_input(image) yhat = model.predict(image) label = decode_predictions(yhat) label = label[0][0] print('%s (%.2f%%)' % (label[1], label[2]*100))
I wound out that the model is trained on 1000 classes. It there any possibility to get the list of the classes this model is trained on? Printing out all the prediction labels is not an option because there are only 5 returned.
Thanks in advance
Advertisement
Answer
You could use decode_predictions and pass the total number of classes in the top=1000
parameter (only its default value is 5).
Or you could look at how Keras does this internally: It downloads the file imagenet_class_index.json
(and usually caches it in ~/.keras/models/
). This is a simple json file containing all class labels.