NVIDIA Jetson Xavier NX 跑通 Paddle-Inference-Demo(C++ YOLOv3图像检测样例)

项目地址:https://github.com/PaddlePaddle/Paddle-Inference-Demo

一、获取paddle_inference预测库

下载paddle_inference预测库并解压存储到Paddle-Inference-Demo/c++/lib目录,lib目录结构如下所示

根据自己的硬件和软件环境下载对应的预测库,paddle_inference下载地址:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/05_inference_deployment/inference/build_and_install_lib_cn.html

Paddle-Inference-Demo/c++/lib/
├── CMakeLists.txt
└── paddle_inference
    ├── CMakeCache.txt
    ├── paddle
    │   ├── include                                    C++ 预测库头文件目录
    │   │   ├── crypto
    │   │   ├── internal
    │   │   ├── paddle_analysis_config.h
    │   │   ├── paddle_api.h
    │   │   ├── paddle_infer_declare.h
    │   │   ├── paddle_inference_api.h                 C++ 预测库头文件
    │   │   ├── paddle_mkldnn_quantizer_config.h
    │   │   └── paddle_pass_builder.h
    │   └── lib
    │       ├── libpaddle_inference.a                  C++ 静态预测库文件
    │       └── libpaddle_inference.so                 C++ 动态态预测库文件
    ├── third_party
    │   ├── install                                    第三方链接库和头文件
    │   │   ├── cryptopp
    │   │   ├── gflags
    │   │   ├── glog
    │   │   ├── mkldnn
    │   │   ├── mklml
    │   │   ├── protobuf
    │   │   └── xxhash
    │   └── threadpool
    │       └── ThreadPool.h
    └── version.txt

二、获取YOLOv3模型

wget https://paddle-inference-dist.bj.bcebos.com/Paddle-Inference-Demo/yolov3_r50vd_dcn_270e_coco.tgz
tar xzf yolov3_r50vd_dcn_270e_coco.tgz

三、样例编译

1)修改compile.sh

打开compile.sh,对以下的几处信息进行修改:

# 根据预编译库中的version.txt信息判断是否将以下三个标记打开
WITH_MKL=ON
WITH_GPU=ON
USE_TENSORRT=OFF

# 配置预测库的根目录
LIB_DIR=${work_path}/../lib/paddle_inference

# 如果上述的WITH_GPU 或 USE_TENSORRT设为ON,请设置对应的CUDA, CUDNN, TENSORRT的路径。
CUDNN_LIB=/usr/lib/x86_64-linux-gnu/
CUDA_LIB=/usr/local/cuda/lib64
TENSORRT_ROOT=/usr/local/TensorRT-6.0.1.5

我的预测编译库中的版本信息如下:

GIT COMMIT ID: ffa88c31c2da5090c6f70e8e9b523356d7cd5e7f
WITH_MKL: OFF
WITH_MKLDNN: OFF
WITH_GPU: ON
CUDA version: 10.2
CUDNN version: v8.0
CXX compiler version: 7.5.0
WITH_TENSORRT: ON
TensorRT version: v7

根据自己的情况来,我修改为如下:

WITH_MKL=OFF
WITH_GPU=ON
USE_TENSORRT=ON

LIB_DIR=${work_path}/../lib/paddle_inference
CUDNN_LIB=/usr/lib/aarch64-linux-gnu/
CUDA_LIB=/usr/local/cuda/lib64
TENSORRT_ROOT=/usr/include/aarch64-linux-gnu

运行

bash compile.sh

这里要注意,光修改这个文件不行,会报错:

CMake Error at CMakeLists.txt:89 (file):
  file failed to open for reading (No such file or directory):

    /usr/src/aarch64-linux-gnu//include/NvInfer.h


CMake Error at CMakeLists.txt:93 (file):
  file failed to open for reading (No such file or directory):

    /usr/src/aarch64-linux-gnu//include/NvInferVersion.h

提示找不到 NvInfer.h 和 NvInferVersion.h 这两个文件,我们需要把这两个文件放在 /usr/src/aarch64-linux-gnu//include 下

cd /usr/include/aarch64-linux-gnu
sudo mkdir build
sudo cp NvInfer.h ./include/
sudo cp NvInferVersion.h ./include

做完这一步运行还会报错,提示找不到文件

make[2]: *** No rule to make target '/usr/include/aarch64-linux-gnu/lib/libnvinfer.so', needed by 'yolov3_test'.  Stop.

make[2]: *** No rule to make target '/usr/include/aarch64-linux-gnu/lib/libnvinfer_plugin.so', needed by 'yolov3_test'.  Stop.

需要把 libnvinfer.so’ 和 libnvinfer_plugin.so 放在 /usr/src/aarch64-linux-gnu/lib 下,还是在刚才的目录下,把这两个文件加入到 /usr/src/aarch64-linux-gnu//lib 下。

sudo mkdir lib
sudo cp /usr/lib/aarch64-linux-gnu/libnvinfer.so ./lib/
sudo cp /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so ./lib/

上面要加的四个文件每个人可能会不一样,根据提示的报错信息修改就可以了。

然后运行 bash compile.sh, 编译成功后会在目录下产生build目录。
NVIDIA Jetson Xavier NX 跑通 Paddle-Inference-Demo(C++ YOLOv3图像检测样例)_第1张图片

2) 运行样例

运行结束后,程序会将模型输出个数打印到屏幕,说明运行成功。NVIDIA Jetson Xavier NX 跑通 Paddle-Inference-Demo(C++ YOLOv3图像检测样例)_第2张图片

你可能感兴趣的:(Paddle,NVIDIA,Jetson)