天天看點

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準确率與速度與官方介紹類似,有興趣的同學可以訓練自己的資料集做測試;