目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型

前置的软件环境:

  • vs2019
  • cuda和cudnn(查看电脑的cuda版本 命令行输入nvcc -V)
  • cmake
  • opencv3.4.6下载地址,并且配置环境变量。

需要下载的内容

  • PaddleDetection源码2.4
  • PaddlePaddle C++ 预测库 下载地址(预测库2.3存在bug无法运行,建议使用2.1.1预测库)
  • 之前训练并完成导出的模型

编译推理代码

  1. 首先将paddledetection中的deploy目录下的cpp文件夹单独拿出来,将路径添加到cmake中的源代码路径。
  2. 设置编译输出的文件夹。

目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第1张图片

  1. 点击configure,选择vs2019和x64

目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第2张图片

  1. 点击finish,弹出报错。

目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第3张图片

  1. 开始填写cuda、cudnn、opencv和paddle推理库的路径。
    目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第4张图片

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

生成解决方案

  1. 打开sln解决方案,将debug模式修改为Release模式

目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第5张图片

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

目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第6张图片

  1. 点击项目右键,重新生成。
    目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第7张图片

  2. 右键main项目,打开属性,将生成后事件改为否。
    目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第8张图片

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

运行推理程序

  1. 找到输出目录中的main.exe,双击打开,提示缺少paddle_inference.dll。

目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第9张图片

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

推理

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

目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第10张图片

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

  2. 输入命令,开始运行推理程序。main --model_dir=model --image_dir=img --output_dir=imgout
    目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第11张图片

  3. 模型推理程序开始运行。

目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第12张图片

最终运行结束:

目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型_第13张图片

包括很多其他的运行参数可供选择与测试。

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

参数 说明
–model_dir 导出的检测预测模型所在路径
–threshold 置信度阈值
–model_dir_keypoint Option
–image_file 要预测的图片文件路径
–image_dir 要预测的图片文件夹路径
–video_file 要预测的视频文件路径
–camera_id Option
–device 运行时的设备,可选择CPU/GPU/XPU,默认为CPU
–gpu_id 指定进行推理的GPU device id(默认值为0)
–run_mode 使用GPU时,默认为paddle, 可选(paddle/trt_fp32/trt_fp16/trt_int8)
–batch_size 检测模型预测时的batch size,在指定image_dir时有效
–batch_size_keypoint 关键点模型预测时的batch size,默认为8
–run_benchmark 是否重复预测来进行benchmark测速
–output_dir 输出图片所在的文件夹, 默认为output
–use_mkldnn CPU预测中是否开启MKLDNN加速
–cpu_threads 设置cpu线程数,默认为1
–use_dark 关键点模型输出预测是否使用DarkPose后处理,默认为true

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=test.mp4 --device=gpu

摄像头调用

main --model_dir=model --video_file=0 --camera_id=1 --device=gpu --threshold=0.3

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

你可能感兴趣的:(目标检测,目标检测,windows,paddlepaddle,模型部署)