<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在LabVIEW中調用OpenVINO? 模型

英特爾物聯網 ? 來源:英特爾物聯網 ? 作者:英特爾物聯網 ? 2022-03-21 10:05 ? 次閱讀

1.1

什么是LabVIEW?

LabVIEW測試測量與自動化行業常用,圖形化開發環境,其優點有:

1

圖形化開發環境,學習容易入門快

2

自帶機器視覺函數庫,并提供OpenCV接口庫,開發機器視覺與自動化應用程序速度快

使用LabVIEW調用OpenVINO IR模型,可以快速完成深度學習項目開發與交付。

LabVIEW詳細介紹參考:

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

1.2

準備開發環境

要完成在LabVIEW中調用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請從下列網址下載安裝文件,通過NI Package Manager完成安裝。

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

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

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

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

“以管理員身份運行”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文件夾中打開任意一個范例程序,若成功運行,證明安裝成功,如圖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

準備OpenVINO IR模型

請參考本文的姊妹篇《PPYOLOv2模型從訓練到OpenVINO部署-上篇》完成PPYOLOv2模型的部署,《PPYOLOv2模型從訓練到OpenVINO部署-下篇》完成將PPYOLOv2飛槳模型轉換為OpenVINO IR模型。

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

1.4

編寫OpenVINOAPI的LabVIEWWrapper

1.4.1

定義存儲InferenceEngine的結構體

定義存儲Inference Engine的結構體如代碼清單1-1所示,方便創建和刪除。

代碼清單1-1 Inference Engine結構體

//定義結構體,存儲與InferenceEngine相關的變量

typedefstructlv_infer_engine{

Coreie;//ie對象

ExecutableNetworkexec_net;

InferRequestinfer_request;

}InferEngineStruct;

1.4.2

創建ppyolov2_init函數

創建ppyolov2_init函數,主要是創建指向InferEngine的指針,并反回給LabVIEW。

代碼清單1-2 ppyolov2_init函數

//創建指向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

創建ppyolov2_predict函數

創建ppyolov2_predict函數,用于執行ppyolov2模型預測功能。

代碼清單1-3 ppyolov2函數

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對象中淺拷貝圖像數據到

Mat對象

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);

//圖像數據歸一化,減均值mean,除以方差std

//PaddleDetection模型使用imagenet數據集的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

創建ppyolov2_delete函數

創建ppyolov2_delete函數,用于釋放ppyolov2_init創建的內存。

代碼清單1-4 ppyolov2_delete函數

EXTERN_CvoidNI_EXPORTppyolov2_delete(void*pInferEngine,NIErrorHandleerrorHandle){

NIERRORerror=NI_ERR_SUCCESS;

ReturnOnPreviousError(errorHandle);

InferEngineStruct*p=(InferEngineStruct*)pInferEngine;

deletep;

}

1.4.5

LabVIEW 中調用三個函數

在Visual Studio中將三個函數編譯為dll,并在LabVIEW中調用,參考范例lv_opencv_demo.vi,運行結果如下所示。

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

圖1-4 LabVIEW中調用三個API函數

以上代碼可以從代碼倉中下載:

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

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • LabVIEW
    +關注

    關注

    1930

    文章

    3620

    瀏覽量

    318328
  • 自動化
    +關注

    關注

    28

    文章

    5204

    瀏覽量

    78061
  • 模型
    +關注

    關注

    1

    文章

    2797

    瀏覽量

    47975

原文標題:在LabVIEW中調用OpenVINO? 模型 | 開發者實戰

文章出處:【微信號:英特爾物聯網,微信公眾號:英特爾物聯網】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    LabVIEW+OpenVINO在CPU上部署新冠肺炎檢測模型實戰(含源碼)

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

    LabVIEW調用C#編寫的.NET類庫

    本文主要是LabVIEW無法調用回調函數dll的問題的解決方法,也介紹了LabVIEW調用C#庫的方法。
    的頭像 發表于 09-06 17:43 ?4397次閱讀
    <b class='flag-5'>LabVIEW</b><b class='flag-5'>調用</b>C#編寫的.NET類庫

    LabVIEw調用多個simulink模型

    哥哥姐姐們,求助啊,小弟最近才開始看LabVIEW,老師讓做個一個LabVIEW的面板,通過下拉菜單來選擇加入不同的simulink模型
    發表于 07-20 10:37

    LabVIEW調用simulink模型

    各位親,小弟simulink做了一個模型 想通過使用SIT工具包在LabVIEW里面調用,但是遇到了些許小問題,一直搞不懂 向各位請教一
    發表于 09-17 13:09

    labview調用Halcon實例

    `本人寫了一個小程序,labview調用halcon實現掃碼功能,還存在一些問題,調用的halcon程序如果在循環中,則無法通過
    發表于 09-13 19:39

    labview調用yolo 目標檢測速度太慢?yolov4:速度和精度的完美結合,性能和精度碾壓yolov3

    labview需要增加延時,才能看清overlay的結果。該內容即將加入到《龍哥手把手教你學視覺-深度學習簡明教程》,屆時該課程將包含:labview訓練調用tensorflow版深
    發表于 01-05 09:22

    labview調用深度學習tensorflow模型非常簡單,附上源碼和模型

    本帖最后由 wcl86 于 2021-9-9 10:39 編輯 `labview調用深度學習tensorflow模型非常簡單,效果如下,附上源碼和訓練過的模型:[hide][/h
    發表于 06-03 16:38

    如何將PyTorch模型OpenVINO trade結合使用?

    無法確定如何轉換 PyTorch 掩碼 R-CNN 模型以配合OpenVINO?使用。
    發表于 08-15 07:04

    無法使用MYRIADOpenVINO trade運行YOLOv7自定義模型怎么解決?

    無法確定如何將 YOLOv7 模型的重量(.pt 文件)轉換為OpenVINO?中間表示 (IR) 并推斷有 MYRIAD 的 IR。 分辨率 轉換使用此 GitHub* 存儲庫
    發表于 08-15 08:29

    Labview之上調用子VI

    Labview之上調用子VI,很好的Labview資料,快來下載學習吧。
    發表于 04-19 09:54 ?0次下載

    使用OpenVINO? 部署PaddleSeg模型庫中的DeepLabV3+模型

    ? ? ? 01 概述 ? ? 本文是OpenVINO 工具套件與百度飛槳PaddlePaddle模型轉換/部署系列的第二部。這篇文章專注于展示如何將百度飛槳PaddelSeg項目
    的頭像 發表于 11-22 14:58 ?9187次閱讀
    使用<b class='flag-5'>OpenVINO</b>? 部署PaddleSeg<b class='flag-5'>模型</b>庫中的DeepLabV3+<b class='flag-5'>模型</b>

    基于Labview調用windows程序源碼分享

    基于Labview調用windows程序源碼分享
    發表于 12-02 11:08 ?93次下載

    LABVIEW調用C# DLL的實例分享

    LABVIEW調用C# DLL的實例分享
    發表于 01-04 11:20 ?96次下載

    如何將Pytorch自訓練模型變成OpenVINO IR模型形式

    本文章將依次介紹如何將Pytorch自訓練模型經過一系列變換變成OpenVINO IR模型形式,而后使用OpenVINO Python API 對IR
    的頭像 發表于 06-07 09:31 ?1325次閱讀
    如何將Pytorch自訓練<b class='flag-5'>模型</b>變成<b class='flag-5'>OpenVINO</b> IR<b class='flag-5'>模型</b>形式

    沒有“中間商賺差價”, OpenVINO? 直接支持 PyTorch 模型對象

    隨著 OpenVINO 2023.0 版本的發布,OpenVINO 工具庫中預置了全新的 PyTorch 前端,為開發者們提供了一條全新的 PyTorch 模型支持路徑,帶來更友好的用戶
    的頭像 發表于 06-27 16:39 ?525次閱讀
    沒有“中間商賺差價”, <b class='flag-5'>OpenVINO</b>? 直接支持 PyTorch <b class='flag-5'>模型</b>對象
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>