0. 前言

当目标检测模型训练完毕之后,需要进入到部署环节。在AI应用中,常见的部署方式有本地部署,云端部署和边侧部署等。本节主要讲解下本地部署,具体是在windows平台上使用C++语言,CPU版本的paddleinference推理库,并最终生成.exe可执行文件的方式完成部署任务。

1. 前置条件

使用工具Cmake vs2019社区版 Git(提前下载好git,不然在后期编译过程中会不成功)

paddle fluid架构 paddledetection部署_paddle

最好按照如上文件结构将相关需要的文件保存在同一个文件夹中。

paddle fluid架构 paddledetection部署_解决方案_02

编译推理代码

  1. 首先将paddledetection中的deploy目录下的cpp文件夹单独拿出来,将路径添加到cmake中的源代码路径。
  2. 设置编译输出的文件夹。
  3. 点击configure,选择vs2019和x64
  4. 点击finish,会弹出报错,因为这里缺失了一些链接库路径,需要按照下图所示补齐。

 5.再次点击config,接下来点击generate,在输出文件夹中生成sln格式的解决方案。

paddle fluid架构 paddledetection部署_深度学习_03

生成解决方案

  1. 打开sln解决方案,将debug模式修改为Release模式
  2. 在解决方案中,右键将main项目设置为启动项目。
  3. 打开main项目属性,将附加依赖项中第一行的.lib修改为paddle_inference.lib

 4.点击项目右键,重新生成【此步骤可能会报错,不过没关系】。

5.右键main项目,打开属性,将生成后事件改为否。

paddle fluid架构 paddledetection部署_目标检测_04

 6.再次点击重新生成,推理程序生成成功。

运行推理程序

  1. 找到输出目录中的main.exe,双击打开,提示缺少paddle_inference.dll。
  2. 将之前下载的paddle推理库中paddle\lib文件夹中的paddle_inference.dll复制到输出目录下。
  3. 双击main.exe,黑框一闪而过,没有报错,说明当前步骤完成。

开始推理 

1.打开cmd命令窗口,切换到输出目录下。

paddle fluid架构 paddledetection部署_目标检测_05

2.将预测图像文件夹和模型文件夹放到当前目录下。

3.输入如下命令,开始运行推理程序。

main --model_dir=model --image_dir=img --output_dir=output --device=gpu

paddle fluid架构 paddledetection部署_paddle fluid架构_06

 模型推理程序开始运行。

paddle fluid架构 paddledetection部署_解决方案_07

 可执行文件main即为样例的预测程序,其主要的命令行参数如下:

paddle fluid架构 paddledetection部署_目标检测_08

cpu推理

使用mkldnn可以加速推理程序,也可以增加cpu线程数提升推理速度。

main --model_dir=model --image_dir=img --output_dir=output --device=CPU --run_mode=trt_int8 --use_mkldnn=true --cpu_threads=2

视频预测

main --model_dir=model --video_file=avi.mp4 --device=CPU --run_mode=trt_fp32 --use_mkldnn=true --cpu_threads=2

摄像头开启检测

main --model_dir=model --video_file=0 --camera_id=0 --device=gpu --threshold=0.5

0表示内置摄像头,1表示其他外置摄像头。