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