You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mxnet.apache.org by GitBox <gi...@apache.org> on 2019/06/26 16:48:24 UTC
[GitHub] [incubator-mxnet] songweijia opened a new issue #15373: CPP
inference example behaves different from Python one
songweijia opened a new issue #15373: CPP inference example behaves different from Python one
URL: https://github.com/apache/incubator-mxnet/issues/15373
## The CPP inference example (inception_inference) seems not working
I followed the [CPP tutorial](https://mxnet.incubator.apache.org/versions/master/tutorials/c++/mxnet_cpp_inference_tutorial.html). But found the CPP inference does not work as I expected. The python code works totally fine:
```
$ ./inference.py data/test/watercress/image_00672.jpg
probability=11.384139, class=watercress, idx=98
```
But when I use the code at incubator-mxnet/cpp-package/example/inference/inception_inference.cpp, loading EXACTLY THE SAME parameter file, symbol json file, and mean/std file, it gives me a DIFFERENT result:
```
[12:27:12] inception_inference.cpp:150: Loading the model from /home/weijia/workspace/learn-mxnet/flower-recognition-symbol.json
[12:27:12] inception_inference.cpp:163: Loading the model parameters from /home/weijia/workspace/learn-mxnet/flower-recognition-0010.params
[12:27:12] inception_inference.cpp:190: Loading the synset file.
[12:27:12] inception_inference.cpp:212: Load the mean image data that will be used to normalize the image before running forward pass.
[12:27:12] inception_inference.cpp:257: Loading the image /home/weijia/workspace/learn-mxnet/data/test/watercress/image_00672.jpg
[12:27:12] inception_inference.cpp:290: Running the forward pass on model to predict the image
[12:27:13] inception_inference.cpp:325: The model predicts the input image to be a [ ] with Accuracy = 11.5736
```
I checked the `best_idx`, which is evaluated to 73.
## Environment info (Required)
```
$uname -a
Linux compute26 4.15.0-48-generic #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
```
## Build info (Required if built from source)
Compiler (gcc/clang/mingw/visual studio):
```
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.4.0-1ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04)
```
MXNet commit hash: `12c422697413cfd69d846cdb4d1d487c487220e2>`
Build config:
(Paste the content of config.mk, or the build command.)
```
$ cmake -GNinja -DUSE_CUDA=OFF -DUSE_JEMALLOC=OFF -DUSE_MKL_IF_AVAILABLE=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DUSE_CPP_PACKAGE=ON ..
$ ninja
```
Then, go to `incubator-mxnet/cpp_package/example/inferences`, change the `Makefile` to fit my path setting:
```
diff --git a/cpp-package/example/inference/Makefile b/cpp-package/example/inference/Makefile
index 5efe6cfb6..9b01d0d97 100644
--- a/cpp-package/example/inference/Makefile
+++ b/cpp-package/example/inference/Makefile
@@ -25,7 +25,7 @@ CXX=g++
CFLAGS=$(COMMFLAGS) -I../../../3rdparty/tvm/nnvm/include -I../../../3rdparty/dmlc-core/include -I ../../include -I ../../../include -Wall -O3 -msse3 -funroll-loops -Wno-unused-parameter -Wno-unknown-pragmas
-CPPEX_EXTRA_LDFLAGS := -L../../../lib -lmxnet $(OPENCV_LDFLAGS)
+CPPEX_EXTRA_LDFLAGS := -L../../../build -lmxnet $(OPENCV_LDFLAGS)
all: $(CPPEX_EXE)
```
And then, build the CPP example:
```
$ make
```
## Steps to reproduce
Run this command:
```
./inception_inference --params ~/workspace/learn-mxnet/flower-recognition-0010.params --synset ~/workspace/learn-mxnet/synset.txt --symbol ~/workspace/learn-mxnet/flower-recognition-symbol.json --image ~/workspace/learn-mxnet/data/test/watercress/image_00672.jpg --mean ~/workspace/learn-mxnet/mean_std_224.nd --input_shape "3 224 224"
```
## What have you tried to solve it?
I checked that I'm using the correct parameter files, symbol files, and mean/std files.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services