PaddlePaddle 框架從18年就開始用了,最近因為工作要做目標檢測,因此選擇了PaddleDetection 使用了ppyoloe_plus_m 模型進行訓練。訓練完成后使用
創新互聯堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站設計制作、成都網站制作、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的張灣網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!export_model.py -c configs/ppyoloe/ppyoloe_plus_crn_m_80e_coco.yml -o weights=/path/model_final.pdparams
導出模型。
在項目中,使用的是 PaddleDetection /deploy 中的python 版進行 部署的。目前在項目中已經跑起來了。但考慮到以后和其他業務端對接,可能使用C++ 版的更方便,因此嘗試打通C++版的推理預測,在這里記錄下分別基于windows 和linux 下的模型部署流程。
一、 windows版CPU 版
windows 版相對來說較容易一下,首先嘗試不使用gpu 的版本。
按照 說明文檔中 的記錄,下載 使用cpu 版的 paddle_inference , 版本要求是使用vs2017 ,但我使用vs 2019 進行編譯是可以的。
然后需要下載opencv , 下載完成后,最好將 opencv\build\x64\vc15\bin 放到環境變量中。這個其實是用的opencv 3 .X 版本的,跟現在項目中的環境還是有些差別(項目中用到opencv 4.5)后續考慮編譯一個opencv4.X 版本的。使用
cmake . ?
-G "Visual Studio 16 2019" -A x64 -T host=x64 ?
-DWITH_GPU=OFF ?
-DWITH_MKL=ON ?
-DCMAKE_BUILD_TYPE=Release ?
-DPADDLE_DIR=D:\projects\packages\paddle_inference ?
-DPADDLE_LIB_NAME=paddle_inference ?
-DOPENCV_DIR=D:\projects\packages\opencv3_4_6 ?
-DWITH_KEYPOINT=ON
在deploy/cpp 目錄下生成 .sln ,然后使用vs 打開,生成后的代碼文件如下:
使用 生成->生成解決方案,生成main.exe
我在生成過程中遇到了有些 lib 庫沒有找到的情況,在main ->屬性->鏈接器 常規和輸入中看看是否添加了該lib
以上window下基于CPU的模型應用程序基本上就編譯好了。運行結果如下:
GPU版
當跑起來CPU 版之后,發現GPU 版的也沒有那么難了。首先要確定下當前機器下GPU 環境
本機環境如下:
CUDA=11.6
cudnn=8.4.1
TensorRT=8.4.0.6
首先肯定是要下載好對應的軟件版本,可以參考這個
對應好 cuda ,cudnn tensorRT 版本后編譯能輕松點。然后下載對應版本下的paddle_inference, 這個也需要下載opencv,跟上面用到的一樣就可以,使用cmake 進行編譯
cmake . ? -G "Visual Studio 16 2019" -A x64 -T host=x64 ?
-DWITH_GPU=OFF ?
-DWITH_MKL=ON ?
-DCMAKE_BUILD_TYPE=Release ?
-DCUDA_LIB="C:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v11.6\lib\x64" ?
-DCUDNN_LIB="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\lib" ?
-DPADDLE_DIR=D:\work\Project\pro_cuda\paddle_inference ?
-DPADDLE_DIR=D:\projects\packages\paddle_inference ?
-DPADDLE_LIB_NAME=paddle_inference ?
-DOPENCV_DIR=D:\projects\packages\opencv3_4_6 ?
-DWITH_KEYPOINT=ON
也是生成.sln 然后生成,產生main.exe 文件。運行結果如下:
二、Linux版linux 版下我也是先跑通CPU ,在用GPU 。因為公司電腦是在運行項目,不敢隨意測試,因此使用了云GPU, 開始的時候使用的是 恒源云GPU ,但他家的下載速度和網速實在太慢,后來使用了AutoDL 的云GPU ,網速挺快,還能連接百度網盤,挺香的。
首先重新編譯了下gcc ,因為deploy 要求gcc是8.2版本的,參考
UbuntU18.04u安裝GCC8.2.0~9.1_fpcc的博客-博客_unbuntu 安裝 gcc 8.2
在按照 linux_build.md 進行編譯時,遇到了opencv找不到so 庫的情況。因此重新編譯了ffmpeg 和opencv,參考了如下博客:
ffmpeg 源碼編譯 ffmpeg源碼編譯_liupenglove的博客-博客_ffmpeg源碼編譯
opencv源碼編譯 linux或arm下源碼編譯opencv庫_spirits_of_snail的博客-博客_arm linux opencv
Linux下OPencv+ffmpeg編譯和進行視頻播放_泰勒朗斯的博客-博客
編譯完成后 記得修改 ./script/build.sh 里面的路徑。
然后按照 linux_build.md 來就可以,最后會生產 main
在執行是會發現缺少 libpaddle2onnx.so 等文件,在paddle_inference 下,找到,cp到/usr/lib 下就可以
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
當前標題:C++版PPyolo+部署記錄-創新互聯
分享路徑:http://vcdvsql.cn/article14/ddjhge.html
成都網站建設公司_創新互聯,為您提供網站收錄、微信小程序、網站設計公司、品牌網站設計、網站導航、網站策劃
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯