在线观看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-Seg模型

新機(jī)器視覺 ? 來源:小白學(xué)視覺 ? 2023-12-21 10:17 ? 次閱讀

來源:小白學(xué)視覺

YOLOv5兼具速度和精度,工程化做的特別好,Git clone到本地即可在自己的數(shù)據(jù)集上實(shí)現(xiàn)目標(biāo)檢測(cè)任務(wù)的訓(xùn)練和推理,在產(chǎn)業(yè)界中應(yīng)用廣泛。開源社區(qū)對(duì)YOLOv5支持實(shí)例分割的呼聲高漲,YOLOv5在v7.0中正式官宣支持實(shí)例分割。

本文主要介紹在C++中使用OpenVINO工具包部署YOLOv5-Seg模型,主要步驟有:

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

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

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

下面,本文將依次詳述

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

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

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

下載并轉(zhuǎn)換YOLOv5-seg預(yù)訓(xùn)練模型的詳細(xì)步驟,請(qǐng)參考:https://mp.weixin.qq.com/s/K3wP5YLAU4p5jsdiMYjuMg,本文所使用的OpenVINO是2022.3 LTS版。

首先,運(yùn)行命令獲得 yolov5s-seg ONNX 格式模型:yolov5s-seg.onnx:


python export.py --weights yolov5s-seg.pt --include onnx

然后運(yùn)行命令獲得yolov5s-seg IR格式模型:yolov5s-seg.xml和yolov5s-seg.bin,如下圖所示


mo -m yolov5s-seg.onnx --compress_to_fp16

242196be-9f94-11ee-8b88-92fbcf53809c.png

圖 1-1 yolov5-seg ONNX格式和IR格式模型

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

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

采集圖像&圖像解碼

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

AI推理計(jì)算

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

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

24363650-9f94-11ee-8b88-92fbcf53809c.png

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

1.3.1 采集圖像&圖像解碼

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


Mat cv::imread (const String &filename, int flags=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。

243a3584-9f94-11ee-8b88-92fbcf53809c.png

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

1.3.2 YOLOv5-Seg模型的圖像預(yù)處理

YOLOv5-Seg模型構(gòu)架是在YOLOv5模型構(gòu)架基礎(chǔ)上,增加了一個(gè)叫“Proto”的小型卷積神經(jīng)網(wǎng)絡(luò),用于輸出檢測(cè)對(duì)象掩碼(Mask),如下圖所示:

2455333e-9f94-11ee-8b88-92fbcf53809c.png

圖 1-4 YOLOv5-Seg模型輸出的代碼定義

詳細(xì)參看:https://github.com/ultralytics/yolov5/blob/master/models/yolo.py#L92

由此可知,YOLOv5-Seg模型對(duì)數(shù)據(jù)預(yù)處理的要求跟YOLOv5模型一模一樣,YOLOv5-Seg模型的預(yù)處理代碼可以復(fù)用YOLOv5模型的C++預(yù)處理代碼。

另外,從代碼可以看出YOLOv5-Seg模型的輸出有兩個(gè)張量,一個(gè)張量輸出檢測(cè)結(jié)果,一個(gè)張量輸出proto,其形狀可以用Netron打開yolov5-seg.onnx查知,如下圖所示。

2459b864-9f94-11ee-8b88-92fbcf53809c.png

圖 1-5 YOLOv5-Seg模型的輸入和輸出

“output0”是檢測(cè)輸出,第一個(gè)維度表示batch size,第二個(gè)維度表示25200條輸出,第三個(gè)維度表示有117個(gè)字段,其中前85個(gè)字段(0~84)表示:cx、cy、w、h、confidence和80個(gè)類別分?jǐn)?shù),后32個(gè)字段與”output1”做矩陣乘法,可以獲得尺寸為160x160的檢測(cè)目標(biāo)的掩碼(mask)。

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

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

主要步驟有:

初始化Core類:ov::Core core;

編譯模型:core.compile_model()

創(chuàng)建推理請(qǐng)求infer_request:compiled_model.create_infer_request()

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

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

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

獲得推理結(jié)果:infer_request.get_output_tensor()

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


 // -------- Step 1. Initialize OpenVINO Runtime Core --------
    ov::Core core;
    // -------- Step 2. Compile the Model --------
    auto compiled_model = core.compile_model(model_file, "GPU.1"); //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::vector paddings(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
    auto input_port = compiled_model.input();
    // Create tensor from external memory
    ov::Tensor input_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 --------
    auto detect = infer_request.get_output_tensor(0);
    auto detect_shape = detect.get_shape();
    std::cout << "The shape of Detection tensor:"<< detect_shape << std::endl;
    auto proto = infer_request.get_output_tensor(1);
    auto proto_shape = proto.get_shape();
std::cout << "The shape of Proto tensor:" << proto_shape << std::endl;

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

后處理工作主要是從”detect ”輸出張量中拆解出檢測(cè)框的位置和類別信息,并用cv::NMSBoxes()過濾掉多于的檢測(cè)框;從”detect ”輸出張量的后32個(gè)字段與”proto”輸出張量做矩陣乘法,獲得每個(gè)檢測(cè)目標(biāo)的形狀為160x160的掩碼輸出,最后將160x160的掩碼映射回原始圖像完成所有后處理工作。

1.4 總結(jié)

配置OpenVINO C++開發(fā)環(huán)境后,可以直接編譯運(yùn)行yolov5seg_openvino_dGPU.cpp,結(jié)果如下圖所示。使用OpenVINO Runtime C++ API函數(shù)開發(fā)YOLOv5推理程序,簡(jiǎn)單方便,并可以任意部署在英特爾CPU、集成顯卡和獨(dú)立顯卡上。

審核編輯:湯梓紅
聲明:本文內(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)投訴
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3608

    瀏覽量

    90976
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3618

    瀏覽量

    43503
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2117

    瀏覽量

    74796
  • 開發(fā)環(huán)境
    +關(guān)注

    關(guān)注

    1

    文章

    238

    瀏覽量

    17035
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    417

原文標(biāo)題:1.4 總結(jié)

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

    今天主要和大家分享LabVIEW中使用純TensoRT工具包快速部署并實(shí)現(xiàn)yolov5的物體識(shí)別
    的頭像 發(fā)表于 08-21 22:20 ?1645次閱讀
    【<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 ?1286次閱讀
    如何使用<b class='flag-5'>OpenVINO</b> <b class='flag-5'>C++</b> API<b class='flag-5'>部署</b>FastSAM<b class='flag-5'>模型</b>

    OpenVINO?工具套件插件對(duì)YOLOv5s模型和scatterUpate層的支持范圍是什么?

    OpenVINO?工具套件插件對(duì)YOLOv5s模型和scatterUpate層的支持范圍是什么?
    發(fā)表于 03-05 10:16

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

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

    使用 OpenVINO? 工具包進(jìn)行停車場(chǎng)監(jiān)控

    使用 OpenVINO? 工具包進(jìn)行停車場(chǎng)監(jiān)控
    的頭像 發(fā)表于 01-03 09:45 ?940次閱讀
    使用 <b class='flag-5'>OpenVINO</b>? <b class='flag-5'>工具包</b>進(jìn)行停車場(chǎng)監(jiān)控

    使用 OpenVINO? 工具包監(jiān)控機(jī)器操作員

    使用 OpenVINO? 工具包監(jiān)控機(jī)器操作員
    的頭像 發(fā)表于 01-03 09:45 ?922次閱讀
    使用 <b class='flag-5'>OpenVINO</b>? <b class='flag-5'>工具包</b>監(jiān)控機(jī)器操作員

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

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

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

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

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

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

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

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

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

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

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

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

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

    應(yīng)用中,我們?yōu)榱伺c當(dāng)前軟件平臺(tái)集成更多會(huì)采用 C++ 平臺(tái),因此本文中,我們將基于 OpenVINO C++ API 向大家展示了不包含后處理的 RT-DETR
    的頭像 發(fā)表于 11-03 14:30 ?1450次閱讀
    基于<b class='flag-5'>OpenVINO</b> <b class='flag-5'>C++</b> API<b class='flag-5'>部署</b>RT-DETR<b class='flag-5'>模型</b>

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

    OpenVINO2023版本衍生出了一個(gè)新支持工具包NNCF(Neural Network Compression Framework – 神經(jīng)網(wǎng)絡(luò)壓縮框架),通過對(duì)OpenVINO IR格式
    的頭像 發(fā)表于 11-20 10:46 ?1922次閱讀
    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è)試

    OpenVINO C# APIintel平臺(tái)部署YOLOv10目標(biāo)檢測(cè)模型

    模型設(shè)計(jì)策略,從效率和精度兩個(gè)角度對(duì)YOLOs的各個(gè)組成部分進(jìn)行了全面優(yōu)化,大大降低了計(jì)算開銷,增強(qiáng)了性能。本文中,我們將結(jié)合OpenVINO C# API使用最新發(fā)布的
    的頭像 發(fā)表于 06-21 09:23 ?1814次閱讀
    用<b class='flag-5'>OpenVINO</b> <b class='flag-5'>C</b># API<b class='flag-5'>在</b>intel平臺(tái)<b class='flag-5'>部署</b><b class='flag-5'>YOLOv</b>10目標(biāo)檢測(cè)<b class='flag-5'>模型</b>
    主站蜘蛛池模板: 日韩成人毛片高清视频免费看 | 日本在线观看成人小视频 | 国产精品李雅在线观看 | 可以免费观看的黄色网址 | 都市激情亚洲 | 在线capcom超级碰碰 | 一级特黄aaa大片免费看 | 爱爱小说视频永久免费网站 | 可以免费观看的黄色网址 | 国产精品久久久久久免费播放 | 久久久久国产免费 | 日日操天天操夜夜操 | 免费黄色一级片 | 亚洲视频在线播放 | 夜夜夜操 | 日日夜夜狠狠 | 亚洲视频1| 看黄色一级毛片 | 亚洲欧美成人综合久久久 | 91大神在线精品视频一区 | 国产三级视频在线播放 | 激情综合网五月婷婷 | 天天综合天天 | 亚洲插| 国产99热 | 男女性gif抽搐出入 男女性高爱潮免费的国产 男女性高爱麻豆 | 久久精品系列 | 亚洲综合激情九月婷婷 | 日韩爱爱| 亚洲合集综合久久性色 | vip影院在线观看 | 夜夜夜爽bbbb性视频 | 精品少妇一区二区三区视频 | 天天操夜夜操美女 | 久久精品五月天 | 激情网五月 | 特别毛片 | 中文字幕在线色 | 日韩一区二区视频在线观看 | 性欧美精品久久久久久久 | 黄网站色视频免费看无下截 |