0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在LabVIEW中部署YOLOv8目標(biāo)檢測(cè)模型

英特爾物聯(lián)網(wǎng) ? 來(lái)源:英特爾物聯(lián)網(wǎng) ? 2023-06-09 11:11 ? 次閱讀

作者:英特爾物聯(lián)網(wǎng)行業(yè)創(chuàng)新大使 王立奇

1.1什么是 LabVIEW

LabVIEW 是測(cè)試測(cè)量與自動(dòng)化行業(yè)常用的圖形化開(kāi)發(fā)環(huán)境,其優(yōu)點(diǎn)有:

學(xué)習(xí)容易入門(mén)快,開(kāi)發(fā)計(jì)算機(jī)視覺(jué)應(yīng)用程序簡(jiǎn)單方便;

自帶機(jī)器視覺(jué)函數(shù)庫(kù)(Vision Development 模塊),并提供支持 GigE、USB3 Vision 等標(biāo)準(zhǔn)總線的第三方相機(jī)的圖像采集驅(qū)動(dòng)程序(NI-IMAQdx),和 OpenCV 接口工具包(NIVision OpenCV Utilities),完全滿(mǎn)足 AI 機(jī)器視覺(jué)應(yīng)用程序的開(kāi)發(fā)要求。

使用 LabVIEW 調(diào)用 OpenVINO IR 模型,可以快速完成深度學(xué)習(xí)項(xiàng)目開(kāi)發(fā)與交付。

1.2準(zhǔn)備開(kāi)發(fā)環(huán)境

要完成在 LabVIEW 中調(diào)用 OpenVINO 格式的 YOLOv8 模型,需要安裝:

LabVIEW,Vision Development 模塊和 NI-IMAQdx

OpenVINO 2023.0

Visual Studio 2022 Community

Ultralytics YOLOv8

1.2.1安裝 LabVIEW

請(qǐng)從下方地址下載 LabVIEW 安裝文件:

*需要注意的是:請(qǐng)選擇 LabVIEW 64 位版本,并勾選 Vision Development 模塊和 NI-IMAQdx。

604fd830-05f2-11ee-962d-dac502259ad0.png

1.2.2安裝 OpenVINO

OpenVINO分為 OpenVINO 運(yùn)行庫(kù)(OpenVINO Runtime)和 OpenVINO開(kāi)發(fā)工具集(OpenVINO Development Tools)。

OpenVINO運(yùn)行庫(kù):一個(gè)提供 C/C++/Python API 的 C++ 函數(shù)庫(kù)。

OpenVINO開(kāi)發(fā)工具集:一套包含模型優(yōu)化器(Model Optimizer)、基準(zhǔn)測(cè)試工具(Benchmark Tool)、訓(xùn)練后優(yōu)化工具(Post-Training Optimization Tool)、模型下載器(Model Downloader)等工具的開(kāi)發(fā)工具集。

請(qǐng)先用命令:

pip install openvino-dev

安裝 OpenVINO開(kāi)發(fā)工具集。該命令在安裝 OpenVINO開(kāi)發(fā)工具集時(shí),會(huì)同時(shí)將提供 Python API 的 OpenVINO運(yùn)行庫(kù)作為依賴(lài)項(xiàng)進(jìn)行安裝。

然后從 OpenVINO官網(wǎng):

下載并解壓 Windows 版的 OpenVINO運(yùn)行庫(kù),如下圖所示:

607a934a-05f2-11ee-962d-dac502259ad0.png

本文將 OpenVINO 運(yùn)行庫(kù)壓縮包解壓到了 C:Program Files (x86)Intelopenvino,如下圖所示:

60b4d668-05f2-11ee-962d-dac502259ad0.png

1.2.3安裝 Visual Studio 2022 Community

安裝 Visual Studio 2022 Community 詳細(xì)步驟請(qǐng)參考《在Windows中基于Visual Studio配置OpenVINO C++開(kāi)發(fā)環(huán)境》。

1.2.4安裝 Ultralytics 并導(dǎo)出 YOLOv8 模型

YOLOv8 是 Ultralytics 公司基于 YOLO 框架,發(fā)布的一款面向物體檢測(cè)與跟蹤、實(shí)例分割、圖像分類(lèi)和姿態(tài)估計(jì)任務(wù)的 SOTA(State-Of-The-Art)模型工具套件。

首先,使用命令,完成 ultralytics 軟件包安裝。

pip install ultralytics

然后,使用命令:

yolo export model=yolov8n.pt format=openvino half=True

導(dǎo)出 YOLOv8n OpenVINO格式模型,如下圖所示:

60e0eb40-05f2-11ee-962d-dac502259ad0.png

1.3為 LabVIEW 調(diào)用

編寫(xiě) OpenVINO dll 封裝函數(shù)

為了滿(mǎn)足 LabVIEW 調(diào)用 C++ dll 函數(shù)的規(guī)則,需要編寫(xiě) OpenVINO dll 封裝函數(shù)。整個(gè)封裝工作包括一個(gè)數(shù)據(jù)結(jié)構(gòu)體和四個(gè) API 函數(shù):

結(jié)構(gòu)體 lv_ov_engine:定義 OpenVINO推理時(shí)需要傳遞的數(shù)據(jù)結(jié)構(gòu)

create_ir():初始化 OpenVINO Core 對(duì)象并創(chuàng)建推理請(qǐng)求

infer():輸入預(yù)處理后的圖像數(shù)據(jù),執(zhí)行推理計(jì)算

getResult():獲得推理計(jì)算結(jié)果

release():釋放資源

1.3.1定義結(jié)構(gòu)體 lv_ov_engine

定義 OpenVINO推理時(shí)需要傳遞的數(shù)據(jù)結(jié)構(gòu),如下所示:

//定義OpenVINO推理時(shí)需要傳遞的數(shù)據(jù)結(jié)構(gòu)
typedef struct lv_ov_engine {
  ov::Core ovCore;
  ov::InferRequest infer_request;
} OvEngineStruct;

向右滑動(dòng)查看完整代碼

1.3.2創(chuàng)建 create_ir() 函數(shù)

創(chuàng)建 create_ir() 函數(shù),實(shí)現(xiàn)將 OpenVINO IR 模型載入指定的計(jì)算設(shè)備,并返回初始化好的推理請(qǐng)求,如下所示:

//將OpenVINO IR模型載入指定的推理設(shè)備
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;
}

向右滑動(dòng)查看完整代碼

1.3.3創(chuàng)建 IE_Run 函數(shù)

創(chuàng)建 infer() 函數(shù),輸入預(yù)處理后的圖像數(shù)據(jù),執(zhí)行推理計(jì)算,如下所示:

//輸入預(yù)處理后的圖像數(shù)據(jù),執(zhí)行推理計(jì)算
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();
}

向右滑動(dòng)查看完整代碼

1.3.4創(chuàng)建 getResult() 函數(shù)

創(chuàng)建 getResult() 函數(shù),用于獲取推理結(jié)果,如下所示:

//獲取推理后的結(jié)果(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);
}

向右滑動(dòng)查看完整代碼

1.3.5創(chuàng)建 release 函數(shù)

創(chuàng)建 release 函數(shù),用于釋放推理引擎資源,如下所示:

//釋放推理引擎
extern "C" __declspec(dllexport) void release(OvEngineStruct * p)
{
  delete p;
}

向右滑動(dòng)查看完整代碼

完整代碼請(qǐng)參考:openvino_vi_wrapper.cpp,在 Visual Studio 中將 openvino_vi_wrapper.cpp 編譯為 dll,然后在 LabVIEW 中調(diào)用并封裝為 4 個(gè) VI,如下圖所示:

611e54bc-05f2-11ee-962d-dac502259ad0.png

1.4使用 LabVIEW OpenVINO VI

實(shí)現(xiàn) YOLOv8 目標(biāo)檢測(cè)

請(qǐng)讀者先克隆本文的源代碼到本地:

git clone

https://github.com/wangstoudamire/lv_yolov8_openvino

按照 README.md 文檔安裝相關(guān)工具包,然后運(yùn)行 LabVIEW_OpenVINO_Demo.vi(運(yùn)行之前請(qǐng)確保電腦已聯(lián)網(wǎng)),運(yùn)行結(jié)果如下圖所示:

6145c4fc-05f2-11ee-962d-dac502259ad0.png

1.5結(jié)論

基于 OpenVINO,創(chuàng)建 LabVIEW 推理計(jì)算 VI,實(shí)現(xiàn) AI 推理計(jì)算簡(jiǎn)單方便。結(jié)合 LabVIEW 圖形化開(kāi)發(fā)環(huán)境,可以快速開(kāi)發(fā) AI 應(yīng)用程序。更多 AI 推理計(jì)算功能,可以參考 VIRobotics 的 LabVIEW AI 工具包:

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 英特爾
    +關(guān)注

    關(guān)注

    60

    文章

    9748

    瀏覽量

    170647
  • LabVIEW
    +關(guān)注

    關(guān)注

    1954

    文章

    3647

    瀏覽量

    320454
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2894

    文章

    43313

    瀏覽量

    366429
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3032

    瀏覽量

    48359
  • 目標(biāo)檢測(cè)
    +關(guān)注

    關(guān)注

    0

    文章

    196

    瀏覽量

    15564

原文標(biāo)題:OpenVINO?2023.0實(shí)戰(zhàn) | 在LabVIEW中部署YOLOv8目標(biāo)檢測(cè)模型

文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用YOLOv8目標(biāo)檢測(cè)和實(shí)例分割的演示

    YOLOv8是來(lái)自Ultralytics的最新的基于YOLO的對(duì)象檢測(cè)模型系列,提供最先進(jìn)的性能。
    的頭像 發(fā)表于 02-06 10:11 ?6919次閱讀

    YOLOv8自定義數(shù)據(jù)集訓(xùn)練到模型部署推理簡(jiǎn)析

    如果你只是想使用而不是開(kāi)發(fā),強(qiáng)烈推薦通過(guò)pip安裝方式獲取YOLOv8包!YOLOv8安裝命令行
    的頭像 發(fā)表于 03-24 09:27 ?4361次閱讀

    TensorRT 8.6 C++開(kāi)發(fā)環(huán)境配置與YOLOv8實(shí)例分割推理演示

    對(duì)YOLOv8實(shí)例分割TensorRT 推理代碼已經(jīng)完成C++類(lèi)封裝,三行代碼即可實(shí)現(xiàn)YOLOv8對(duì)象檢測(cè)與實(shí)例分割模型推理,不需要改任何代碼即可支持自定義數(shù)據(jù)訓(xùn)練
    的頭像 發(fā)表于 04-25 10:49 ?5286次閱讀
    TensorRT 8.6 C++開(kāi)發(fā)環(huán)境配置與<b class='flag-5'>YOLOv8</b>實(shí)例分割推理演示

    AI愛(ài)克斯開(kāi)發(fā)板上用OpenVINO?加速YOLOv8分類(lèi)模型

    本系列文章將在 AI 愛(ài)克斯開(kāi)發(fā)板上使用 OpenVINO 開(kāi)發(fā)套件依次部署并測(cè)評(píng) YOLOv8 的分類(lèi)模型、目標(biāo)檢測(cè)
    的頭像 發(fā)表于 05-05 11:47 ?907次閱讀
    <b class='flag-5'>在</b>AI愛(ài)克斯開(kāi)發(fā)板上用OpenVINO?加速<b class='flag-5'>YOLOv8</b>分類(lèi)<b class='flag-5'>模型</b>

    AI愛(ài)克斯開(kāi)發(fā)板上用OpenVINO?加速YOLOv8目標(biāo)檢測(cè)模型

    AI 愛(ài)克斯開(kāi)發(fā)板上用 OpenVINO 加速 YOLOv8 分類(lèi)模型》介紹了 AI 愛(ài)克斯開(kāi)發(fā)板上使用 OpenVINO 開(kāi)發(fā)套件部署
    的頭像 發(fā)表于 05-12 09:08 ?1151次閱讀
    <b class='flag-5'>在</b>AI愛(ài)克斯開(kāi)發(fā)板上用OpenVINO?加速<b class='flag-5'>YOLOv8</b><b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b><b class='flag-5'>模型</b>

    YOLOv8版本升級(jí)支持小目標(biāo)檢測(cè)與高分辨率圖像輸入

    YOLOv8版本最近版本又更新了,除了支持姿態(tài)評(píng)估以外,通過(guò)模型結(jié)構(gòu)的修改還支持了小目標(biāo)檢測(cè)與高分辨率圖像檢測(cè)。原始的
    的頭像 發(fā)表于 05-16 11:14 ?1.1w次閱讀
    <b class='flag-5'>YOLOv8</b>版本升級(jí)支持小<b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b>與高分辨率圖像輸入

    AI愛(ài)克斯開(kāi)發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢測(cè)模型

    AI愛(ài)克斯開(kāi)發(fā)板上用OpenVINO加速YOLOv8分類(lèi)模型》介紹了AI愛(ài)克斯開(kāi)發(fā)板上使用OpenVINO 開(kāi)發(fā)套件部署并測(cè)評(píng)
    的頭像 發(fā)表于 05-26 11:03 ?1077次閱讀
    AI愛(ài)克斯開(kāi)發(fā)板上使用OpenVINO加速<b class='flag-5'>YOLOv8</b><b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b><b class='flag-5'>模型</b>

    AI愛(ài)克斯開(kāi)發(fā)板上用OpenVINO?加速YOLOv8-seg實(shí)例分割模型

    AI 愛(ài)克斯開(kāi)發(fā)板上用 OpenVINO 加速 YOLOv8 目標(biāo)檢測(cè)模型》介紹了 AI
    的頭像 發(fā)表于 06-05 11:52 ?856次閱讀
    <b class='flag-5'>在</b>AI愛(ài)克斯開(kāi)發(fā)板上用OpenVINO?加速<b class='flag-5'>YOLOv8</b>-seg實(shí)例分割<b class='flag-5'>模型</b>

    教你如何用兩行代碼搞定YOLOv8各種模型推理

    大家好,YOLOv8 框架本身提供的API函數(shù)是可以?xún)尚写a實(shí)現(xiàn) YOLOv8 模型推理,這次我把這段代碼封裝成了一個(gè)類(lèi),只有40行代碼左右,可以同時(shí)支持YOLOv8對(duì)象
    的頭像 發(fā)表于 06-18 11:50 ?2754次閱讀
    教你如何用兩行代碼搞定<b class='flag-5'>YOLOv8</b>各種<b class='flag-5'>模型</b>推理

    目標(biāo)檢測(cè)算法再升級(jí)!YOLOv8保姆級(jí)教程一鍵體驗(yàn)

    YOLO作為一種基于圖像全局信息進(jìn)行預(yù)測(cè)的目標(biāo)檢測(cè)系統(tǒng),始終保持著極高的迭代更新率,從YOLOv5到YOLOv8,本次升級(jí)主要包括結(jié)構(gòu)算法、命令行界面、PythonAPI等。具體到
    的頭像 發(fā)表于 02-28 11:16 ?2285次閱讀
    <b class='flag-5'>目標(biāo)</b><b class='flag-5'>檢測(cè)</b>算法再升級(jí)!<b class='flag-5'>YOLOv8</b>保姆級(jí)教程一鍵體驗(yàn)

    AI愛(ài)克斯開(kāi)發(fā)板上用OpenVINO?加速YOLOv8-seg實(shí)例分割模型

    AI 愛(ài)克斯開(kāi)發(fā)板上用 OpenVINO 加速 YOLOv8 目標(biāo)檢測(cè)模型》介紹了 AI
    的頭像 發(fā)表于 06-30 10:43 ?770次閱讀
    <b class='flag-5'>在</b>AI愛(ài)克斯開(kāi)發(fā)板上用OpenVINO?加速<b class='flag-5'>YOLOv8</b>-seg實(shí)例分割<b class='flag-5'>模型</b>

    三種主流模型部署框架YOLOv8推理演示

    部署。這里以YOLOv8為例,演示了YOLOv8對(duì)象檢測(cè)模型OpenVINO、ONNXRUNT
    的頭像 發(fā)表于 08-06 11:39 ?2381次閱讀

    解鎖YOLOv8修改+注意力模塊訓(xùn)練與部署流程

    很多人也想跟修改YOLOv5源碼一樣的方式去修改YOLOv8的源碼,但是github上面卻發(fā)現(xiàn)找到的YOLOv8項(xiàng)目下面TAG分支是空的
    的頭像 發(fā)表于 08-11 14:14 ?3788次閱讀
    解鎖<b class='flag-5'>YOLOv8</b>修改+注意力模塊訓(xùn)練與<b class='flag-5'>部署</b>流程

    基于YOLOv8的自定義醫(yī)學(xué)圖像分割

    YOLOv8是一種令人驚嘆的分割模型;它易于訓(xùn)練、測(cè)試和部署。本教程中,我們將學(xué)習(xí)如何在自定義數(shù)據(jù)集上使用YOLOv8。但在此之前,我想告
    的頭像 發(fā)表于 12-20 10:51 ?615次閱讀
    基于<b class='flag-5'>YOLOv8</b>的自定義醫(yī)學(xué)圖像分割

    基于OpenCV DNN實(shí)現(xiàn)YOLOv8模型部署與推理演示

    基于OpenCV DNN實(shí)現(xiàn)YOLOv8推理的好處就是一套代碼就可以部署Windows10系統(tǒng)、烏班圖系統(tǒng)、Jetson的Jetpack系統(tǒng)
    的頭像 發(fā)表于 03-01 15:52 ?1028次閱讀
    基于OpenCV DNN實(shí)現(xiàn)<b class='flag-5'>YOLOv8</b>的<b class='flag-5'>模型</b><b class='flag-5'>部署</b>與推理演示