在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

SDNLAB ? 來源:英特爾物聯(lián)網(wǎng) ? 2023-02-15 16:53 ? 次閱讀

01配置OpenVINO C++開發(fā)環(huán)境

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

02下載并轉(zhuǎn)換YOLOv5預(yù)訓(xùn)練模型

下載并轉(zhuǎn)換YOLOv5預(yù)訓(xùn)練模型的詳細(xì)步驟,請(qǐng)參考:《基于OpenVINO2022.2和蝰蛇峽谷優(yōu)化并部署YOLOv5模型》,本文所使用的OpenVINO是2022.3 LTS版。

完成上述步驟后,可以獲得YOLOv5的IR模型文件:yolov5s.xml 和 yolov5s.bin,如下圖所示:

3348155a-a3d7-11ed-bfe3-dac502259ad0.png

圖 1-1YOLOv5 IR模型文件

03使用OpenVINO Runtime C++ API編寫推理程序

一個(gè)端到端的AI推理程序,主要包含五個(gè)典型的處理流程:

1.采集圖像&圖像解碼

2.圖像數(shù)據(jù)預(yù)處理

3.AI推理計(jì)算

4.對(duì)推理結(jié)果進(jìn)行后處理

5.將處理后的結(jié)果集成到業(yè)務(wù)流程

33555184-a3d7-11ed-bfe3-dac502259ad0.png

圖 1-2端到端的AI推理程序處理流程

采集圖像&圖像解碼

OpenCV提供imread()函數(shù)將圖像文件載入內(nèi)存

Matcv::imread(constString&filename, intflags=IMREAD_COLOR)

若是從視頻流(例如,視頻文件、網(wǎng)絡(luò)攝像頭、3D攝像頭(Realsense)等)中,一幀一幀讀取圖像數(shù)據(jù)到內(nèi)存,則使用cv::VideoCapture類,對(duì)應(yīng)范例代碼請(qǐng)參考OpenCV官方范例代碼:

https://github.com/opencv/opencv/tree/4.x/samples/cpp。

33692114-a3d7-11ed-bfe3-dac502259ad0.png

圖 1-3從視頻流讀取圖像幀范例

YOLOv5的圖像預(yù)處理

圖像數(shù)據(jù)輸入YOLOv5模型前需要做預(yù)處理,其主要工作有:使用Letterbox算法對(duì)圖像進(jìn)行非變形放縮,然后完成轉(zhuǎn)換顏色通道、歸一化數(shù)據(jù)、更改數(shù)據(jù)布局和數(shù)值精度。

直接調(diào)用OpenCV的cv::resize()函數(shù)將原始圖像按照模型輸入要求的尺寸進(jìn)行放縮,雖然實(shí)現(xiàn)起來簡(jiǎn)單,但會(huì)導(dǎo)致圖像中的被檢測(cè)對(duì)象變形。Letterbox算法一種不會(huì)導(dǎo)致被檢測(cè)對(duì)象變形的縮放,主要步驟為:

1.計(jì)算寬高縮放比例,選擇較小那個(gè)縮放系數(shù)

2.計(jì)算縮放后的尺寸,原始圖片的長(zhǎng)寬都乘以較小的縮放系數(shù)

3.計(jì)算短邊需要填充的灰邊數(shù),將短邊的兩邊各自填充一半的灰行 參考YOLOv5的Letterbox算法實(shí)現(xiàn)方式,本文的Letterbox函數(shù)實(shí)現(xiàn)如下所示:

cv::Matletterbox(cv::Mat&img, std::vectornew_shape={640, 640}){

// Get current image shape [height, width]

// Refer to https://github.com/ultralytics/yolov5/blob/master/utils/augmentations.py#L111

intimg_h =img.rows;

intimg_w =img.cols;

// Compute scale ratio(new / old) and target resized shape

floatscale =std::min(new_shape[1] *1.0/img_h, new_shape[0] *1.0/img_w);

intresize_h =int(round(img_h *scale));

intresize_w =int(round(img_w *scale));

// Compute padding

intpad_h =new_shape[1] -resize_h;

intpad_w =new_shape[0] -resize_w;

// Resize and pad image while meeting stride-multiple constraints

cv::Mat resized_img;

cv::resize(img, resized_img, cv::Size(resize_w, resize_h));

// divide padding into 2 sides

floathalf_h =pad_h *1.0/2;

floathalf_w =pad_w *1.0/2;

// Compute padding boarder

inttop =int(round(half_h -0.1));

intbottom =int(round(half_h +0.1));

intleft =int(round(half_w -0.1));

intright =int(round(half_w +0.1));

// Add border

cv::copyMakeBorder(resized_img, resized_img, top, bottom, left, right, 0, cv::Scalar(114, 114, 114));

returnresized_img;

}

letterbox函數(shù)的運(yùn)行結(jié)果如下圖所示:

33810f5e-a3d7-11ed-bfe3-dac502259ad0.png

圖 1-4letterbox放縮圖片的效果

轉(zhuǎn)換顏色通道、歸一化數(shù)據(jù)、更改數(shù)據(jù)布局和數(shù)值精度的操作可以由OpenCV提供的 Mat cv::blobFromImage()函數(shù)實(shí)現(xiàn),或者由OpenVINO的預(yù)處理API實(shí)現(xiàn)。為了簡(jiǎn)潔范例代碼,本文選擇調(diào)用cv::blobFromImage()函數(shù)。

執(zhí)行AI推理計(jì)算

基于OpenVINO Runtime C++ API實(shí)現(xiàn)AI推理計(jì)算主要有兩種方式:一種是同步推理方式,一種是異步推理方式,本文主要介紹同步推理方式。

主要步驟有:

1.初始化Core類

2.編譯模型

3.創(chuàng)建推理請(qǐng)求infer_request

4.讀取圖像數(shù)據(jù)并做預(yù)處理

5.將預(yù)處理后的blob數(shù)據(jù)傳入模型輸入節(jié)點(diǎn)

6.調(diào)用infer()方法執(zhí)行推理計(jì)算

7.獲得推理結(jié)果

基于OpenVINO Runtime C++API的同步推理代碼如下所示:

// -------- Step 1. Initialize OpenVINO Runtime Core --------

ov::Core core;

// -------- Step 2. Compile the Model --------

autocompiled_model =core.compile_model(model_file, "CPU");//GPU.1 is dGPU A770

// -------- Step 3. Create an Inference Request --------

ov::InferRequest infer_request =compiled_model.create_infer_request();

// -------- Step 4. Read a picture file and do the preprocess --------

cv::Mat img =cv::imread(image_file);//Load a picture into memory

std::vectorpaddings(3); //scale, half_h, half_w

cv::Mat resized_img =letterbox(img, paddings);//resize to (640,640) by letterbox

// BGR->RGB, u8(0-255)->f32(0.0-1.0), HWC->NCHW

cv::Mat blob =cv::blobFromImage(resized_img, 1/255.0, cv::Size(640, 640), cv::Scalar(0, 0, 0), true);

// -------- Step 5. Feed the blob into the input node of YOLOv5 -------

// Get input port for model with one input

autoinput_port =compiled_model.input();

// Create tensor from external memory

ov::Tensorinput_tensor(input_port.get_element_type(), input_port.get_shape(), blob.ptr(0));

// Set input tensor for model with one input

infer_request.set_input_tensor(input_tensor);

// -------- Step 6. Start inference --------

infer_request.infer();

// -------- Step 7. Get the inference result --------

autooutput =infer_request.get_output_tensor(0);

autooutput_shape =output.get_shape();

std::cout <

推理結(jié)果進(jìn)行后處理

對(duì)于目標(biāo)檢測(cè)應(yīng)用,后處理主要是執(zhí)行NMS(非極大值抑制)算法去除多余的檢測(cè)框,然后剩余的檢測(cè)框中提取出檢測(cè)框坐標(biāo)(box)、置信度(confidence)和類別(class_id)。NMS算法本文直接使用了cv::NMSBoxes()。

經(jīng)過后處理,獲得了經(jīng)過NMS過濾后的檢測(cè)框坐標(biāo)(box)、置信度(confidence)和類別(class_id)后,就可以將這些信息顯示在圖像上了。

04總 結(jié)

配置OpenVINO C++開發(fā)環(huán)境后,可以直接編譯運(yùn)行yolov5_openvino_sync_dGPU.cpp,結(jié)果如下圖所示。

使用OpenVINO Runtime C++ API函數(shù)開發(fā)YOLOv5推理程序,簡(jiǎn)單方便,并可以任意部署在英特爾CPU、集成顯卡和獨(dú)立顯卡上。

345ebdc2-a3d7-11ed-bfe3-dac502259ad0.png

圖 1-5運(yùn)行結(jié)果







審核編輯:劉清

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

    關(guān)注

    0

    文章

    147

    瀏覽量

    7037
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    635

    瀏覽量

    41593
  • 圖像解碼
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    6995
  • API串口
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    4863

原文標(biāo)題:基于OpenVINO 在C++中部署YOLOv5模型

文章出處:【微信號(hào):SDNLAB,微信公眾號(hào):SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    手把手教你使用LabVIEW ONNX Runtime部署 TensorRT加速,實(shí)現(xiàn)YOLOv5實(shí)時(shí)物體識(shí)別

    今天我們就一起來看一下如何使用LabVIEW開放神經(jīng)網(wǎng)絡(luò)交互工具包實(shí)現(xiàn)TensorRT加速YOLOv5
    的頭像 發(fā)表于 03-20 16:36 ?2804次閱讀
    手把手教你使用LabVIEW ONNX Runtime<b class='flag-5'>部署</b> TensorRT加速,實(shí)現(xiàn)<b class='flag-5'>YOLOv5</b>實(shí)時(shí)物體識(shí)別

    Yolov5算法解讀

    yolov5于2020年由glenn-jocher首次提出,直至今日yolov5仍然不斷進(jìn)行升級(jí)迭代。 Yolov5YOLOv5s、
    的頭像 發(fā)表于 05-17 16:38 ?9670次閱讀
    <b class='flag-5'>Yolov5</b>算法解讀

    YOLOv5】LabVIEW+TensorRT的yolov5部署實(shí)戰(zhàn)(含源碼)

    今天主要和大家分享LabVIEW中使用純TensoRT工具包快速部署并實(shí)現(xiàn)yolov5的物體識(shí)別
    的頭像 發(fā)表于 08-21 22:20 ?1390次閱讀
    【<b class='flag-5'>YOLOv5</b>】LabVIEW+TensorRT的<b class='flag-5'>yolov5</b><b class='flag-5'>部署</b>實(shí)戰(zhàn)(含源碼)

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

    象的位置和邊界。本文將介紹如何使用 OpenVINO C++ API 部署 FastSAM 模型,以實(shí)現(xiàn)快速高效的語義分割。在前文中我們發(fā)表了《基于
    的頭像 發(fā)表于 11-17 09:53 ?998次閱讀
    如何使用<b class='flag-5'>OpenVINO</b> <b class='flag-5'>C++</b> API<b class='flag-5'>部署</b>FastSAM<b class='flag-5'>模型</b>

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

    YOLOv5兼具速度和精度,工程化做的特別好,Git clone到本地即可在自己的數(shù)據(jù)集上實(shí)現(xiàn)目標(biāo)檢測(cè)任務(wù)的訓(xùn)練和推理,產(chǎn)業(yè)界中應(yīng)用廣泛。開源社區(qū)對(duì)YOLOv5支持實(shí)例分割的呼聲高漲,YOL
    的頭像 發(fā)表于 12-21 10:17 ?2245次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>C++</b><b class='flag-5'>中使</b>用<b class='flag-5'>OpenVINO</b><b class='flag-5'>工具包</b><b class='flag-5'>部署</b><b class='flag-5'>YOLOv5</b>-Seg<b class='flag-5'>模型</b>

    龍哥手把手教你學(xué)視覺-深度學(xué)習(xí)YOLOV5

    利用labview部署yolov5導(dǎo)出的模型,能利用攝像頭動(dòng)態(tài)檢測(cè)輸出目標(biāo)檢測(cè)結(jié)果。根據(jù)工業(yè)視覺外觀檢測(cè)的速度和準(zhǔn)確性要求,龍哥視覺結(jié)合labview編程平臺(tái)推出了labview+yolov5
    發(fā)表于 09-03 09:39

    怎樣使用PyTorch Hub去加載YOLOv5模型

    Python>=3.7.0環(huán)境中安裝requirements.txt,包括PyTorch>=1.7。模型和數(shù)據(jù)集從最新的 YOLOv5版本自動(dòng)下載。簡(jiǎn)單示例此示例從
    發(fā)表于 07-22 16:02

    如何在OpenVINO工具包中使用帶推理引擎的blob?

    無法確定如何在OpenVINO?工具包中使用帶推理引擎的 blob。
    發(fā)表于 08-15 07:17

    英特爾獨(dú)立顯卡上部署YOLOv5 v7.0版實(shí)時(shí)實(shí)例分割模型

    本文將介紹基于 OpenVINO 英特爾獨(dú)立顯卡上部署 YOLOv5 實(shí)時(shí)實(shí)例分割模型的全流
    的頭像 發(fā)表于 12-20 11:32 ?4253次閱讀

    使用旭日X3派的BPU部署Yolov5

    本次主要介紹旭日x3的BPU中部署yolov5。首先在ubuntu20.04安裝yolov5,并運(yùn)行yolov5并使用pytoch的pt
    的頭像 發(fā)表于 04-26 14:20 ?978次閱讀
    使用旭日X3派的BPU<b class='flag-5'>部署</b><b class='flag-5'>Yolov5</b>

    OpenVINO? C++ API編寫YOLOv8-Seg實(shí)例分割模型推理程序

    本文章將介紹使用 OpenVINO 2023.0 C++ API 開發(fā)YOLOv8-Seg 實(shí)例分割(Instance Segmentation)模型的 AI 推理程序。本文
    的頭像 發(fā)表于 06-25 16:09 ?1714次閱讀
    用<b class='flag-5'>OpenVINO</b>? <b class='flag-5'>C++</b> API編寫<b class='flag-5'>YOLOv</b>8-Seg實(shí)例分割<b class='flag-5'>模型</b>推理程序

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

    深度學(xué)習(xí)模型部署OpenVINO、ONNXRUNTIME、TensorRT三個(gè)主流框架,均支持Python與C++的SDK使用。對(duì)YOLOv5
    的頭像 發(fā)表于 08-06 11:39 ?2825次閱讀

    NNCF壓縮與量化YOLOv8模型OpenVINO部署測(cè)試

    OpenVINO2023版本衍生出了一個(gè)新支持工具包NNCF(Neural Network Compression Framework – 神經(jīng)網(wǎng)絡(luò)壓縮框架),通過對(duì)OpenVINO IR格式
    的頭像 發(fā)表于 11-20 10:46 ?1669次閱讀
    NNCF壓縮與量化<b class='flag-5'>YOLOv</b>8<b class='flag-5'>模型</b>與<b class='flag-5'>OpenVINO</b><b class='flag-5'>部署</b>測(cè)試

    基于QT5+OpenCV+OpenVINO C++的應(yīng)用打包過程

    我用QT C++寫了一個(gè)YOLOv5模型推理演示應(yīng)用。
    的頭像 發(fā)表于 01-26 10:17 ?1471次閱讀
    基于QT<b class='flag-5'>5+OpenCV+OpenVINO</b> <b class='flag-5'>C++</b>的應(yīng)用打包過程

    樹莓派上部署YOLOv5進(jìn)行動(dòng)物目標(biāo)檢測(cè)的完整流程

    卓越的性能。本文將詳細(xì)介紹如何在性能更強(qiáng)的計(jì)算機(jī)上訓(xùn)練YOLOv5模型,并將訓(xùn)練好的模型部署到樹莓派4B上,通過樹莓派的攝像頭進(jìn)行實(shí)時(shí)動(dòng)物目標(biāo)檢測(cè)。 一、
    的頭像 發(fā)表于 11-11 10:38 ?1536次閱讀
    <b class='flag-5'>在</b>樹莓派上<b class='flag-5'>部署</b><b class='flag-5'>YOLOv5</b>進(jìn)行動(dòng)物目標(biāo)檢測(cè)的完整流程
    主站蜘蛛池模板: 性欧美高清精品videos | 亚洲日本三级 | 成 人 免费 网站 | 好吊妞视频988在线播放 | 69国产成人精品午夜福中文 | 国产精品自线在线播放 | www.亚洲.com | 午夜精品福利在线 | 国产三级久久久精品三级 | 天天天天操| 中文字幕一区二区三区永久 | 激情春色网 | 久久久一本 | 爱射综合 | 九九热免费在线观看 | 国产精品一一在线观看 | 综合久久2o19 | 伊人久久大 | 亚洲性久久久影院 | 特一级黄色片 | 国产美女精品三级在线观看 | 777黄色片 | 性无码专区无码 | 亚洲成人综合网站 | 日本三级免费网站 | 欧美地区一二三区 | 国产大乳美女挤奶视频 | 午夜久久久久久 | 综合色吧 | 亚洲美女视频一区 | 8天堂资源在线 | 成人a毛片免费全部播放 | 中文天堂网 | 久久综合九色欧美综合狠狠 | 午夜日韩| 国产精品臀控福利在线观看 | 啪啪午夜| 欧美一二 | 久热网| 色综合久久综合 | 色在线观看视频 |