C++版PPyolo+部署記錄-創(chuàng)新互聯(lián)

PaddlePaddle 框架從18年就開始用了,最近因為工作要做目標檢測,因此選擇了PaddleDetection 使用了ppyoloe_plus_m 模型進行訓練。訓練完成后使用

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領(lǐng)域包括:網(wǎng)站設計制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的張灣網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!

export_model.py -c configs/ppyoloe/ppyoloe_plus_crn_m_80e_coco.yml -o weights=/path/model_final.pdparams

導出模型。

在項目中,使用的是 PaddleDetection /deploy 中的python 版進行 部署的。目前在項目中已經(jīng)跑起來了。但考慮到以后和其他業(yè)務端對接,可能使用C++ 版的更方便,因此嘗試打通C++版的推理預測,在這里記錄下分別基于windows 和linux 下的模型部署流程。

一、 windows版
  1. CPU 版

windows 版相對來說較容易一下,首先嘗試不使用gpu 的版本。

按照 說明文檔中 的記錄,下載 使用cpu 版的 paddle_inference , 版本要求是使用vs2017 ,但我使用vs 2019 進行編譯是可以的。

然后需要下載opencv , 下載完成后,最好將 opencv\build\x64\vc15\bin 放到環(huán)境變量中。這個其實是用的opencv 3 .X 版本的,跟現(xiàn)在項目中的環(huán)境還是有些差別(項目中用到opencv 4.5)后續(xù)考慮編譯一個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的模型應用程序基本上就編譯好了。運行結(jié)果如下:

  1. GPU版

當跑起來CPU 版之后,發(fā)現(xiàn)GPU 版的也沒有那么難了。首先要確定下當前機器下GPU 環(huán)境

本機環(huán)境如下:

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 然后生成,產(chǎn)生main.exe 文件。運行結(jié)果如下:

二、Linux版

linux 版下我也是先跑通CPU ,在用GPU 。因為公司電腦是在運行項目,不敢隨意測試,因此使用了云GPU, 開始的時候使用的是 恒源云GPU ,但他家的下載速度和網(wǎng)速實在太慢,后來使用了AutoDL 的云GPU ,網(wǎng)速挺快,還能連接百度網(wǎng)盤,挺香的。

首先重新編譯了下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 來就可以,最后會生產(chǎn) main

在執(zhí)行是會發(fā)現(xiàn)缺少 libpaddle2onnx.so 等文件,在paddle_inference 下,找到,cp到/usr/lib 下就可以

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

當前標題:C++版PPyolo+部署記錄-創(chuàng)新互聯(lián)
分享路徑:http://muchs.cn/article14/ddjhge.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、微信小程序、網(wǎng)站設計公司、品牌網(wǎng)站設計網(wǎng)站導航、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設