YOLOX目標檢測實戰:LabVIEW+YOLOX ONNX模型實現推理檢測(含原始碼)

2023-07-13 15:01:22


前言

好長一段時間沒更博了,沒更新部落格的這段時間博主都有在努力產出,前段時間好多朋友私信問我說自己的yolov5模型是比較老的版本,使用LabVIEW推理的時候會報錯。為各位朋友新老版本都能相容,博主這段時間做了一個LabVIEW YOLOv5的外掛,裡面包含了大部分的新舊版本,老版本的朋友們也可以愉快的使用LabVIEW來實現推理了。等後面整理好了分享給大家。今天我們先一起來看一下如何使用LabVIEW實現yolox的目標檢測。


一、什麼是YOLOX

LabVIEW實現YOLOX目標檢測



YOLOX是曠視科技開源的高效能實時目標檢測網路,曠視的研究者將解耦頭、資料增強、無錨點以及標籤分類等目標檢測領域的優秀進展與 YOLO 進行了巧妙的整合組合,提出了 YOLOX,不僅實現了超越 YOLOv3、YOLOv4 和 YOLOv5 的 AP,而且取得了極具競爭力的推理速度。如下圖:


YOLOX提供了支援 ONNX、TensorRT、NCNN 和 Openvino 的部署版本。今天我們主要針對YOLOX 的ONNX在LabVIEW中實現部署推理。


二、環境搭建

1、部署本專案時所用環境:

  • 作業系統: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.12.vip【不使用cuda或者tensorrt加速的話也可以使用:virobotics_lib_onnx_cpu-1.0.0.13.vip】

2、LabVIEW工具包下載及安裝:


三、模型的獲取與轉化【推薦方式一】

下面我們來介紹兩種模型獲取的方式(以yoloxs為例,想要獲取其他模型的方式也一樣,只需要修改名字即可)

1、方式一:直接在官網下載yolox的onnx模型

下載具體地址如下:https://github.com/Megvii-BaseDetection/YOLOX/tree/main/demo/ONNXRuntime

下載對應版本模型的weights,點選github即可下載onnx模型。

2、方式二:將標準模型pth轉化為onnx(較為複雜)

1、安裝YOLOX
https://github.com/Megvii-BaseDetection/YOLOX中下載yolox原始碼並解壓,在YOLOX-main資料夾中開啟cmd,輸入以下指令安裝需要的庫及yolox:

pip3 install -U pip && pip3 install -r requirements.txt
python3 setup.py develop

2、安裝pycocotools

pip install pycocotools

!!!注:若安裝pycocotools時遇到ERROR: Could not build wheels for pycocotools ……,則使用以下指令來安裝:

pip install pycocotools-windows

3、從基準表下載標準預訓練模型:https://github.com/Megvii-BaseDetection/YOLOX

將yolox_s.pth模型放置到如下路徑:

4、將標準模型pth轉化為onnx

執行以下指令實現模型的轉換

python3 tools/export_onnx.py --output-name yolox_s.onnx -n yolox-s -c yolox_s.pth

也可使用如下指令轉化自己的模型:

#通過 -f 轉換標準 YOLOX 模型。使用 -f 時,上述命令等價於:
python3 tools/export_onnx.py --output-name yolox_s.onnx -f exps/default/yolox_s.py -c yolox_s.pth
# 要轉換您的自定義模型,請使用 -f:
python3 tools/export_onnx.py --output-name your_yolox.onnx -f exps/your_dir/your_yolox.py -c your_yolox.pth

輸出如下,得到yolox_s.onnx

3、獲取onnx模型總結

通過對比我們會發現,先下載標準模型,再轉換為onnx模型比較麻煩,需要設定很多環境,如果只是想要實現YOLOX的推理,則可以使用方式一,直接在官網下載對應的模型即可。但是如果想要轉換自己訓練好的onnx模型,則可採用第二種方式,將訓練好的pth轉化為onnx。


四、LabVIEW實現YOLOX ONNX推理檢測

將我們的onnx模型放置到model資料夾中,修改程式中載入的模型,本專案中已經下載好了yolox_s.onnx和yolox_m.onnx兩種模型,如需其他模型,讀者也可自行放置到model資料夾下,實現模型的載入。

1、LabVIEW呼叫yolox onnx模型實現目標檢測yolox.vi

本例中使用LabvVIEW ONNX工具包中的Create_Session.vi載入onnx模型,可選擇使用cpu,cuda,tensorRT進行推理加速。【若安裝的是onnx cpu版,則只可使用cpu推理加速】

(1)檢視模型

我們可以使用netron 檢視yolov5m.onnx的網路結構,瀏覽器中輸入連結:https://netron.app/,點選Open Model,開啟相應的網路模型檔案即可。

如下圖所示是轉換之後的yolox_s.onnx的屬性:

可以看到圖片輸入大小為640640
輸出為1
8400*85

(2)LabVIEW呼叫YOLOX原始碼

如下圖所示,載入模型及圖片實現目標檢測

(3)LabVIEW呼叫YOLOX實現目標檢測結果

本程式執行時,載入模型為:yolox_s.onnx,實際執行時需要修改圖片路徑為實際路徑,否則會報錯

執行結果如下:

大家也可以檢測其他圖片來測試檢測效果。

2、LabVIEW呼叫yolox onnx模型實現實時目標檢測yolovx_camera.vi

實時檢測過程,我們可以選擇使用CUDA或者tensorRT實現推理加速,我們發現相同環境下,yolox的實時檢測速度和精度都比其他的yolo模型要更好。

(1)LabVIEW呼叫YOLOX實時目標檢測原始碼

(2)LabVIEW呼叫YOLOX實現實時目標檢測結果


可以看到使用CUDA進行推理加速,速度還是很快的。大家也可以使用tensorRT進行推理加速。


五、原始碼及模型下載

連結:https://pan.baidu.com/s/1FMRH1F3DSKTQBiuB3Ofe3Q?pwd=8cnf

總結

以上就是今天要給大家分享的內容。大家可根據連結下載相關原始碼與模型。

如果有問題可以在評論區裡討論,提問前請先點贊支援一下博主哦,如您想要探討更多關於LabVIEW與人工智慧技術,歡迎加入我們的705637299。

**如果文章對你有幫助,歡迎✌關注、