1.1什么是 LabVIEW
LabVIEW 是測試測量與自動化行業常用的圖形化開發環境,其優點有:
學習容易入門快,開發計算機視覺應用程序簡單方便;
自帶機器視覺函數庫(Vision Development 模塊),并提供支持 GigE、USB3 Vision 等標準總線的第三方相機的圖像采集驅動程序(NI-IMAQdx),和 OpenCV 接口工具包(NIVision OpenCV Utilities),完全滿足 AI 機器視覺應用程序的開發要求。
使用 LabVIEW 調用 OpenVINO IR 模型,可以快速完成深度學習項目開發與交付。
1.2準備開發環境
要完成在 LabVIEW 中調用 OpenVINO 格式的 YOLOv8 模型,需要安裝:
LabVIEW,Vision Development 模塊和 NI-IMAQdx
OpenVINO 2023.0
Visual Studio 2022 Community
Ultralytics YOLOv8
1.2.1安裝 LabVIEW
請從下方地址下載 LabVIEW 安裝文件:
*需要注意的是:請選擇 LabVIEW 64 位版本,并勾選 Vision Development 模塊和 NI-IMAQdx。
1.2.2安裝 OpenVINO
OpenVINO分為 OpenVINO 運行庫(OpenVINO Runtime)和 OpenVINO開發工具集(OpenVINO Development Tools)。
OpenVINO運行庫:一個提供 C/C++/Python API 的 C++ 函數庫。
OpenVINO開發工具集:一套包含模型優化器(Model Optimizer)、基準測試工具(Benchmark Tool)、訓練后優化工具(Post-Training Optimization Tool)、模型下載器(Model Downloader)等工具的開發工具集。
請先用命令:
pip install openvino-dev
安裝 OpenVINO開發工具集。該命令在安裝 OpenVINO開發工具集時,會同時將提供 Python API 的 OpenVINO運行庫作為依賴項進行安裝。
然后從 OpenVINO官網:
下載并解壓 Windows 版的 OpenVINO運行庫,如下圖所示:
本文將 OpenVINO 運行庫壓縮包解壓到了 C:Program Files (x86)Intelopenvino,如下圖所示:
1.2.3安裝 Visual Studio 2022 Community
安裝 Visual Studio 2022 Community 詳細步驟請參考《在Windows中基于Visual Studio配置OpenVINO C++開發環境》。
1.2.4安裝 Ultralytics 并導出 YOLOv8 模型
YOLOv8 是 Ultralytics 公司基于 YOLO 框架,發布的一款面向物體檢測與跟蹤、實例分割、圖像分類和姿態估計任務的 SOTA(State-Of-The-Art)模型工具套件。
首先,使用命令,完成 ultralytics 軟件包安裝。
pip install ultralytics
然后,使用命令:
yolo export model=yolov8n.pt format=openvino half=True
導出 YOLOv8n OpenVINO格式模型,如下圖所示:
1.3為 LabVIEW 調用
編寫 OpenVINO dll 封裝函數
為了滿足 LabVIEW 調用 C++ dll 函數的規則,需要編寫 OpenVINO dll 封裝函數。整個封裝工作包括一個數據結構體和四個 API 函數:
結構體 lv_ov_engine:定義 OpenVINO推理時需要傳遞的數據結構
create_ir():初始化 OpenVINO Core 對象并創建推理請求
infer():輸入預處理后的圖像數據,執行推理計算
getResult():獲得推理計算結果
release():釋放資源
1.3.1定義結構體 lv_ov_engine
定義 OpenVINO推理時需要傳遞的數據結構,如下所示:
//定義OpenVINO推理時需要傳遞的數據結構 typedef struct lv_ov_engine { ov::Core ovCore; ov::InferRequest infer_request; } OvEngineStruct;
向右滑動查看完整代碼
1.3.2創建 create_ir() 函數
創建 create_ir() 函數,實現將 OpenVINO IR 模型載入指定的計算設備,并返回初始化好的推理請求,如下所示:
//將OpenVINO IR模型載入指定的推理設備 extern "C" __declspec(dllexport) OvEngineStruct * create_ir(char* xml_file, char* device_name) { OvEngineStruct* p = new OvEngineStruct(); auto compiled_model = p->ovCore.compile_model(xml_file, device_name); p->infer_request = compiled_model.create_infer_request(); return p; }
向右滑動查看完整代碼
1.3.3創建 IE_Run 函數
創建 infer() 函數,輸入預處理后的圖像數據,執行推理計算,如下所示:
//輸入預處理后的圖像數據,執行推理計算 extern "C" __declspec(dllexport) void infer(OvEngineStruct * p, float* inputData) { ov::Tensor input_tensor0 = p->infer_request.get_input_tensor(0); auto data0 = input_tensor0.data(); memcpy(data0, inputData, 1 * 3 * 640 * 640 * sizeof(float)); p->infer_request.infer(); }
向右滑動查看完整代碼
1.3.4創建 getResult() 函數
創建 getResult() 函數,用于獲取推理結果,如下所示:
//獲取推理后的結果(yolov8輸出張量的大小為1*84*8400) extern "C" __declspec(dllexport) void getResult(OvEngineStruct * p, float* data) { auto output = p->infer_request.get_output_tensor(0); const float* f = output.data(); memcpy(data, f, sizeof(float) * 1 * 84 * 8400); }
向右滑動查看完整代碼
1.3.5創建 release 函數
創建 release 函數,用于釋放推理引擎資源,如下所示:
//釋放推理引擎 extern "C" __declspec(dllexport) void release(OvEngineStruct * p) { delete p; }
向右滑動查看完整代碼
完整代碼請參考:openvino_vi_wrapper.cpp,在 Visual Studio 中將 openvino_vi_wrapper.cpp 編譯為 dll,然后在 LabVIEW 中調用并封裝為 4 個 VI,如下圖所示:
1.4使用 LabVIEW OpenVINO VI
實現 YOLOv8 目標檢測
請讀者先克隆本文的源代碼到本地:
git clone
https://github.com/wangstoudamire/lv_yolov8_openvino
按照 README.md 文檔安裝相關工具包,然后運行 LabVIEW_OpenVINO_Demo.vi(運行之前請確保電腦已聯網),運行結果如下圖所示:
1.5結論
基于 OpenVINO,創建 LabVIEW 推理計算 VI,實現 AI 推理計算簡單方便。結合 LabVIEW 圖形化開發環境,可以快速開發 AI 應用程序。更多 AI 推理計算功能,可以參考 VIRobotics 的 LabVIEW AI 工具包:
審核編輯:湯梓紅
-
英特爾
+關注
關注
61文章
9949瀏覽量
171693 -
LabVIEW
+關注
關注
1970文章
3654瀏覽量
323316 -
物聯網
+關注
關注
2909文章
44557瀏覽量
372776 -
模型
+關注
關注
1文章
3226瀏覽量
48807 -
目標檢測
+關注
關注
0文章
209瀏覽量
15605
原文標題:OpenVINO?2023.0實戰 | 在LabVIEW中部署YOLOv8目標檢測模型
文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論