Skip to content

Latest commit

 

History

History
96 lines (63 loc) · 3.37 KB

cpp_inference.md

File metadata and controls

96 lines (63 loc) · 3.37 KB

Paddle Inference部署(C++)

1. 说明

本文档介绍使用Paddle Inference的C++接口在Linux服务器端(NV GPU或者X86 CPU)部署分割模型的示例,主要步骤包括:

  • 准备环境
  • 准备模型和图片
  • 编译、执行

飞桨针对不同场景,提供了多个预测引擎部署模型(如下图),详细信息请参考文档

inference_ecosystem

此外,PaddleX也提供了C++部署的示例和文档,具体参考链接

2. 准备环境

准备Paddle Inference C++预测库

大家可以从链接下载Paddle Inference C++预测库。

注意根据机器的CUDA版本、cudnn版本、使用MKLDNN或者OpenBlas、是否使用TenorRT等信息,选择准确版本。建议选择版本>=2.0.1的预测库。

下载paddle_inference.tgz压缩文件后进行解压,将解压的paddle_inference文件保存到PaddleSeg/deploy/cpp/下。

如果大家需要编译Paddle Inference C++预测库,可以参考文档,此处不再赘述。

准备OpenCV

本示例使用OpenCV读取图片,所以需要准备OpenCV。

执行如下命令下载、编译、安装OpenCV。

wget https://github.com/opencv/opencv/archive/3.4.7.tar.gz
tar -xf 3.4.7.tar.gz

mkdir -p opencv-3.4.7/build
cd opencv-3.4.7/build

install_path=/usr/local/opencv3
cmake .. -DCMAKE_INSTALL_PREFIX=${install_path} -DCMAKE_BUILD_TYPE=Release
make -j
make install

cd ../..

安装Yaml

本示例使用Yaml读取配置文件信息。

执行如下命令下载、编译、安装Yaml。

wget https://github.com/jbeder/yaml-cpp/archive/refs/tags/yaml-cpp-0.7.0.zip
unzip yaml-cpp-0.7.0.zip
mkdir -p yaml-cpp-yaml-cpp-0.7.0/build
cd yaml-cpp-yaml-cpp-0.7.0/build
cmake -DYAML_BUILD_SHARED_LIBS=ON ..
make -j
make install

3. 准备模型和图片

PaddleSeg/deploy/cpp/目录下执行如下命令,下载测试模型用于测试。如果需要测试其他模型,请参考文档导出预测模型。

wget https://paddleseg.bj.bcebos.com/dygraph/demo/bisenet_demo_model.tar.gz
tar xzf bisenet_demo_model.tar.gz

下载cityscapes验证集中的一张图片

wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png

4. 编译、执行

请检查PaddleSeg/deploy/cpp/下存放了预测库、模型、图片,如下。

PaddleSeg/deploy/cpp
|-- paddle_inference        # 预测库
|-- bisenetv2_demo_model    # 模型
|-- cityscapes_demo.png     # 图片

执行sh run_seg_cpu.sh,会进行编译,然后在X86 CPU上执行预测。

执行sh run_seg_gpu.sh,会进行编译,然后在Nvidia GPU上执行预测。

分割结果会保存在当前目录的“out_img.jpg“图片,如下图。注意,该图片是使用了直方图均衡化,便于可视化。

out_img