如何在 Windows 上使用 FastDeploy C++ 部署 PaddleDetection 目標(biāo)檢測(cè)模型

一、簡(jiǎn)介
????????FastDeploy 是百度開發(fā)的一款易用高效的推理部署開發(fā)套件。覆蓋業(yè)界熱門 AI 模型并提供開箱即用的部署體驗(yàn),包括圖像分類、目標(biāo)檢測(cè)、圖像分割、人臉檢測(cè)、人臉識(shí)別、人體關(guān)鍵點(diǎn)識(shí)別、文字識(shí)別、語義理解等多任務(wù),滿足開發(fā)者多場(chǎng)景,多硬件、多平臺(tái)的產(chǎn)業(yè)部署需求。
????????PaddleDetection 是基于飛槳 PaddlePaddle 的端到端目標(biāo)檢測(cè)套件,內(nèi)置30+模型算法及250+預(yù)訓(xùn)練模型,覆蓋目標(biāo)檢測(cè)、實(shí)例分割、跟蹤、關(guān)鍵點(diǎn)檢測(cè)等方向,其中包括服務(wù)器端和移動(dòng)端高精度、輕量級(jí)產(chǎn)業(yè)級(jí) SOTA 模型、冠軍方案和學(xué)術(shù)前沿算法,并提供配置化的網(wǎng)絡(luò)模塊組件、十余種數(shù)據(jù)增強(qiáng)策略和損失函數(shù)等高階優(yōu)化支持和多種部署方案,在打通數(shù)據(jù)處理、模型開發(fā)、訓(xùn)練、壓縮、部署全流程的基礎(chǔ)上,提供豐富的案例及教程,加速算法產(chǎn)業(yè)落地應(yīng)用。
????????在本文中,我們將介紹如何在 Windows 上基于 Visual Studio 2019,使用 FastDeploy C++ 部署 PaddleDetection 的目標(biāo)檢測(cè)模型。

二、環(huán)境配置
????????首先,我們需要明確 FastDeploy 對(duì)環(huán)境配置的要求,這一點(diǎn)我們?cè)诠俜轿臋n中就可以看到(https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/environment.md)。

根據(jù)上面的環(huán)境配置要求,大家逐一安裝即可,本文不做過多介紹。關(guān)于 CUDA?Toolkit 和 cuDNN,下面是我電腦所安裝的版本。
CUDA Toolkit:11.6.0;
cuDNN:cuDNN v8.2.0 (April 23rd, 2021), for CUDA 11.x;

三、下載 FastDeploy 預(yù)編譯 C++ 庫(kù)
fastdeploy-win-x64-gpu-0.2.1.zip:https://bj.bcebos.com/fastdeploy/release/cpp/fastdeploy-win-x64-gpu-0.2.1.zip。這里我們使用的是支持 GPU 的版本。

下載完成后,解壓到本地,以備后用。

四、下載 PaddleDetection 套件的目標(biāo)檢測(cè)模型 PicoDet
????????當(dāng)然了,在進(jìn)行部署測(cè)試之前,我們首先得知道當(dāng)前 FastDeploy 都支持哪些模型,否則后續(xù)模型推理的時(shí)候會(huì)報(bào)錯(cuò)。從下圖中可以看到,PicoDet 是在?FastDeploy 的支持列表中的。

在本實(shí)驗(yàn)中,我們選擇?picodet_l_320_coco_lcnet.tgz(https://bj.bcebos.com/paddlehub/fastdeploy/picodet_l_320_coco_lcnet.tgz)。

五、使用 Visual Studio 2019 進(jìn)行部署測(cè)試
5.1 創(chuàng)建新項(xiàng)目->控制臺(tái)應(yīng)用


填寫好項(xiàng)目名稱和保存位置后,點(diǎn)擊“創(chuàng)建”按鈕即可完成工程的創(chuàng)建。

5.2 參考 FastDeploy 例程編寫測(cè)試程序
這里我們參考的例程是 FastDeploy?fastdeploy-win-x64-gpu-0.2.1 中提供的,具體位置是:fastdeploy-win-x64-gpu-0.2.1\examples\vision\detection\paddledetection\cpp\

下面是我們參考例程,然后結(jié)合自己的實(shí)際情況編寫完成的測(cè)試代碼:
5.3 將解決方案配置為“Release x64”
因?yàn)槲覀儨y(cè)試程序依賴的庫(kù)文件是以 release 的形式發(fā)布的,如果這里我們不設(shè)置為 release,則在后面鏈接時(shí)會(huì)抱錯(cuò)。

5.4 為工程添加頭文件路徑
鼠標(biāo)選擇項(xiàng)目,然后單擊右鍵即可彈出下來菜單,在其中單擊“屬性”。

在彈出來的屬性頁(yè)中選擇:C/C++ —> 常規(guī) —> 附加包含目錄,然后在添加 fastdeploy 和 opencv 的頭文件路徑。如:
E:\PaddlePaddle\FastDeploy\FastDeployInference\fastdeploy-win-x64-gpu-0.2.1\third_libs\install\opencv-win-x64-3.4.16\build\include
E:\PaddlePaddle\FastDeploy\FastDeployInference\fastdeploy-win-x64-gpu-0.2.1\include
注意:上面這兩個(gè)路徑是我自己電腦的,小伙伴們記得根據(jù)自己電腦中?fastdeploy-win-x64-gpu-0.2.1 解壓的實(shí)際路徑來填寫。

5.5 為工程添加庫(kù)文件及其所在路徑
方法和上一個(gè)步驟差不多,不過這里選擇的是:鏈接器—>常規(guī)—> 附加庫(kù)目錄。
我電腦中的 FastDeploy 和 opencv 的庫(kù)文件路徑如下:
E:\PaddlePaddle\FastDeploy\FastDeployInference\fastdeploy-win-x64-gpu-0.2.1\lib
E:\PaddlePaddle\FastDeploy\FastDeployInference\fastdeploy-win-x64-gpu-0.2.1\third_libs\install\opencv-win-x64-3.4.16\build\x64\vc15\lib
注意:小伙伴們記得根據(jù)自己的實(shí)際情況進(jìn)行修改。

添加完庫(kù)文件所在路徑后,我們還要添加庫(kù)文件的名稱。這里我們填寫的是:
opencv_world3416.lib
fastdeploy.lib

5.6 編譯工程
進(jìn)行上面的一系列配置后,我們點(diǎn)擊菜單欄的“生成”,然后在下拉菜單中單擊“生成解決方案”就可以對(duì)我們的測(cè)試程序進(jìn)行編譯了。

從上圖中可以看到,我們編譯成功了,一個(gè)報(bào)錯(cuò)和警告都沒有,非常完美。
5.7 將 exe 可執(zhí)行程序所依賴的 dll 庫(kù)文件復(fù)制到其所在目錄

5.8 執(zhí)行測(cè)試程序,查看效果
在執(zhí)行測(cè)試程序之前,我們先準(zhǔn)備好待測(cè)的圖片(代碼中的 image_file 記得指定路徑):

按快捷鍵【Ctrl+F5】或者在菜單欄選擇“調(diào)試—>開始執(zhí)行”都可以。

從輸出的日志中,我們可以看到,picodet_l_320_coco_lcnet 模型的推理耗時(shí) 45ms .

下面是?picodet_l_320_coco_lcnet 檢測(cè)模型的預(yù)測(cè)結(jié)果:

至此,關(guān)于如何在 Windows 中使用 FastDeploy C++ 部署 PaddleDetection 目標(biāo)檢測(cè)模型的介紹就結(jié)束了。如果小伙伴們覺得有收獲的話,也可以點(diǎn)個(gè)贊再走哦。