2016-12-02 7 views
0

nicht vorhersagen Ich folgte diesem Repo (https://github.com/iamgroot42/keras-finetuning), ich habe mit dem Training gemacht.Kann Input von ImageNet-Klassen [Keras + Tensorflow]

Jetzt möchte ich mein Eingangsbild sowohl meines eigenen Datensatzes (enthält 2 Klassen, Avocado & Mango) und ImageNet festlegen. Aber das Vorhersageergebnis gibt immer den Index 0 oder 1 zurück (ich glaube, es war Avocado oder Mango) und gab nie eine Klasse von ImageNet zurück. Z.B. Ich möchte einen iPod Bild vorherzusagen, die von IMAGEnet ursprünglichen Klasse kam, aber die model.predict (...) immer 0 und 1.

Mein Modell-labels.json Rückkehr:

["avocados", "mangos"] 

Mein Code für die Vorhersage:

img = imresize(imread('ipod.png', mode='RGB'), (224, 224)).astype(np.float32) 
img[:, :, 0] -= 123.68 
img[:, :, 1] -= 116.779 
img[:, :, 2] -= 103.939 
img[:,:,[0,1,2]] = img[:,:,[2,1,0]] 
img = img.transpose((2, 0, 1)) 
img = np.expand_dims(img, axis=0) 
img = img.reshape(img.shape[0], n, n, n_chan) 

out = model.predict(img, batch_size=batch_size) 
pred = np.argmax(out, axis=1) 

print(pred) 

Kann mir jemand helfen?

+0

Können Sie Ihr Modell Definition posten? –

+0

@ avijit-dasgupta Hier ist das vollständige Skript: github.com/iamgroot42/keras-finetuning/blob/master/net.py –

Antwort

1

vielleicht müssen Sie nur zwischen class index zu imagenet labels übersetzen?

Versuch:

from imagenet_utils import decode_predictions 

[...] 

img = imresize(imread('ipod.png', mode='RGB'), (224, 224)).astype(np.float32) 
img[:, :, 0] -= 123.68 
img[:, :, 1] -= 116.779 
img[:, :, 2] -= 103.939 
img[:,:,[0,1,2]] = img[:,:,[2,1,0]] 
img = img.transpose((2, 0, 1)) 
img = np.expand_dims(img, axis=0) 
img = img.reshape(img.shape[0], n, n, n_chan) 

out = model.predict(img, batch_size=batch_size) 
#add decoding line here to get the top 3 
print('Predicted:', decode_predictions(out, top=3)[0]) 

Größe)

Verwandte Themen