导读
本文主要介绍PaddleDetection在Windows C++的编译和使用步骤。包括笔者的各种爬坑记录以及对PPYOLO v2、PPYOLO tiny模型的测试。
背景介绍
撰写本文的兴趣也是来自于前段时间各博客和公众号纷纷吹爆的PPYolo v2(介绍看下面链接),所以抽空来使用测试一下,让新手少迷路。
PP-YOLOv2开源,你的目标检测器又该升级了!性能超越YOLOv5且推理耗时保持不变
编译使用步骤
本文使用环境:Win10 + VS2017 + CMake3.16 + OpenCV4.4
编译详细步骤:
【1】下载PaddleDetection源码,最新分支2.1.0版本
https://github.com/paddlepaddle/paddledetection/tree/release/2.1

【2】下载最新Paddle预测库(根据需要选择CPU或者GPU版本)
https://paddleinference.paddlepaddle.org.cn/user_guides/download_lib.html#windows

【3】CMake编译VS2017 x64,注意Paddle、OpenCV、GPU(如果选择GPU)路径,最后Configure、Generate Done,打开PaddleObjectDetector.sln

编译CPU版:

编译GPU版:



【4】切换Release x64模式,设置main为启动项。

设置main属性中输入--附加依赖项lib为paddle_inference.lib。

重新生成ALL_Build,报错:无法打开包括文件: “dirent.h”: No such file or directory

解决方法:下载Dirent,添加包含路径,重新生成
https://github.com/tronkko/dirent



报错:C3861“lstat”: 找不到标识符,将lstat改成stat即可
又报错:error MSB3073: 命令“setlocal

解决方法如下:

终于生成main.exe,算是成功了!

【5】模型转换与测试。
① 复制所需的dll到exe同目录,如OpenCV、Paddle_Inference;
② 下载模型:https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.1/configs/ppyolo/README_cn.md


下载后的模型如下:pdparams格式(不能直接使用)

转换后的模型如下:一般包含四个文件(可直接使用)

③ 模型转换:使用tools文件夹下的export_model.py来完成

转换指令:


python tools/export_model.py -c configs/ppyolo/ppyolov2_r50vd_dcn_voc.yml -o weights=C:\Users\35415\.cache\paddle\weights\ppyolov2_r50vd_dcn_365e_coco.pdparams
④ 模型测试:
main.exe --model_dir=./model/ppyolov2_r50vd_dcn_365e_coco --image_file=cars.jpg



上面以ppyolov2_r50vd_dcn_365e_coco模型为例,演示了模型转换和测试,如果使用PPYOLO tiny,方法和步骤一致,大家可以自行尝试!
结尾语
【1】 PPYolo v2准确率与速度与官方介绍类似,有兴趣的同学可以训练自己的数据集做测试;
【2】PPYolo tiny速度确实很快,但准确率下降,实际使用还需斟酌。
更多视觉图像处理相关内容,请长按关注:OpenCV与AI深度学习。
