色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

解析OpenVINO? + SSD 實時對象檢測

英特爾物聯網 ? 來源:英特爾物聯網 ? 作者:英特爾物聯網 ? 2021-05-18 09:35 ? 次閱讀

前面我們了解OpenVINO 如何部署圖像分類網絡ResNet,本文我們將會學習OpenVINO 中對象檢測網絡的部署與推理應用。說到對象檢測網絡,我們首先需要理解兩個概念:對象檢測與對象檢測網絡。

SSD對象檢測模型

對象檢測是計算機視覺核心任務之一,也是最常見與應用最廣泛的視覺場景。OpenVINO 已經提供了以下通用場景下的對象檢測包括人臉檢測、行人檢測、物體檢測、車輛檢測、車牌檢測等,一個圖像對象檢測顯示示意圖如下:

圖-1(來自SSD論文)

相比圖像分類,對象檢測多了每個對象位置信息,所以簡單的認為對象檢測=圖像分類+Box位置信息。第一個深度學習相關的對象檢測網絡正是基于這樣思想的RCNN模型,但是它的缺點是無法實時,所以2015年底有人提出了一個實時對象檢測網絡Single Shot MultiBox Detector縮寫為SSD。它的模型結構如下:

23b73396-b4ff-11eb-bf61-12bb97331649.png

圖2(來自SSD論文)

圖2中SSD對象檢測網絡簡單說可以分為三個部分:

- 基礎網絡(backbone) 這里為VGG16

- 特征提取Neck,構建多尺度特征

- 檢測頭 – 非最大抑制與輸出

OpenVINO 中模型庫自帶預訓練的人臉檢測網絡有很多,分別針對不同的應用場景與輸入分辨率。這里我們以face-detection-0202人臉檢測模型為例說明,它是一個MobileNetV2作為基礎網絡的SSD對象檢測模型,模型支持的輸入圖像大小與格式如下:

NCHW=1x3x384x384其中

N表示圖像數目,這里為1

C表示輸入圖像通道數目,這里彩色圖像為3

H表示圖像高度

W表示圖像寬度

期望的圖像通道順序:BGR

23f26fa6-b4ff-11eb-bf61-12bb97331649.png

圖-3

模型推理計算得輸出格式為:

1x1xNx7其中

N表示檢測到的對象數目

7表示[image_id, label, conf, x_min, y_min, x_max, y_max]這七個值,其中

Image_id 表示圖像編號,這個輸入的是一張圖像,base為0

Label 表示標簽,跟數據集的label_map文本文件相關,根據標簽編號可以查找標簽文本名

Conf 表示對象的置信度,取值范圍在0~1之間,值越大表示置信程度越高

x_min, y_min, x_max, y_max 四個值對象位置信息,分別是左上角與有下角的坐標

該模型的相關性能參數如下:

圖-4

從上面我們可以知道模型來自Pytorch訓練生成。

OpenVINO基于SSD模型實時人臉檢測

現在我們已經了解SSD模型的基本網絡結構,OpenVINO 自帶SSD人臉檢測模型face-detection-0202的輸入與輸出相關格式與參數細節信息,這里我們就基于該模型使用OpenVINO 中的推理引擎模型實現一個實時人臉檢測應用,根據之前的內容,我們首先需要加載模型,相關代碼如下:

// 加載檢測模型

auto network = ie.ReadNetwork(model_xml, model_bin);

其中

model_xml表示face-detection-0202模型文件

model_bin表示face-detection-0202權重文件

然后設置模型的輸入與輸出相關的格式,代碼如下:

// 請求網絡輸入與輸出信息

InferenceEngine::InputsDataMap input_info(network.getInputsInfo());

InferenceEngine::OutputsDataMap output_info(network.getOutputsInfo());

// 設置輸入格式

for (auto &item : input_info) {

auto input_data = item.second;

input_data->setPrecision(Precision::U8);

input_data->setLayout(Layout::NCHW);

}

printf("get it ");

// 設置輸出格式

for (auto &item : output_info) {

auto output_data = item.second;

output_data->setPrecision(Precision::FP32);

}

加載可執行網絡,創建推理請求對象實例,代碼如下:

// 創建可執行網絡對象

auto executable_network = ie.LoadNetwork(network, "CPU");

// 請求推斷圖

auto infer_request = executable_network.CreateInferRequest();

設置推理輸入圖像數據,轉換為NCHW格式的blob數據,代碼如下:

/** Getting input blob **/

auto input = infer_request.GetBlob(input_name);

size_t num_channels = input->getTensorDesc().getDims()[1];

size_t h = input->getTensorDesc().getDims()[2];

size_t w = input->getTensorDesc().getDims()[3];

size_t image_size = h*w;

Mat blob_image;

resize(src, blob_image, Size(w, h));

// NCHW

unsigned char* data = static_cast(input->buffer());

for (size_t row = 0; row < h; row++) {

for (size_t col = 0; col < w; col++) {

for (size_t ch = 0; ch < num_channels; ch++) {

data[image_size*ch + row*w + col] = blob_image.at(row, col)[ch];

}

}

}

預測與解析輸出結果,代碼如下:

// 執行預測

infer_request.Infer();

// 處理輸出結果

for (auto &item : output_info) {

auto output_name = item.first;

// 獲取輸出數據

auto output = infer_request.GetBlob(output_name);

const float* detection = static_cast::value_type*>(output->buffer());

const SizeVector outputDims = output->getTensorDesc().getDims();

const int maxProposalCount = outputDims[2];

const int objectSize = outputDims[3];

// 解析輸出結果

for (int curProposal = 0; curProposal < maxProposalCount; curProposal++) {

float label = detection[curProposal * objectSize + 1];

float confidence = detection[curProposal * objectSize + 2];

float xmin = detection[curProposal * objectSize + 3] * image_width;

float ymin = detection[curProposal * objectSize + 4] * image_height;

float xmax = detection[curProposal * objectSize + 5] * image_width;

float ymax = detection[curProposal * objectSize + 6] * image_height;

if (confidence > 0.5) {

printf("label id : %d ", static_cast(label));

Rect rect;

rect.x = static_cast(xmin);

rect.y = static_cast(ymin);

rect.width = static_cast(xmax - xmin);

rect.height = static_cast(ymax - ymin);

putText(src, "OpenVINO-2021R02", Point(20, 20), FONT_HERSHEY_SIMPLEX, 0.75, Scalar(0, 0, 255), 2, 8);

rectangle(src, rect, Scalar(0, 255, 255), 2, 8, 0);

}

std::cout << std::endl;

}

}

imshow("OpenVINO+SSD人臉檢測", src);

最終顯示結果如下:

圖-5

總結

本文我們完成了OpenVINO 人臉檢測模型的推理調用演示,關鍵知識點在于模型的輸入與輸出格式,以及推理以后的模型輸出數據的解析方式。到這里大家希望借助OpenVINO 實現一個視頻版本的人臉檢測,沒關系,下一次我們將來完成這樣的事情……

編輯:jq

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

    關注

    21

    文章

    2934

    瀏覽量

    118924
  • 代碼
    +關注

    關注

    30

    文章

    4880

    瀏覽量

    69982
  • 人臉檢測
    +關注

    關注

    0

    文章

    86

    瀏覽量

    16707
  • 深度學習
    +關注

    關注

    73

    文章

    5547

    瀏覽量

    122296
  • resnet
    +關注

    關注

    0

    文章

    13

    瀏覽量

    3270

原文標題:OpenVINO? + SSD 實時對象檢測

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

收藏 0人收藏

    評論

    相關推薦

    OpenVINO C#如何運行YOLO11實例分割模型

    代碼是我在OpenVINO-CSharp-API作者開源的YOLOv8對象檢測的代碼基礎上修改而成。
    的頭像 發表于 04-29 09:30 ?298次閱讀
    <b class='flag-5'>OpenVINO</b> C#如何運行YOLO11實例分割模型

    SSD300模型轉換為IR時收到錯誤的原因?

    SSD300 模型轉換為 IR 時收到錯誤: [ FRAMEWORK ERROR ] Model Optimizer is not able to parse /OpenVINO
    發表于 03-07 07:58

    使用OpenVINO?模型的OpenCV進行人臉檢測,檢測到多張人臉時,伺服電機和步入器電機都發生移動是為什么?

    使用OpenVINO?模型的 OpenCV* 進行人臉檢測。 使用 cv2.矩形 函數,能夠獲取檢測到的面部的坐標。 檢測到多張人臉時,多個坐標被捕獲到,伺服電機和步入器電機都發生移
    發表于 03-07 06:35

    如何部署OpenVINO?工具套件應用程序?

    編寫代碼并測試 OpenVINO? 工具套件應用程序后,必須將應用程序安裝或部署到生產環境中的目標設備。 OpenVINO?部署管理器指南包含有關如何輕松使用部署管理器將應用程序打包并部署到目標主機的詳細信息。 注意:OpenVIN
    發表于 03-06 08:23

    使用OpenVINO? 2021.4在CPU和MYRIAD上進行自定義對象檢測,為什么結果差異巨大?

    使用自定義訓練的模型執行推理,以便在 2021.4 OpenVINO?中進行人員檢測。 與 MYRIAD 相比,CPU 的輸出結果取得了巨大的差異
    發表于 03-06 07:45

    為什么深度學習中的Frame per Second高于OpenVINO?演示推理腳本?

    在 DL Workbench 上使用 Microsoft 通用對象上下文 (MS COCO) 數據集運行 YOLOv4 對象檢測模型,并獲得 50 - 60 FPS。 OpenVINO
    發表于 03-06 07:27

    如何使用OpenVINO?運行對象檢測模型?

    無法確定如何使用OpenVINO?運行對象檢測模型
    發表于 03-06 07:20

    請問是否有任何OpenVINO?樣本可以推斷批次大小大于1的檢測模型?

    是否有任何OpenVINO?樣本可以推斷批次大小大于 1 的檢測模型?
    發表于 03-06 07:19

    使用Yolo-v3-TF運行OpenVINO?對象檢測Python演示時的結果不準確的原因?

    的模型與對象檢測 Python* Demo 配合使用時無法檢測對象: python3 open_model_zoo/demos/object_detection_demo/python
    發表于 03-06 06:31

    無法在Windows Subsystem for Linux 2上使用對象檢測Python演示運行YoloV4模型?

    在 WSL2 上運行對象檢測 python 演示。 使用 CPU 運行 object_detection_demo.py 時遇到錯誤: OpenCV: FFMPEG: tag
    發表于 03-05 08:43

    為什么無法檢測OpenVINO?工具套件中的英特爾?集成圖形處理單元?

    在 Ubuntu* Desktop 22.04 上安裝了 英特爾? Graphics Driver 版本并OpenVINO? 2023.1。 運行 python 代碼: python -c
    發表于 03-05 08:36

    使用OpenVINO?訓練擴展對水平文本檢測模型進行微調,收到錯誤信息是怎么回事?

    已針對水平文本檢測模型運行OpenVINO?訓練擴展中的 微調 步驟,并收到錯誤消息: RuntimeError: Failed to find annotation files
    發表于 03-05 06:48

    OpenVINO?檢測到GPU,但網絡無法加載到GPU插件,為什么?

    OpenVINO?安裝在舊的 Windows 10 版本 Windows? 10 (RS1) 上。 已安裝 GPU 驅動程序版本 25.20.100.6373,檢測到 GPU,但網絡無法加載
    發表于 03-05 06:01

    使用OpenVINO C# API部署YOLO-World實現實時開放詞匯對象檢測

    的快速準確識別,并通過AR技術將虛擬元素與真實場景相結合,為用戶帶來沉浸式的交互體驗。在本文中,我們將結合OpenVINO C# API使用最新發布的OpenVINO 2024.0部署 YOLO-World實現實時開放詞匯
    的頭像 發表于 08-30 16:27 ?1306次閱讀
    使用<b class='flag-5'>OpenVINO</b> C# API部署YOLO-World實現<b class='flag-5'>實時</b>開放詞匯<b class='flag-5'>對象</b><b class='flag-5'>檢測</b>

    OpenVINO2024 C++推理使用技巧

    很多人都使用OpenVINO新版的C++ 或者Python的SDK,都覺得非常好用,OpenVINO2022之后的版本C++ SDK做了大量的優化與整理,已經是非常貼近開發的使用習慣與推理方式。與OpenCV的Mat對象對接方式
    的頭像 發表于 07-26 09:20 ?1353次閱讀
    主站蜘蛛池模板: 国产午夜精品一区二区三区 | 色欲久久99精品久久久久久AV | 求个av网站 | 国产乱辈通伦影片在线播放亚洲 | 呻吟翘臀后进爆白浆 | 亚洲视频国产在线精品 | 美女被艹网站 | 亚洲无吗精品AV九九久久 | 国产手机在线亚洲精品观看 | 毛片手机在线观看 | 久久在精品线影院精品国产 | MD传媒MD0021在线观看 | 国产精品久久久久久影院 | 夜月视频直播免费观看 | 国产福利视频第一导航 | 日本久久精品视频 | 亚洲精品久久久午夜福利电影网 | 久久99热这里只频精品6 | 国产欧美日韩国产高清 | 伦理电影v男人天堂 | 久久久性色精品国产免费观看 | 国产色偷偷男人的天堂 | 亚洲精品成人在线 | 欧美激情视频一区二区 | 成人影院午夜久久影院 | 在线自拍亚洲视频欧美 | 国产精自产拍久久久久久蜜 | 麻豆产精品一二三产区区 | 空姐厕所啪啪啪 | 久久国产精品高清一区二区三区 | 精品无码人妻一区二区免费AV | 亚洲中文日韩日本在线视频 | adc免费观看 | 日本久久不射 | 国产精品69人妻无码久久久 | 射死你天天日 | 毛茸茸womansex | 精品无码一区二区三区不卡 | 国产一区二区在线免费观看 | 亚洲免费网站在线观看 | 欧美视频 亚洲视频 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品