Tensorflow:使用预训练初始模型

时间:2016-12-30 21:27:38

标签: python machine-learning tensorflow deep-learning

我想使用其中一种预训练张量流模型:https://github.com/tensorflow/models/tree/master/slim

加载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

我还检查了多张图片。网络一直关闭。

出了什么问题?

3 个答案:

答案 0 :(得分:1)

我认为您使用了错误的Imagenet同义词。具体来说,您使用的是2012版。您可以尝试这两项:imagenet_lsvrc_2015_synsets.txtimagenet_metadata

例如,如果您的输出是340,那么340-> n02389026->酸模

答案 1 :(得分:0)

我同意错误的synset,它可以使用imagenet文件自动下载,这样你肯定会有正确的:

from datasets import imagenet
names = imagenet.create_readable_names_for_imagenet_labels()

print(names[0])

答案 2 :(得分:0)

当您导入初始项时,

net, logits, end_points = inception_v4(inputs)

应该是

logits, end_points = inception_v4(inputs, is_training=False, dropout_keep_prob=1.0) 

推断

相关问题