前置的软件环境:
- vs2019
- cuda和cudnn(查看电脑的cuda版本 命令行输入nvcc -V)
- cmake
- opencv3.4.6下载地址,并且配置环境变量。
需要下载的内容
- PaddleDetection源码2.4
- PaddlePaddle C++ 预测库 下载地址(预测库2.3存在bug无法运行,建议使用2.1.1预测库)
- 之前训练并完成导出的模型
编译推理代码
- 首先将paddledetection中的deploy目录下的cpp文件夹单独拿出来,将路径添加到cmake中的源代码路径。
- 设置编译输出的文件夹。
- 点击configure,选择vs2019和x64
- 点击finish,弹出报错。
-
开始填写cuda、cudnn、opencv和paddle推理库的路径。 -
再次点击config,接下来点击generate,在输出文件夹中生成sln格式的解决方案。
生成解决方案
- 打开sln解决方案,将debug模式修改为Release模式
- 在解决方案中,右键将main项目设置为启动项目。
- 打开main项目属性,将附加依赖项中第一行的
.lib 修改为paddle_inference.lib
-
点击项目右键,重新生成。 -
右键main项目,打开属性,将生成后事件改为否。 -
再次点击重新生成,推理程序生成成功。
运行推理程序
- 找到输出目录中的main.exe,双击打开,提示缺少paddle_inference.dll。
- 将之前下载的paddle推理库中paddle\lib文件夹中的paddle_inference.dll复制到输出目录下。
- 双击main.exe,黑框一闪而过,没有报错,说明当前步骤完成。
推理
- 打开cmd命令窗口,切换到输出目录下。
-
将预测图像文件夹和模型文件夹放到当前目录下。 -
输入命令,开始运行推理程序。main --model_dir=model --image_dir=img --output_dir=imgout -
模型推理程序开始运行。
最终运行结束:
包括很多其他的运行参数可供选择与测试。
可执行文件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表示其他外置摄像头。
|