2016-12-02 14 views
0

このレポ(https://github.com/iamgroot42/keras-finetuning)に従ったので、私はトレーニングを終えました。ImageNetクラスからの入力を予測できません[Keras + Tensorflow]

今、自分のデータセット(2つのクラス、Avocado &マンゴーを含む)とImageNetの両方の入力データを予測したいと思います。しかし、予測結果は常にインデックス0または1(私はそれがアボカドまたはマンゴーだったと思います)を返すことはなく、ImageNetからクラスを返すことはありません。例えば。私はImageNet元のクラスから来たiPod用画像を予測したいのですが、model.predict(...)は常に0と1

マイモデルlabels.jsonを返す:

["avocados", "mangos"] 

私のコード予測のための:

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) 

誰でも私を助けることができますか?

+0

あなたのモデル定義を投稿することができますか? –

+0

@ avijit-dasguptaここには完全なスクリプトがあります:github.com/iamgroot42/keras-finetuning/blob/master/net.py –

答えて

1

多分class indexからimagenet labelsに変換するだけでいいですか?

試しに:

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]) 

サイズ)

関連する問題