aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/examples/image_retraining
diff options
context:
space:
mode:
authorGravatar Mark Daoust <markdaoust@google.com>2017-11-01 11:44:34 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2017-11-01 11:47:38 -0700
commit6c4a769ab54599b2063745a601baef71006364e8 (patch)
treeb7c53ab1670da6327c9eddc4415d08bad5681b21 /tensorflow/examples/image_retraining
parent7a5b81c29081696cba956c668af55978685e57bf (diff)
Delete duplicate label_image script.
The version in examples/label_image is more complete (with image size and normalization options), so it can be used with `mobilenets`. Also: removed bazel from main tutorial instructions. PiperOrigin-RevId: 174212674
Diffstat (limited to 'tensorflow/examples/image_retraining')
-rw-r--r--tensorflow/examples/image_retraining/BUILD14
-rw-r--r--tensorflow/examples/image_retraining/label_image.py147
-rw-r--r--tensorflow/examples/image_retraining/retrain_test.py31
3 files changed, 0 insertions, 192 deletions
diff --git a/tensorflow/examples/image_retraining/BUILD b/tensorflow/examples/image_retraining/BUILD
index c8c136ac14..9f9244a74c 100644
--- a/tensorflow/examples/image_retraining/BUILD
+++ b/tensorflow/examples/image_retraining/BUILD
@@ -25,23 +25,10 @@ py_binary(
],
)
-py_binary(
- name = "label_image",
- srcs = [
- "label_image.py",
- ],
- srcs_version = "PY2AND3",
- visibility = ["//tensorflow:__subpackages__"],
- deps = [
- "//tensorflow:tensorflow_py",
- ],
-)
-
py_test(
name = "retrain_test",
size = "small",
srcs = [
- "label_image.py",
"retrain.py",
"retrain_test.py",
],
@@ -51,7 +38,6 @@ py_test(
],
srcs_version = "PY2AND3",
deps = [
- ":label_image",
":retrain",
"//tensorflow:tensorflow_py",
"//tensorflow/python:framework_test_lib",
diff --git a/tensorflow/examples/image_retraining/label_image.py b/tensorflow/examples/image_retraining/label_image.py
deleted file mode 100644
index de2713fc10..0000000000
--- a/tensorflow/examples/image_retraining/label_image.py
+++ /dev/null
@@ -1,147 +0,0 @@
-# Copyright 2016 The TensorFlow Authors. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ==============================================================================
-"""Simple image classification with Inception.
-
-Run image classification with your model.
-
-This script is usually used with retrain.py found in this same
-directory.
-
-This program creates a graph from a saved GraphDef protocol buffer,
-and runs inference on an input JPEG image. You are required
-to pass in the graph file and the txt file.
-
-It outputs human readable strings of the top 5 predictions along with
-their probabilities.
-
-Change the --image_file argument to any jpg image to compute a
-classification of that image.
-
-Example usage:
-python label_image.py --graph=retrained_graph.pb
- --labels=retrained_labels.txt
- --image=flower_photos/daisy/54377391_15648e8d18.jpg
-
-NOTE: To learn to use this file and retrain.py, please see:
-
-https://codelabs.developers.google.com/codelabs/tensorflow-for-poets
-"""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import argparse
-import sys
-
-import tensorflow as tf
-
-parser = argparse.ArgumentParser()
-parser.add_argument(
- '--image', required=True, type=str, help='Absolute path to image file.')
-parser.add_argument(
- '--num_top_predictions',
- type=int,
- default=5,
- help='Display this many predictions.')
-parser.add_argument(
- '--graph',
- required=True,
- type=str,
- help='Absolute path to graph file (.pb)')
-parser.add_argument(
- '--labels',
- required=True,
- type=str,
- help='Absolute path to labels file (.txt)')
-parser.add_argument(
- '--output_layer',
- type=str,
- default='final_result:0',
- help='Name of the result operation')
-parser.add_argument(
- '--input_layer',
- type=str,
- default='DecodeJpeg/contents:0',
- help='Name of the input operation')
-
-
-def load_image(filename):
- """Read in the image_data to be classified."""
- return tf.gfile.FastGFile(filename, 'rb').read()
-
-
-def load_labels(filename):
- """Read in labels, one label per line."""
- return [line.rstrip() for line in tf.gfile.GFile(filename)]
-
-
-def load_graph(filename):
- """Unpersists graph from file as default graph."""
- with tf.gfile.FastGFile(filename, 'rb') as f:
- graph_def = tf.GraphDef()
- graph_def.ParseFromString(f.read())
- tf.import_graph_def(graph_def, name='')
-
-
-def run_graph(image_data, labels, input_layer_name, output_layer_name,
- num_top_predictions):
- with tf.Session() as sess:
- # Feed the image_data as input to the graph.
- # predictions will contain a two-dimensional array, where one
- # dimension represents the input image count, and the other has
- # predictions per class
- softmax_tensor = sess.graph.get_tensor_by_name(output_layer_name)
- predictions, = sess.run(softmax_tensor, {input_layer_name: image_data})
-
- # Sort to show labels in order of confidence
- top_k = predictions.argsort()[-num_top_predictions:][::-1]
- for node_id in top_k:
- human_string = labels[node_id]
- score = predictions[node_id]
- print('%s (score = %.5f)' % (human_string, score))
-
- return 0
-
-
-def main(argv):
- """Runs inference on an image."""
- if argv[1:]:
- raise ValueError('Unused Command Line Args: %s' % argv[1:])
-
- if not tf.gfile.Exists(FLAGS.image):
- tf.logging.fatal('image file does not exist %s', FLAGS.image)
-
- if not tf.gfile.Exists(FLAGS.labels):
- tf.logging.fatal('labels file does not exist %s', FLAGS.labels)
-
- if not tf.gfile.Exists(FLAGS.graph):
- tf.logging.fatal('graph file does not exist %s', FLAGS.graph)
-
- # load image
- image_data = load_image(FLAGS.image)
-
- # load labels
- labels = load_labels(FLAGS.labels)
-
- # load graph, which is stored in the default session
- load_graph(FLAGS.graph)
-
- run_graph(image_data, labels, FLAGS.input_layer, FLAGS.output_layer,
- FLAGS.num_top_predictions)
-
-
-if __name__ == '__main__':
- FLAGS, unparsed = parser.parse_known_args()
- tf.app.run(main=main, argv=sys.argv[:1]+unparsed)
diff --git a/tensorflow/examples/image_retraining/retrain_test.py b/tensorflow/examples/image_retraining/retrain_test.py
index 467c15d0de..c342a17dd8 100644
--- a/tensorflow/examples/image_retraining/retrain_test.py
+++ b/tensorflow/examples/image_retraining/retrain_test.py
@@ -21,7 +21,6 @@ from __future__ import print_function
import tensorflow as tf
import os
-from tensorflow.examples.image_retraining import label_image
from tensorflow.examples.image_retraining import retrain
from tensorflow.python.framework import test_util
@@ -83,36 +82,6 @@ class ImageRetrainingTest(test_util.TensorFlowTestCase):
gt = tf.placeholder(tf.float32, [1], name='gt')
self.assertIsNotNone(retrain.add_evaluation_step(final, gt))
- def testLabelImage(self):
-
- image_filename = ('../label_image/data/grace_hopper.jpg')
-
- # Load some default data
- label_path = os.path.join(tf.resource_loader.get_data_files_path(),
- 'data/labels.txt')
- labels = label_image.load_labels(label_path)
- self.assertEqual(len(labels), 3)
-
- image_path = os.path.join(tf.resource_loader.get_data_files_path(),
- image_filename)
-
- image = label_image.load_image(image_path)
- self.assertEqual(len(image), 61306)
-
- # Create trivial graph; note that the two nodes don't meet
- with tf.Graph().as_default():
- jpeg = tf.constant(image)
- # Input node that doesn't lead anywhere.
- tf.image.decode_jpeg(jpeg, name='DecodeJpeg')
-
- # Output node, that always outputs a constant.
- tf.constant([[10, 30, 5]], name='final')
-
- # As label_image outputs via print, we assume that
- # if it returns, everything is OK.
- result = label_image.run_graph(image, labels, jpeg, 'final:0', 3)
- self.assertEqual(result, 0)
-
def testAddJpegDecoding(self):
with tf.Graph().as_default():
jpeg_data, mul_image = retrain.add_jpeg_decoding(10, 10, 3, 0, 255)