-1

I am using the Tensorflow for Poets tutorial to classify an image. I am using the code below to classify an image, but would like to feed in a numpy array as the image instead of a jpeg, how would the code have to change?

import tensorflow as tf
import sys

# change this as you see fit
image_path = sys.argv[1]

# Read in the image_data
image_data = tf.gfile.FastGFile(image_path, 'rb').read()

# Loads label file, strips off carriage return
label_lines = [line.rstrip() for line 
                   in tf.gfile.GFile("/tf_files/retrained_labels.txt")]

# Unpersists graph from file
with tf.gfile.FastGFile("/tf_files/retrained_graph.pb", 'rb') as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())
    _ = tf.import_graph_def(graph_def, name='')

with tf.Session() as sess:
    # Feed the image_data as input to the graph and get first prediction
    softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')

    predictions = sess.run(softmax_tensor, \
             {'DecodeJpeg/contents:0': image_data})

    # Sort to show labels of first prediction in order of confidence
    top_k = predictions[0].argsort()[-len(predictions[0]):][::-1]

    for node_id in top_k:
        human_string = label_lines[node_id]
        score = predictions[0][node_id]
print('%s (score = %.5f)' % (human_string, score))

image_data = tf.gfile.FastGFile(image_path, 'rb').read() - If I'm not reading from a file, I imagine I don't need this.

predictions = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': image_data}) - I know I don't need to override this aspect of the feed_dict, but what should I do instead?

Overall, how can I make sure that a nparray I have that represents an image be used properly for prediction?

1 Answer 1

2

Thank you all, I have found the answer:

supposed I have a 3-dimensional numpy array with size (100,132,3) called image.

All I have to do is pass it into the softmax classifier using 'DecodeJpeg:0 rather than DecodeJpeg/contents:0 like so...

predictions = sess.run(softmax_tensor, {'DecodeJpeg:0': image})

... and there you have it

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.