functions for C++. A souped-up version of the hidden_ops mechanism in Python, the intent is to use this for most or all of the client languages, with a common list of changes to make in a common file and per-language overrides. Also: * include the documentation for outputs in the generated comments * several updates to C++ API to match Python * fix C++ shape function for ConcatV2 now that we use it by default * split op_gen_lib out of core:framework, since it is only used by the op generators, and I don't want to add another proto to mobile builds Change: 146267344 |
||
---|---|---|
.. | ||
data | ||
BUILD | ||
main.cc | ||
README.md |
TensorFlow C++ Image Recognition Demo
This example shows how you can load a pre-trained TensorFlow network and use it to recognize objects in images in C++. For Java see the Java README, and for Go see the godoc example.
Description
This demo uses a Google Inception model to classify image files that are passed in on the command line.
To build/install/run
The TensorFlow GraphDef
that contains the model definition and weights is not
packaged in the repo because of its size. Instead, you must first download the
file to the data
directory in the source tree:
$ wget https://storage.googleapis.com/download.tensorflow.org/models/inception_dec_2015.zip -O tensorflow/examples/label_image/data/inception_dec_2015.zip
$ unzip tensorflow/examples/label_image/data/inception_dec_2015.zip -d tensorflow/examples/label_image/data/
Then, as long as you've managed to build the main TensorFlow framework, you should have everything you need to run this example installed already.
Once extracted, see the labels file in the data directory for the possible classifications, which are the 1,000 categories used in the Imagenet competition.
To build it, run this command:
$ bazel build tensorflow/examples/label_image/...
That should build a binary executable that you can then run like this:
$ bazel-bin/tensorflow/examples/label_image/label_image
This uses the default example image that ships with the framework, and should output something similar to this:
I tensorflow/examples/label_image/main.cc:207] military uniform (866): 0.647299
I tensorflow/examples/label_image/main.cc:207] suit (794): 0.0477195
I tensorflow/examples/label_image/main.cc:207] academic gown (896): 0.0232407
I tensorflow/examples/label_image/main.cc:207] bow tie (817): 0.0157355
I tensorflow/examples/label_image/main.cc:207] bolo tie (940): 0.0145023
In this case, we're using the default image of Admiral Grace Hopper, and you can see the network correctly spots she's wearing a military uniform, with a high score of 0.6.
Next, try it out on your own images by supplying the --image= argument, e.g.
$ bazel-bin/tensorflow/examples/label_image/label_image --image=my_image.png
For a more detailed look at this code, you can check out the C++ section of the Inception tutorial.