Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

BIGBALLON/CPP-Call-Tensorflow

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Calling TensorFlow Python Program from C++

This Demo will show how to call an pre-trained imagenet model to predict picture in C++.

├─ prediction.cpp                 % C++ file
├─ vgg_model.py                   % TensorFlow vgg model   
├─ makefile                       % Compile file
├─ little_demo                    % An simple Demo
└─ test_pic/                      % Test pictures
	├─ cat.jpeg     
	├─ puzzle.jpeg
	└─ tiger.jpeg  

The python script

Firstly, we need an python script which let us to load VGG model & use it to do predict op.

You can test the script vgg_model.py by using the following cmd:

(deeplearning) bg@bg-cgi:~/Desktop/C_python$ python3 vgg_model.py 
Using TensorFlow backend.

...
...
...

 Please input picture file to predict: test_pic/cat.jpeg
 Predicted: [('n02124075', 'Egyptian_cat', 0.93183666)]

It will download weight file vgg19_weights_tf_dim_ordering_tf_kernels.h5 and imagenet_class_index.json to ~/.keras/models the first time.

Compile

use Makefile

Using make all to Compile your cpp file.
Make sure your python's version is correct.

bg@bg-cgi:~/.keras/models$ locate Python.h
/usr/include/python2.7/Python.h
/usr/include/python3.5m/Python.h

so I use the following cmd to compile

g++ -std=c++11 -Wall -O3 prediction.cpp -lpython3.5m -L/usr/include/python3.5m/ -I/usr/include/python3.5m/ -o pred_test

use Cmake

I just write a CMakeLists.txt, which can help you to compile your cpp code.
So just use the following cmd:

mkdir build && cd build
cmake ../
make
cd ../ 

Then you will see a executable file classifier, just use ./classifier to run the program.

Usage

Makefile

make all to compile, then ./pred_test to run c++ program.

Cmake

use ./classifier to run the program after building.

Then you can see it works:

 ===========> START CALL PYTHON SCRIPT <===========
 ===========> 1st CALL <===========
 Please input picture file to predict: huhu
 file not exist!
 ===========> 2nd CALL <===========
 Please input picture file to predict: test_pic/cat.jpeg
 Predicted:  [('n02124075', 'Egyptian_cat', 0.93183666)]
 ===========> 3rd CALL <===========
 Please input picture file to predict: test_pic/tiger.jpeg
 Predicted:  [('n02129604', 'tiger', 0.82598984)]
 ===========> 4th CALL <===========
 Please input picture file to predict: test_pic/puzzle.jpeg
 Predicted:  [('n03598930', 'jigsaw_puzzle', 0.99813461)]
 ===========> CALLING FINISHED <===========
(deeplearning) bg@bg-cgi:~/Desktop/C_python$ 

Feel free to contact me if you have any question.

About

Calling (TensorFlow) Python Program from C++

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.