RM新时代网站-首页

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

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

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

在LabVIEW中調(diào)用OpenVINO? 模型

英特爾物聯(lián)網(wǎng) ? 來(lái)源:英特爾物聯(lián)網(wǎng) ? 作者:英特爾物聯(lián)網(wǎng) ? 2022-03-21 10:05 ? 次閱讀

1.1

什么是LabVIEW?

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

1

圖形化開(kāi)發(fā)環(huán)境,學(xué)習(xí)容易入門快

2

自帶機(jī)器視覺(jué)函數(shù)庫(kù),并提供OpenCV接口庫(kù),開(kāi)發(fā)機(jī)器視覺(jué)與自動(dòng)化應(yīng)用程序速度快

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

LabVIEW詳細(xì)介紹參考:

https://www.ni.com/zhcn/shop/labview.html

1.2

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

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

1

LabVIEW、Vision Development Module和NIVision OpenCV Utilities

2

Visual Studio 2019 Community;

3

OpenVINO 2021.4.2 LTS

1.2.1

安裝LabVIEW

LabVIEW請(qǐng)從下列網(wǎng)址下載安裝文件,通過(guò)NI Package Manager完成安裝。

https://www.ni.com/zh-cn/support/downloads/software-products/download.labview.html#411431

需要注意的是:選擇LabVIEW 64位版本,并同時(shí)安裝Vision Development模塊,安裝完畢后至少保證如圖1-1所示的打鉤模塊都已安裝。

f5705716-a264-11ec-952b-dac502259ad0.png

圖1-1 安裝LabVIEW和Vision Development模塊

“以管理員身份運(yùn)行”JKI VI Package Manager,搜索并安裝NIVision OpenCV Utilities,如圖1-2所示。

f597d962-a264-11ec-952b-dac502259ad0.png

圖1-2 安裝NIVision OpenCV Utilities

從C:Program FilesNational InstrumentsLabVIEW 2021examplesVisionNIVision OpenCV Utilities文件夾中打開(kāi)任意一個(gè)范例程序,若成功運(yùn)行,證明安裝成功,如圖1-3所示。

f5e18986-a264-11ec-952b-dac502259ad0.png

圖1-3 安裝NIVision OpenCV Utilities成功

1.2.1

安裝Visual Studio 2019 Community

和OpenVINO工具套件

從https://visualstudio.microsoft.com/zh-hans/downloads/中下載并安裝Visual Studio 2019 Community。

從https://www.intel.cn/content/www/cn/zh/developer/tools/openvino-toolkit/overview.html 中下載并安裝OpenVINO工具套件

1.3

準(zhǔn)備OpenVINO IR模型

請(qǐng)參考本文的姊妹篇《PPYOLOv2模型從訓(xùn)練到OpenVINO部署-上篇》完成PPYOLOv2模型的部署,《PPYOLOv2模型從訓(xùn)練到OpenVINO部署-下篇》完成將PPYOLOv2飛槳模型轉(zhuǎn)換為OpenVINO IR模型。

讀者可以從https://github.com/dlod-openvino/ppyolov2_openvino_samples中下載已轉(zhuǎn)換好的OpenVINO IR模型

1.4

編寫OpenVINOAPI的LabVIEWWrapper

1.4.1

定義存儲(chǔ)InferenceEngine的結(jié)構(gòu)體

定義存儲(chǔ)Inference Engine的結(jié)構(gòu)體如代碼清單1-1所示,方便創(chuàng)建和刪除。

代碼清單1-1 Inference Engine結(jié)構(gòu)體

//定義結(jié)構(gòu)體,存儲(chǔ)與InferenceEngine相關(guān)的變量

typedefstructlv_infer_engine{

Coreie;//ie對(duì)象

ExecutableNetworkexec_net;

InferRequestinfer_request;

}InferEngineStruct;

1.4.2

創(chuàng)建ppyolov2_init函數(shù)

創(chuàng)建ppyolov2_init函數(shù),主要是創(chuàng)建指向InferEngine的指針,并反回給LabVIEW。

代碼清單1-2 ppyolov2_init函數(shù)

//創(chuàng)建指向InferEngine的指針,并反饋給LabVIEW

EXTERN_CNI_EXPORTvoid*ppyolov2_init(char*model_xml_file,char*device_name,NIErrorHandleerrorHandle){

InferEngineStruct*p=newInferEngineStruct();

p->exec_net=p->ie.LoadNetwork(model_xml_file,device_name);

p->infer_request=p->exec_net.CreateInferRequest();

return(void*)p;

}

1.4.3

創(chuàng)建ppyolov2_predict函數(shù)

創(chuàng)建ppyolov2_predict函數(shù),用于執(zhí)行ppyolov2模型預(yù)測(cè)功能。

代碼清單1-3 ppyolov2函數(shù)

EXTERN_CvoidNI_EXPORTppyolov2_predict(NIImageHandlesourceHandle,void*pInferEngine,char*bbox_name,char*bbox_num_name,float*detections,NIErrorHandleerrorHandle){

NIERRORerror=NI_ERR_SUCCESS;

ReturnOnPreviousError(errorHandle);

try{

NIImagesource(sourceHandle);

MatsourceMat;

InferEngineStruct*p=(InferEngineStruct*)pInferEngine;

//從NIImage對(duì)象中淺拷貝圖像數(shù)據(jù)到

Mat對(duì)象

ThrowNIError(source.ImageToMat(sourceMat));

autotype=source.type;

Blob::Ptrimage_blob=p->infer_request.GetBlob("image");

autoinput_H=image_blob->getTensorDesc().getDims()[2];

autoinput_W=image_blob->getTensorDesc().getDims()[3];

//交換RB通道

cv::Matblob;

cv::cvtColor(sourceMat,blob,cv::COLOR_BGRA2RGB);

//放縮圖片到(input_H,input_W)

cv::resize(blob,blob,cv::Size(input_H,input_W),0,0,cv::INTER_LINEAR);

//圖像數(shù)據(jù)歸一化,減均值mean,除以方差std

//PaddleDetection模型使用imagenet數(shù)據(jù)集的Mean=[0.485,0.456,0.406]和std=[0.229,0.224,0.225]

vectormean_values{0.485*255,0.456*255,0.406*255};

vectorstd_values{0.229*255,0.224*255,0.225*255};

vectorrgbChannels(3);

split(blob,rgbChannels);

for(autoi=0;i

{

rgbChannels[i].convertTo(rgbChannels[i],CV_32FC1,1.0/std_values[i],(0.0-mean_values[i])/std_values[i]);

}

merge(rgbChannels,blob);

fillBlobImage(image_blob,blob);

constfloatscale_h=float(input_H)/float(sourceMat.rows);

constfloatscale_w=float(input_W)/float(sourceMat.cols);

constpairscale_factor(scale_h,scale_w);

autoscale_factor_blob=p->infer_request.GetBlob("scale_factor");

fillBlobImInfo(scale_factor_blob,scale_factor);

constpairim_shape(input_H,input_W);

autoim_shape_blob=p->infer_request.GetBlob("im_shape");

fillBlobImInfo(im_shape_blob,im_shape);

p->infer_request.Infer();

constfloat*infer_results=p->infer_request.GetBlob(bbox_name)->buffer().as();

constint*bbox_nums=p->infer_request.GetBlob(bbox_num_name)->buffer().as();

autobbox_num=bbox_nums[0];

for(inti=0;i

detections[i*6+0]=infer_results[i*6+0];

detections[i*6+1]=infer_results[i*6+1];

detections[i*6+2]=infer_results[i*6+2];

detections[i*6+3]=infer_results[i*6+3];

detections[i*6+4]=infer_results[i*6+4];

detections[i*6+5]=infer_results[i*6+5];

}

}

catch(NIERROR_err){

error=_err;

}

catch(...){

error=NI_ERR_OCV_USER;

}

ProcessNIError(error,errorHandle);

}

1.4.4

創(chuàng)建ppyolov2_delete函數(shù)

創(chuàng)建ppyolov2_delete函數(shù),用于釋放ppyolov2_init創(chuàng)建的內(nèi)存。

代碼清單1-4 ppyolov2_delete函數(shù)

EXTERN_CvoidNI_EXPORTppyolov2_delete(void*pInferEngine,NIErrorHandleerrorHandle){

NIERRORerror=NI_ERR_SUCCESS;

ReturnOnPreviousError(errorHandle);

InferEngineStruct*p=(InferEngineStruct*)pInferEngine;

deletep;

}

1.4.5

LabVIEW 中調(diào)用三個(gè)函數(shù)

在Visual Studio中將三個(gè)函數(shù)編譯為dll,并在LabVIEW中調(diào)用,參考范例lv_opencv_demo.vi,運(yùn)行結(jié)果如下所示。

f62563fe-a264-11ec-952b-dac502259ad0.png

圖1-4 LabVIEW中調(diào)用三個(gè)API函數(shù)

以上代碼可以從代碼倉(cāng)中下載:

https://github.com/dlod-openvino/ppyolov2_openvino_samples

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • LabVIEW
    +關(guān)注

    關(guān)注

    1970

    文章

    3654

    瀏覽量

    323282
  • 自動(dòng)化
    +關(guān)注

    關(guān)注

    29

    文章

    5562

    瀏覽量

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

    關(guān)注

    1

    文章

    3226

    瀏覽量

    48806

原文標(biāo)題:在LabVIEW中調(diào)用OpenVINO? 模型 | 開(kāi)發(fā)者實(shí)戰(zhàn)

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    LabVIEW+OpenVINOCPU上部署新冠肺炎檢測(cè)模型實(shí)戰(zhàn)(含源碼)

    使用LabVIEW+OpenVINOCPU上部署新冠肺炎CT圖像病害分割
    的頭像 發(fā)表于 03-23 13:34 ?1742次閱讀
    <b class='flag-5'>LabVIEW+OpenVINO</b><b class='flag-5'>在</b>CPU上部署新冠肺炎檢測(cè)<b class='flag-5'>模型</b>實(shí)戰(zhàn)(含源碼)

    如何使用OpenVINO C++ API部署FastSAM模型

    FastSAM 模型 | 開(kāi)發(fā)者實(shí)戰(zhàn)》,該文章我們向大家展示了基于 OpenVINO Python API 的基本部署流程。實(shí)際部署
    的頭像 發(fā)表于 11-17 09:53 ?913次閱讀
    如何使用<b class='flag-5'>OpenVINO</b> C++ API部署FastSAM<b class='flag-5'>模型</b>

    LabVIEW調(diào)用simulink模型

    各位親,小弟simulink做了一個(gè)模型 想通過(guò)使用SIT工具包在LabVIEW里面調(diào)用,但是遇到了些許小問(wèn)題,一直搞不懂 向各位請(qǐng)教一
    發(fā)表于 09-17 13:09

    如何將PyTorch模型OpenVINO trade結(jié)合使用?

    無(wú)法確定如何轉(zhuǎn)換 PyTorch 掩碼 R-CNN 模型以配合OpenVINO?使用。
    發(fā)表于 08-15 07:04

    LabVIEW調(diào)用DLL的高級(jí)技巧后續(xù)資源包

    1、LabVIEW調(diào)用DLL的高級(jí)技巧2、.NET InteropAssembly Builder3、LabVIEW機(jī)器人版
    發(fā)表于 07-01 08:28 ?209次下載

    LabVIEW網(wǎng)絡(luò)講壇第四季:LabVIEW調(diào)用DLL的技巧

    通過(guò)共享庫(kù)文件共享代碼是業(yè)界最常用的方式。本集介紹了LabVIEW調(diào)用dll的各種技巧。
    的頭像 發(fā)表于 06-22 14:15 ?5851次閱讀
    <b class='flag-5'>LabVIEW</b>網(wǎng)絡(luò)講壇第四季:<b class='flag-5'>在</b><b class='flag-5'>LabVIEW</b><b class='flag-5'>中</b><b class='flag-5'>調(diào)用</b>DLL的技巧

    LabVIEW可用的幾種計(jì)算模型

    本文將概括了LabVIEW可用的幾種計(jì)算模型,以及何時(shí)使用這些模型的指南。
    發(fā)表于 04-25 15:46 ?21次下載

    LabVIEW調(diào)用DLL的整個(gè)過(guò)程及注意事項(xiàng)

    LabVIEW調(diào)用DLL的整個(gè)過(guò)程及注意事項(xiàng)說(shuō)明。
    發(fā)表于 05-25 15:10 ?116次下載

    C++中使用OpenVINO工具包部署YOLOv5模型

    下載并轉(zhuǎn)換YOLOv5預(yù)訓(xùn)練模型的詳細(xì)步驟,請(qǐng)參考:《基于OpenVINO?2022.2和蝰蛇峽谷優(yōu)化并部署YOLOv5模型》,本文所使用的OpenVINO是2022.3 LTS版。
    的頭像 發(fā)表于 02-15 16:53 ?4646次閱讀

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

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

    自訓(xùn)練Pytorch模型使用OpenVINO?優(yōu)化并部署AI愛(ài)克斯開(kāi)發(fā)板

    本文章將依次介紹如何將 Pytorch 自訓(xùn)練模型經(jīng)過(guò)一系列變換變成 OpenVINO IR 模型形式,而后使用 OpenVINO Python API 對(duì) IR
    的頭像 發(fā)表于 05-26 10:23 ?926次閱讀
    自訓(xùn)練Pytorch<b class='flag-5'>模型</b>使用<b class='flag-5'>OpenVINO</b>?優(yōu)化并部署<b class='flag-5'>在</b>AI愛(ài)克斯開(kāi)發(fā)板

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

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

    Python環(huán)境搭建和LabVIEW調(diào)用

    本文主要介紹Python相關(guān)的環(huán)境搭建、Anaconda的使用以及LabVIEW調(diào)用Python的方法。
    的頭像 發(fā)表于 10-13 17:56 ?3115次閱讀
    Python環(huán)境搭建和<b class='flag-5'>LabVIEW</b><b class='flag-5'>中</b>的<b class='flag-5'>調(diào)用</b>

    基于OpenVINO C# API部署RT-DETR模型

    Python API 部署 RT-DETR 模型 | 開(kāi)發(fā)者實(shí)戰(zhàn)》和《基于 OpenVINO C++ API 部署 RT-DETR 模型 | 開(kāi)發(fā)者實(shí)戰(zhàn)》,該文章
    的頭像 發(fā)表于 11-10 16:59 ?753次閱讀
    基于<b class='flag-5'>OpenVINO</b> C# API部署RT-DETR<b class='flag-5'>模型</b>

    如何快速下載OpenVINO Notebooks的AI大模型

    OpenVINO Notebooks是Jupyter Notebook形式的OpenVINO范例程序大集合,方便開(kāi)發(fā)者快速學(xué)習(xí)并掌握OpenVINO推理程序,并通過(guò)Copy&Paste方式將范例
    的頭像 發(fā)表于 12-12 14:40 ?1119次閱讀
    如何快速下載<b class='flag-5'>OpenVINO</b> Notebooks<b class='flag-5'>中</b>的AI大<b class='flag-5'>模型</b>
    RM新时代网站-首页