PaddlePaddle 框架從18年就開始用了,最近因?yàn)楣ぷ饕瞿繕?biāo)檢測(cè),因此選擇了PaddleDetection 使用了ppyoloe_plus_m 模型進(jìn)行訓(xùn)練。訓(xùn)練完成后使用
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的張灣網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!export_model.py -c configs/ppyoloe/ppyoloe_plus_crn_m_80e_coco.yml -o weights=/path/model_final.pdparams
導(dǎo)出模型。
在項(xiàng)目中,使用的是 PaddleDetection /deploy 中的python 版進(jìn)行 部署的。目前在項(xiàng)目中已經(jīng)跑起來了。但考慮到以后和其他業(yè)務(wù)端對(duì)接,可能使用C++ 版的更方便,因此嘗試打通C++版的推理預(yù)測(cè),在這里記錄下分別基于windows 和linux 下的模型部署流程。
一、 windows版CPU 版
windows 版相對(duì)來說較容易一下,首先嘗試不使用gpu 的版本。
按照 說明文檔中 的記錄,下載 使用cpu 版的 paddle_inference , 版本要求是使用vs2017 ,但我使用vs 2019 進(jìn)行編譯是可以的。
然后需要下載opencv , 下載完成后,最好將 opencv\build\x64\vc15\bin 放到環(huán)境變量中。這個(gè)其實(shí)是用的opencv 3 .X 版本的,跟現(xiàn)在項(xiàng)目中的環(huán)境還是有些差別(項(xiàng)目中用到opencv 4.5)后續(xù)考慮編譯一個(gè)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 ->屬性->鏈接器 常規(guī)和輸入中看看是否添加了該lib
以上window下基于CPU的模型應(yīng)用程序基本上就編譯好了。運(yùn)行結(jié)果如下:
GPU版
當(dāng)跑起來CPU 版之后,發(fā)現(xiàn)GPU 版的也沒有那么難了。首先要確定下當(dāng)前機(jī)器下GPU 環(huán)境
本機(jī)環(huán)境如下:
CUDA=11.6
cudnn=8.4.1
TensorRT=8.4.0.6
首先肯定是要下載好對(duì)應(yīng)的軟件版本,可以參考這個(gè)
對(duì)應(yīng)好 cuda ,cudnn tensorRT 版本后編譯能輕松點(diǎn)。然后下載對(duì)應(yīng)版本下的paddle_inference, 這個(gè)也需要下載opencv,跟上面用到的一樣就可以,使用cmake 進(jìn)行編譯
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 然后生成,產(chǎn)生main.exe 文件。運(yùn)行結(jié)果如下:
二、Linux版linux 版下我也是先跑通CPU ,在用GPU 。因?yàn)楣倦娔X是在運(yùn)行項(xiàng)目,不敢隨意測(cè)試,因此使用了云GPU, 開始的時(shí)候使用的是 恒源云GPU ,但他家的下載速度和網(wǎng)速實(shí)在太慢,后來使用了AutoDL 的云GPU ,網(wǎng)速挺快,還能連接百度網(wǎng)盤,挺香的。
首先重新編譯了下gcc ,因?yàn)閐eploy 要求gcc是8.2版本的,參考
UbuntU18.04u安裝GCC8.2.0~9.1_fpcc的博客-博客_unbuntu 安裝 gcc 8.2
在按照 linux_build.md 進(jìn)行編譯時(shí),遇到了opencv找不到so 庫的情況。因此重新編譯了ffmpeg 和opencv,參考了如下博客:
ffmpeg 源碼編譯 ffmpeg源碼編譯_liupenglove的博客-博客_ffmpeg源碼編譯
opencv源碼編譯 linux或arm下源碼編譯opencv庫_spirits_of_snail的博客-博客_arm linux opencv
Linux下OPencv+ffmpeg編譯和進(jìn)行視頻播放_(tái)泰勒朗斯的博客-博客
編譯完成后 記得修改 ./script/build.sh 里面的路徑。
然后按照 linux_build.md 來就可以,最后會(huì)生產(chǎn) main
在執(zhí)行是會(huì)發(fā)現(xiàn)缺少 libpaddle2onnx.so 等文件,在paddle_inference 下,找到,cp到/usr/lib 下就可以
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧