女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

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

同步模式推理流程

OpenVINO2023版本的SDK支持同步與異步推理模式相比之前OpenVINO2021版本更加的簡潔,易用。同時支持創(chuàng)建多個Requst然后基于多個Requst實現(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++上同步推理的代碼實現(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對象的回調(diào)功能以后,我們可以把模型的后處理直接放到回調(diào)中去,這樣異步推理方式就變成只有圖像前處理+模型推兩個步驟了,然后通過創(chuàng)建兩個Request基于流水線方式,實現(xiàn)異步流水線模式推理方式,這個時候推理流程如下:

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
}
首先需要創(chuàng)建兩個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方法中實現(xiàn)了YOLOv5模型推理的圖像前處理與啟動異步推理模式
preprocess(frame)
// 開啟異步
request.start_async();

審核編輯:湯梓紅

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

    關(guān)注

    0

    文章

    124

    瀏覽量

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

    關(guān)注

    22

    文章

    2117

    瀏覽量

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

    關(guān)注

    30

    文章

    4886

    瀏覽量

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

    關(guān)注

    3

    文章

    1065

    瀏覽量

    47676
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    414

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

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

收藏 人收藏

    評論

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

    OpenVINO2022版本Python API演示

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

    將英特爾?獨(dú)立顯卡與OpenVINO?工具套件結(jié)合使用時,無法運(yùn)行推理怎么解決?

    使用英特爾?獨(dú)立顯卡與OpenVINO?工具套件時無法運(yùn)行推理
    發(fā)表于 03-05 06:56

    為什么無法在運(yùn)行時C++推理中讀取OpenVINO?模型?

    使用模型優(yōu)化器 2021.1 版OpenVINO?轉(zhuǎn)換模型 使用 Runtime 2022.3 版本在 C++ 推理實現(xiàn) ( core.read_model()) 中讀取模型OpenVINO?并
    發(fā)表于 03-05 06:17

    為什么深度學(xué)習(xí)中的Frame per Second高于OpenVINO?演示推理腳本?

    在 DL Workbench 上使用 Microsoft 通用對象上下文 (MS COCO) 數(shù)據(jù)集運(yùn)行 YOLOv4 對象檢測模型,并獲得 50 - 60 FPS。 OpenVINO?演示推理腳本運(yùn)行,并獲得更高的 FPS。
    發(fā)表于 03-06 07:27

    如何使用多攝像頭作為OpenVINO?推理的輸入?

    無法確定如何使用多攝像頭作為OpenVINO?推理的輸入
    發(fā)表于 03-06 07:30

    使用OpenVINO?進(jìn)行推理時的內(nèi)存泄漏怎么解決?

    使用 OpenVINO? 進(jìn)行推理時,內(nèi)存會隨著時間的推移而增加,并導(dǎo)致程序崩潰。
    發(fā)表于 03-06 08:29

    使用Python API在OpenVINO?中創(chuàng)建了用于異步推理的自定義代碼,輸出張量的打印結(jié)果會重復(fù),為什么?

    使用 Python* API 在 OpenVINO? 中創(chuàng)建了用于異步推理的自定義代碼。 遇到輸出張量的打印結(jié)果會重復(fù)的問題,即使輸入圖像不同。
    發(fā)表于 03-06 07:53

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

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

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

    使用 OpenVINO? 運(yùn)行時 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收到錯誤怎么解決?

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

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

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

    OpenVINO場景文字檢測與文字識別教程

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

    NNCF壓縮與量化YOLOv8模型與OpenVINO部署測試

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

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

    OpenVINO Notebooks是Jupyter Notebook形式的OpenVINO范例程序大集合,方便開發(fā)者快速學(xué)習(xí)并掌握OpenVINO推理程序,并通過Copy&Paste
    的頭像 發(fā)表于 12-12 14:40 ?1491次閱讀
    如何快速下載<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 ?1435次閱讀