前言
PP-YOLOE是百度基于其之前的PP-YOLOv2所改進(jìn)的卓越的單階段Anchor-free模型,超越了多種流行的YOLO模型。如何使用python進(jìn)行該模型的部署,官網(wǎng)已經(jīng)介紹的很清楚了,但是對于如何在LabVIEW中實(shí)現(xiàn)該模型的部署,筆者目前還沒有看到相關(guān)介紹文章,所以筆者在實(shí)現(xiàn)PP-YOLOE ONNX 在LabVIEW中的部署推理后,決定和各位讀者分享一下如何使用LabVIEW實(shí)現(xiàn)PP-YOLOE的目標(biāo)檢測。
一、什么是PP-YOLO
- PP-YOLOE官方代碼地址:https://github.com/PaddlePaddle/PaddleDetection
- PP-YOLOE論文地址:https://arxiv.org/pdf/2203.16250.pdf
PP-YOLOE是百度基于其之前的PP-YOLOv2所改進(jìn)的卓越的單階段Anchor-free模型,超越了多種流行的YOLO模型。PP-YOLOE,有更高的檢測精度且部署友好。
PP-YOLOE基于anchor-free的架構(gòu),使用強(qiáng)大的backbone和neck,引入了CSPRepResStage,ET-head 和動態(tài)標(biāo)簽分配算法TAL。針對不同應(yīng)用場景,提供了不同大小的模型。即s/m/l/x,可以通過width multiplier和depth multiplier配置。PP-YOLOE避免了使用諸如Deformable Convolution或者M(jìn)atrix NMS之類的特殊算子,以使其能輕松地部署在多種多樣的硬件上。
PP-YOLOE-l在COCO test-dev2017達(dá)到了51.6的mAP, 同時其速度在Tesla V100上達(dá)到了78.1 FPS。
PP-YOLOE提供了一鍵轉(zhuǎn)出 ONNX 格式,可順暢對接 ONNX 生態(tài)。本文主要實(shí)現(xiàn)百度PP-YOLOE ONNX 在LabVIEW上的部署推理。
二、環(huán)境搭建
1、部署本項目時所用環(huán)境
- 操作系統(tǒng):Windows10
- python:3.6及以上
- LabVIEW:2018及以上 64位版本
- AI視覺工具包:techforce_lib_opencv_cpu-1.0.0.73.vip
- onnx工具包:virobotics_lib_onnx_cuda_tensorrt-1.0.0.16.vip【1.0.0.16及以上版本】
2、LabVIEW工具包下載及安裝
- AI視覺工具包下載與安裝參考:
https://blog.csdn.net/virobotics/article/details/123656523 - onnx工具包下載與安裝參考:
https://blog.csdn.net/virobotics/article/details/124998746
三、模型的獲取與轉(zhuǎn)化
注意:本教程已經(jīng)為大家提供了PP-YOLOE的模型,可跳過本步驟,直接進(jìn)行步驟四-推理。若是想要了解PP-YOLO的onnx模型如何獲取,則可繼續(xù)閱讀本部分內(nèi)容。
PP-YOLOE并沒有直接提供onnx模型,但是我們可以通過paddle2onnx實(shí)現(xiàn)onnx模型的導(dǎo)出。
1、安裝paddle
- PPYOLO需要使用百度paddle框架,我們打開百度飛槳官網(wǎng):https://www.paddlepaddle.org.cn/,在下方的快速安裝選擇適合自己版本的paddlepaddle
- cmd中執(zhí)行以下命令安裝:
python -m pip install paddlepaddle-gpu==2.3.1.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
2、安裝依賴的庫
- 從github上下載PaddleDetection并解壓到目錄,下載地址:https://github.com/PaddlePaddle/PaddleDetection ,將paddledetection根目錄添加到環(huán)境變量。
- 在PaddleDetection-release-2.4文件夾中打開cmd,輸入以下指令安裝需要的庫
pip3 install -U pip && pip3 install -r requirements.txt
3、安裝pycocotools
pip install pycocotools
若安裝pycocotools時遇到ERROR: Could not build wheels for pycocotools ……,則可以使用以下指令來安裝:
pip install pycocotools-windows
4、導(dǎo)出onnx模型
(1)導(dǎo)出推理模型
python tools/export_model.py -c configs/ppyoloe/ppyoloe_crn_l_300e_coco.yml --output_dir=output_inference -o weights=https://paddledet.bj.bcebos.com/models/ppyoloe_crn_l_300e_coco.pdparams
(2) 安裝paddle2onnx
pip install paddle2onnx
(3) 轉(zhuǎn)換成onnx格式
paddle2onnx --model_dir output_inference/ppyoloe_crn_l_300e_coco --model_filename model.pdmodel --params_filename model.pdiparams --opset_version 11 --save_file ppyoloe_crn_l_300e_coco.onnx
至此已成功導(dǎo)出PP-YOLOE ONNX模型
注意: ONNX模型目前只支持batch_size=1
四、在LabVIEW實(shí)現(xiàn)PP-YOLOE的部署推理
本項目整體的文件結(jié)構(gòu)如下圖所示,各位讀者可在文章末尾鏈接處下載整個項目源碼。如您想要探討更多關(guān)于LabVIEW與人工智能技術(shù),歡迎加入我們:705637299
1、LabVIEW調(diào)用PP-YOLOE實(shí)現(xiàn)目標(biāo)檢測pp-yolox_main.vi
本例中使用LabvVIEW ONNX工具包中的Create_Session.vi載入onnx模型,可選擇使用cpu,cuda進(jìn)行推理加速。
(1)查看模型
我們可以使用netron 查看ppyoloe_crn_s_300e_coco.onnx的網(wǎng)絡(luò)結(jié)構(gòu),瀏覽器中輸入鏈接:https://netron.app/,點(diǎn)擊Open Model,打開相應(yīng)的網(wǎng)絡(luò)模型文件即可。
查看模型屬性,可看到模型的輸入輸出如下圖所示:
我們發(fā)現(xiàn),該模型有兩個輸入和兩個輸出,所以推理時候需要有兩個輸入,需要用到我們的多輸入處理vi,run.vi
- 可以看到圖片輸入大小為640x640
- 第一個輸出為8400x6[6分別為classese_id,cofidence,框]
(2)實(shí)現(xiàn)過程
- 讀取圖片并進(jìn)行圖像預(yù)處理(-1到1的歸一化)
- 初始化一個Vector_Value,新增兩個輸入tensor(圖片及scal_factor)
- 加載模型并選擇加速類型(cpu、CUDA、tensorRt)
- 實(shí)現(xiàn)多輸入推理
- 獲取第一層的輸出
- 進(jìn)行后處理
- 繪制檢測出的目標(biāo)及及置信度
(3)項目運(yùn)行
配置本項目所需環(huán)境。在文章末尾鏈接處下載整個項目源碼,將我們已經(jīng)轉(zhuǎn)化好的onnx模型放置到model文件夾中,打開pp_yolo_main.vi,在前面板中修改程序中加載的模型路徑為實(shí)際模型路徑,本項目中已經(jīng)將PP-YOLOE onnx模型【ppyoloe_crn_s_300e_coco.onnx】放置到了model文件夾中,如需其他模型,讀者也可自行放置到model文件及下,實(shí)現(xiàn)模型的加載。修改檢測圖片的路徑為實(shí)際圖片路徑,運(yùn)行程序,可得到目標(biāo)檢測的結(jié)果。
- 主程序源碼如下:
- 運(yùn)行結(jié)果如下:
大家也可以檢測其他圖片來測試檢測效果。
2、LabVIEW調(diào)用PP-YOLOE實(shí)現(xiàn)實(shí)時目標(biāo)檢測ppyolo_camera.vi
實(shí)時檢測過程,我們可以選擇使用CUDA實(shí)現(xiàn)推理加速,整個程序的實(shí)現(xiàn)過程和加載圖片進(jìn)行檢測基本一致。
(1)LabVIEW調(diào)用PP-YOLOE實(shí)時目標(biāo)檢測源碼
(2)LabVIEW調(diào)用PP-YOLOE實(shí)現(xiàn)實(shí)時目標(biāo)檢測結(jié)果
可以看到使用CUDA進(jìn)行推理加速,速度還是很快的。
五、完整項目下載鏈接
鏈接:https://blog.csdn.net/virobotics/article/details/126231434?spm=1001.2014.3001.5501
總結(jié)
以上就是今天要給大家分享的內(nèi)容,希望對大家有用。如果有問題可以在評論區(qū)里討論,提問前請先點(diǎn)贊支持一下博主哦。
**如果文章對你有幫助,歡迎?關(guān)注、
審核編輯 黃宇
-
LabVIEW
+關(guān)注
關(guān)注
1961文章
3651瀏覽量
322013 -
目標(biāo)檢測
+關(guān)注
關(guān)注
0文章
200瀏覽量
15578
發(fā)布評論請先 登錄
相關(guān)推薦
評論