项目地址:https://github.com/PaddlePaddle/Paddle-Inference-Demo
下载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
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
打开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目录。