2016-12-30 3 views
1

Я хотел бы использовать одну из этих моделей pretrained tensorflow: https://github.com/tensorflow/models/tree/master/slimTensorflow: использование pretrained создания модели

После загрузки модели inceptionv4, у меня были проблемы с некоторыми тестируемых предсказаний. Существует аналогичный вопрос: Using pre-trained inception_resnet_v2 with Tensorflow

В этом вопросе решением было исправить предварительную обработку изображения. я попытался использовать диапазоны для цветовых каналов от 0 до 1 и от -1 до 1.

Вот мой код (я импортировал все из исходного файла inceptionv4):

checkpoint_file = '..\checkpoints\inception_resnet_v2_2016_08_30.ckpt' 
sample_images = ['horse.jpg', 'hound.jpg'] 
sess = tf.Session() 

im_size = 299 
inception_v4.default_image_size = im_size 

arg_scope = inception_utils.inception_arg_scope() 
inputs = tf.placeholder(tf.float32, (None, im_size, im_size, 3)) 

with slim.arg_scope(arg_scope): 
    net, logits, end_points = inception_v4(inputs) 

saver = tf.train.Saver() 

saver.restore(sess,'..\checkpoints\inception_v4.ckpt') 

for image in sample_images: 
    im = Image.open(image) 
    im = im.resize((299, 299)) 
    im = np.array(im) 
    im = im.reshape(-1, 299, 299, 3) 
    im = 2. * (im/255.) - 1. 
    logit_values = sess.run(logits, feed_dict={inputs: im}) 
    print(np.max(logit_values)) 
    print(np.argmax(logit_values)) 

В код, я тестирую сеть с лошадью. Это картина. enter image description here

При текущей предварительной обработке цветные каналы от -1 до 1, сеть считает, что эта лошадь является купальной крышкой. Для масштабирования от 0 до 1 он становится выпьем, по-видимому маленькой птицей. Я использовал эту таблицу для определения прогнозируемых классов: https://gist.github.com/aaronpolhamus/964a4411c0906315deb9f4a3723aac57

Я также проверил несколько изображений. Сеть постоянно отключена.

Что происходит не так?

ответ

1

Я думаю, вы использовали неправильные синтезаторы для Imagenet. Чтобы быть конкретным, тот, который вы использовали, - это версия 2012 года. Вы можете попробовать эти два: imagenet_lsvrc_2015_synsets.txt и imagenet_metadata.

Например, если ваш выход 340, затем 340-> n02389026-> щавель

0

Я согласен на неверном synset, он может быть автоматически загружены с файлом imagenet, таким образом ваш уверены, чтобы иметь правильный:

from datasets import imagenet 
names = imagenet.create_readable_names_for_imagenet_labels() 

print(names[0]) 
Смежные вопросы