在线观看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)不再提示

同步模式下OpenVINO2023 SDK的推理方式

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 2023-11-21 10:03 ? 次閱讀

同步模式推理流程

OpenVINO2023版本的SDK支持同步與異步推理模式相比之前OpenVINO2021版本更加的簡(jiǎn)潔,易用。同時(shí)支持創(chuàng)建多個(gè)Requst然后基于多個(gè)Requst實(shí)現(xiàn)流水線方式的推理從而提升CPU推理的吞吐率。同步模式下OpenVINO2023 SDK的推理方式如下:

5c5a9dfe-880c-11ee-939d-92fbcf53809c.png

推理的流程如下:

while(true) {
  // capture frame
  // populate CURRENT InferRequest
  // Infer CURRENT InferRequest
  //this call is synchronous
  // display CURRENT result
}
以YOLOv5s的模型為例,在OpenVINO C++上同步推理的代碼實(shí)現(xiàn)如下:
// 創(chuàng)建IE插件, 查詢支持硬件設(shè)備
ov::Core core;
std::string model_onnx = "D:/python/yolov5-7.0/yolov5s.onnx";
auto model = core.read_model(model_onnx);
ov::CompiledModel cmodel = core.compile_model(model, "CPU");




// create infer request
auto request = cmodel.create_infer_request();
cv::Mat frame;
while (true) {
  bool ret = cap.read(frame);
  if (frame.empty()) {
    break;
  }
  image_detect(frame, request);
  char c = cv::waitKey(1);
  if (c == 27) { // ESC
    break;
  }
}
其中image_detect方法包含模型的圖像前處理、同步推理、后處理。其中同步推理:
// 前處理
// 開啟同步
request.infer();
// 后處理
運(yùn)行結(jié)果如下:

異步模式推理流程

當(dāng)使用OpenVINO2023提供的Request對(duì)象的回調(diào)功能以后,我們可以把模型的后處理直接放到回調(diào)中去,這樣異步推理方式就變成只有圖像前處理+模型推兩個(gè)步驟了,然后通過創(chuàng)建兩個(gè)Request基于流水線方式,實(shí)現(xiàn)異步流水線模式推理方式,這個(gè)時(shí)候推理流程如下:

5c7663c2-880c-11ee-939d-92fbcf53809c.png

推理的流程如下:

while(true) {
  // capture frame
  // populate NEXT InferRequest
  // start NEXT InferRequest
  // this call is async and returns immediately
  // wait for the CURRENT InferRequest
  // display CURRENT result
  // swap CURRENT and NEXT InferRequests
}
首先需要?jiǎng)?chuàng)建兩個(gè)Request,然后分別設(shè)置它們的Callback部分代碼,主要是在Callback中完成后處理操作。這部分的代碼如下:
 1//創(chuàng)建IE插件,查詢支持硬件設(shè)備
 2ov::Corecore;
 3std::stringmodel_onnx="D:/python/yolov5-7.0/yolov5s.onnx";
 4automodel=core.read_model(model_onnx);
 5ov::CompiledModelcmodel=core.compile_model(model,"AUTO");
 6
 7//createinferrequest
 8autorequest=cmodel.create_infer_request();
 9autonext_request=cmodel.create_infer_request();
10std::exception_ptrexception_var;
11request.set_callback([&](std::exception_ptrex){
12if(ex){
13exception_var=ex;
14return;
15}
16det_boxes.clear();
17det_ids.clear();
18ov::Tensoroutput=request.get_output_tensor();
19constfloat*prob=(float*)output.data();
20constov::ShapeoutputDims=output.get_shape();
21size_tnumRows=outputDims[1];
22size_tnumCols=outputDims[2];
23
24//后處理,1x25200x85
25std::vectorboxes;
26std::vectorclassIds;
27std::vectorconfidences;
28cv::Matdet_output(numRows,numCols,CV_32F,(float*)prob);
29for(inti=0;i(i,4);
31if(confidence0.25)
41{
42floatcx=det_output.at(i,0);
43floatcy=det_output.at(i,1);
44floatow=det_output.at(i,2);
45floatoh=det_output.at(i,3);
46intx=static_cast((cx-0.5*ow)*x_factor);
47inty=static_cast((cy-0.5*oh)*y_factor);
48intwidth=static_cast(ow*x_factor);
49intheight=static_cast(oh*y_factor);
50cv::Rectbox;
51box.x=x;
52box.y=y;
53box.width=width;
54box.height=height;
55
56boxes.push_back(box);
57classIds.push_back(classIdPoint.x);
58confidences.push_back(score);
59}
60}
61
62//NMS
63std::vectorindexes;
64cv::NMSBoxes(boxes,confidences,0.25,0.45,indexes);
65for(size_ti=0;i
 依據(jù)上述的推理流程,最終調(diào)用執(zhí)行的代碼如下:
 1cv::Matframe,next_frame;
 2//dofirstframe
 3cap.read(frame);
 4async_image_detect(frame,request);
 5std::millisecondstout{50};
 6intcnt=0;
 7while(true){
 8boolret=cap.read(next_frame);
 9if(next_frame.empty()){
10break;
11}
12
13int64start=cv::getTickCount();
14//繼續(xù)異步
15if(cnt%2==0){
16async_image_detect(next_frame,next_request);
17request.wait_for(tout);
18}
19if(cnt%2==1){
20async_image_detect(next_frame,request);
21next_request.wait_for(tout);
22}
23for(size_tt=0;t(cv::getTickFrequency());
31putText(frame,cv::format("FPS:%.2f",1.0/t),cv::Point(20,40),cv::FONT_HERSHEY_PLAIN,2.0,cv::Scalar(255,0,0),2,8);
32cv::imshow("OpenVINO2023-YOLOv57.0異步推理",frame);
33charc=cv::waitKey(1);
34if(c==27){//ESC
35break;
36}
37next_frame.copyTo(frame);
38cnt++;
39}
40cv::waitKey(0);
41cv::destroyAllWindows();
42return0;
其中async_image_detect方法中實(shí)現(xiàn)了YOLOv5模型推理的圖像前處理與啟動(dòng)異步推理模式
preprocess(frame)
// 開啟異步
request.start_async();

審核編輯:湯梓紅

聲明:本文內(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)投訴
  • 流水線
    +關(guān)注

    關(guān)注

    0

    文章

    120

    瀏覽量

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

    關(guān)注

    22

    文章

    2108

    瀏覽量

    73651
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68616
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1036

    瀏覽量

    45951
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    203

原文標(biāo)題:OpenVINO2023異步回調(diào)流水線提升推理吞吐率

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    OpenVINO2022版本Python API演示

    OpenVINO2022 版本的SDK在使用比之前版本簡(jiǎn)單,而且功能比較豐富,特別是支持動(dòng)態(tài)輸入設(shè)置,一次可以推理多張圖像;
    的頭像 發(fā)表于 07-22 09:18 ?2279次閱讀
    <b class='flag-5'>OpenVINO</b>2022版本Python API演示

    無法在AMD Ryzen CPU上運(yùn)行OpenVINO trade怎么解決?

    在 AMD Ryzen CPU 上運(yùn)行OpenVINO?推理。 收到錯(cuò)誤消息: libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name (null)
    發(fā)表于 08-15 06:46

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

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

    使用OpenVINO運(yùn)行C++ API創(chuàng)建輸入tensor并執(zhí)行推理遇到的問題求解

    使用 OpenVINO? 運(yùn)行時(shí) C++ API 創(chuàng)建輸入 tensor 并執(zhí)行推理: ov::Tensor input_tensor = ov::Tensor(input_type
    發(fā)表于 08-15 08:22

    在Raspberry Pi上從源代碼構(gòu)建OpenVINO 2021.3收到錯(cuò)誤怎么解決?

    在 Raspberry Pi 上從源代碼構(gòu)建 OpenVINO?2021.3。 運(yùn)行OpenVINO?推理,并收到錯(cuò)誤消息: ModuleNotFoundError:沒有
    發(fā)表于 08-15 08:24

    無法在OpenVINO trade Docker中運(yùn)行OpenCV怎么解決?

    運(yùn)行命令:docker run -ditu root:root --name=openvino -h \"openvino\" --privileged \\ --device
    發(fā)表于 08-15 08:29

    如何在OpenVINO trade工具包中推斷兩個(gè)圖像?

    無法在OpenVINO?工具包中對(duì)兩個(gè)輸入圖像運(yùn)行推理。
    發(fā)表于 08-15 08:24

    OpenVINO2022系統(tǒng)應(yīng)用指南

    推理層面支持同步與異步方式,異步方式支持通過回調(diào)實(shí)現(xiàn)后處理,實(shí)現(xiàn)視頻流水線支持,下面是一系列的基于異步+流水線方式
    的頭像 發(fā)表于 04-12 14:23 ?757次閱讀

    在英特爾開發(fā)者套件上用OpenVINO? 2023.0加速YOLOv8-Pose姿態(tài)估計(jì)模型

    benchmark_app 是 OpenVINO 工具套件自帶的 AI 模型推理計(jì)算性能測(cè)試工具,可以指定在不同的計(jì)算設(shè)備上,在同步或異步模式
    的頭像 發(fā)表于 06-15 17:41 ?1028次閱讀
    在英特爾開發(fā)者套件上用<b class='flag-5'>OpenVINO</b>? 2023.0加速YOLOv8-Pose姿態(tài)估計(jì)模型

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

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

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

    深度學(xué)習(xí)模型部署有OpenVINO、ONNXRUNTIME、TensorRT三個(gè)主流框架,均支持Python與C++的SDK使用。對(duì)YOLOv5~YOLOv8的系列模型,均可以通過C++推理實(shí)現(xiàn)模型
    的頭像 發(fā)表于 08-06 11:39 ?2749次閱讀

    OpenVINO場(chǎng)景文字檢測(cè)與文字識(shí)別教程

    OpenVINO是英特爾推出的深度學(xué)習(xí)模型部署框架,當(dāng)前最新版本是OpenVINO2023版本。OpenVINO2023自帶各種常見視覺任務(wù)支持的預(yù)訓(xùn)練模型庫(kù)Model Zoo,其中支持場(chǎng)景文字檢測(cè)
    的頭像 發(fā)表于 09-24 15:31 ?1604次閱讀
    <b class='flag-5'>OpenVINO</b>場(chǎng)景文字檢測(cè)與文字識(shí)別教程

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

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

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

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

    OpenVINO2024 C++推理使用技巧

    很多人都使用OpenVINO新版的C++ 或者Python的SDK,都覺得非常好用,OpenVINO2022之后的版本C++ SDK做了大量的優(yōu)化與整理,已經(jīng)是非常貼近開發(fā)的使用習(xí)慣與
    的頭像 發(fā)表于 07-26 09:20 ?911次閱讀
    主站蜘蛛池模板: 久久黄视频| 国产女人水多白浆| 婷婷视频网| 色女仆影院| 国产小视频在线免费观看| 欧美激情第一欧美在线| 视频一区二区免费| 一级做a爰片久久免费| 色爱综合区五月小说| 中文字幕第一| 伊人网色| 国产在线视频你懂得| 新版天堂资源中文8在线| 人人艹人人干| 色涩在线| 四虎永久在线精品| 六月婷婷视频| 9久久9久久精品| 欧美夜夜| 亚洲欧洲一区二区三区在线观看| 在线播放色| 农村三级毛片| 夜夜爽夜夜爱| 2023天天操| 中国成人免费视频| 日本三级网站在线观看| 国产色妞妞在线视频免费播放| 天天干天天综合| 一区二区三区高清在线| 妇女交性大片| 日韩一级片免费看| 福利你懂的| 激情五月网站| 国产99在线播放免费| 国产一区美女| 91精品久久久久含羞草| 一级毛片免费在线观看网站| 免费网站色| 天天草综合网| 亚洲1卡二卡3卡四卡不卡| 色综合久久网|