天天看点

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

导读

本文主要介绍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​​

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

【2】下载最新Paddle预测库(根据需要选择CPU或者GPU版本)

​​https://paddleinference.paddlepaddle.org.cn/user_guides/download_lib.html#windows​​

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

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

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

编译CPU版:

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

编译GPU版:

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)
PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)
PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

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

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

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

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

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

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

解决方法:下载Dirent,添加包含路径,重新生成

​​https://github.com/tronkko/dirent​​

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)
PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)
PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

报错:C3861“lstat”: 找不到标识符,将lstat改成stat即可

又报错:error MSB3073: 命令“setlocal

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

解决方法如下:

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

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

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

【5】模型转换与测试。

① 复制所需的dll到exe同目录,如OpenCV、Paddle_Inference;

② 下载模型:https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.1/configs/ppyolo/README_cn.md

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)
PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

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

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

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

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

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

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

转换指令:​

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)
PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

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

PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)
PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)
PaddleDetection Windows C++编译使用指南(含PPYOLO v2、PPYOLO tiny测试)

上面以ppyolov2_r50vd_dcn_365e_coco模型为例,演示了模型转换和测试,如果使用PPYOLO tiny,方法和步骤一致,大家可以自行尝试!

结尾语

【1】 PPYolo v2准确率与速度与官方介绍类似,有兴趣的同学可以训练自己的数据集做测试;