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

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

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

深度學(xué)習(xí)中動(dòng)作識(shí)別網(wǎng)絡(luò)學(xué)習(xí)

英特爾物聯(lián)網(wǎng) ? 來源:英特爾物聯(lián)網(wǎng) ? 作者:英特爾物聯(lián)網(wǎng) ? 2021-06-25 10:32 ? 次閱讀

動(dòng)作識(shí)別網(wǎng)絡(luò)

深度學(xué)習(xí)在人體動(dòng)作識(shí)別領(lǐng)域有兩類主要的網(wǎng)絡(luò),一類是基于姿態(tài)評(píng)估,基于關(guān)鍵點(diǎn)實(shí)現(xiàn)的動(dòng)作識(shí)別網(wǎng)絡(luò);另外一類是直接預(yù)測的動(dòng)作識(shí)別網(wǎng)絡(luò)。關(guān)于姿態(tài)評(píng)估相關(guān)的網(wǎng)絡(luò)模型應(yīng)用,我們在前面的文章中已經(jīng)介紹過了。OpenVINO2021.2版本中支持的動(dòng)作識(shí)別網(wǎng)絡(luò)都不是基于關(guān)鍵點(diǎn)輸出的,而是基于Box直接預(yù)測,當(dāng)前支持動(dòng)作識(shí)別的預(yù)訓(xùn)練模型與識(shí)別的動(dòng)作數(shù)目支持列表如下:

12dd20c8-d50f-11eb-9e57-12bb97331649.png

表-1

這些網(wǎng)絡(luò)的輸出都是基于SSD檢測頭實(shí)現(xiàn)對(duì)象檢測與動(dòng)作預(yù)測。

輸入與輸出格式

以person-detection-action-recognition-0005模型為例說明它們的輸入與輸出數(shù)據(jù)格式支持,我也不知道什么原因(個(gè)人猜測因?yàn)镃affe框架的原因),網(wǎng)絡(luò)的輸出居然都是SSD原始檢測頭,怎么解析,我有妙招,稍后送上!先看一下輸入與輸出格式說明:

輸入格式:

格式 NCHW=[1x3x400x680] ,Netron實(shí)際查看:

注意:OpenVINO2021.2安裝之后的文檔上格式說明是NHWC

輸出格式:

輸出有七個(gè)分支頭的數(shù)據(jù),它們的名稱跟維度格式列表如下:

12f04c16-d50f-11eb-9e57-12bb97331649.png

表-2

關(guān)于輸出格式的解釋,首先是num_priors值是多少,骨干網(wǎng)絡(luò)到SSD輸出頭,是實(shí)現(xiàn)了16倍的降采樣,最終輸出的h x w=25x43然后每個(gè)特征點(diǎn)預(yù)測4個(gè)PriorBox, 每個(gè)特征點(diǎn)預(yù)測動(dòng)作,總計(jì)有三類的動(dòng)作,所以動(dòng)作預(yù)測輸出為: [b, 3, h, w] = [1x3x25x43],總計(jì)PriorBoxes數(shù)目為:num_priors=25x43x4=4300,這些都是SSD檢測頭的原始輸出,沒有非最大抑制,沒有經(jīng)過轉(zhuǎn)換處理,所以想直接解析它們對(duì)開發(fā)應(yīng)用的人來說是一個(gè)大麻煩!

輸出數(shù)據(jù)解析與處理問題

person-detection-action-recognition-0005網(wǎng)絡(luò)推理之后的輸出數(shù)據(jù)解析跟后處理特別的復(fù)雜,怎么解析原始輸出頭是個(gè)技術(shù)活,我從示例代碼中提取跟整理出來兩個(gè)C++文件,它們是:

action_detector.h

cnn.h

以及它們的實(shí)現(xiàn)文件:

action_detector.cpp

cnn.cpp

這個(gè)其中最重要的就是有個(gè)ActionDetection類,它有幾個(gè)方法,分別是:

void enqueue(const cv::Mat &frame)

void submitRequest()

void wait()

DetectedActions fetchResults()

這幾個(gè)方法的解釋分別如下:

enqueue方法的就是實(shí)現(xiàn)了推理請求創(chuàng)建與圖像數(shù)據(jù)的輸入設(shè)置,它的代碼實(shí)現(xiàn)如下:

if (!request) {

request = net_.CreateInferRequestPtr();

}

width_ = static_cast《float》(frame.cols);

height_ = static_cast《float》(frame.rows);

Blob::Ptr inputBlob = request-》GetBlob(input_name_);

matU8ToBlob《uint8_t》(frame, inputBlob);

enqueued_frames_ = 1;

submitRequest方法,就是執(zhí)行推理,支持同步與異步推理執(zhí)行模型,它的代碼實(shí)現(xiàn)如下:

if (request == nullptr) return;

if (isAsync) {

request-》StartAsync();

}

else {

request-》Infer();

}

wait方法,當(dāng)同步推理時(shí)候無需調(diào)用,異步推理調(diào)用

fetchResults方法,該方法是推理過程中最復(fù)雜的部分,負(fù)責(zé)解析輸出的七個(gè)分支數(shù)據(jù),生成Box與action標(biāo)簽預(yù)測。簡單的說它的執(zhí)行過程是這樣,首先獲取輸出的七個(gè)輸出數(shù)據(jù),然后轉(zhuǎn)換為基于Mat的數(shù)據(jù),然后循環(huán)每個(gè)特征圖的特征點(diǎn)預(yù)測Box與置信得分,大于閾值的置信得分對(duì)應(yīng)的預(yù)測Box與PriorBox計(jì)算真實(shí)的BOX坐標(biāo),同時(shí)閾值化處理Action的置信得分,最終對(duì)結(jié)果完整非最大抑制之后輸出,得到數(shù)據(jù)結(jié)構(gòu)為:

struct DetectedAction {

/** @brief BBox of detection */

cv::Rect rect;

/** @brief Action label */

int label;

/** @brief Confidence of detection */

float detection_conf;

/** @brief Confidence of predicted action */

float action_conf;

這樣就完成了對(duì)輸出的數(shù)據(jù)解析。

這個(gè)就是上述四個(gè)相關(guān)依賴文件,我已經(jīng)把其他不相關(guān)的或者非必要的依賴全部去掉,基于這四個(gè)相關(guān)文件,就可以實(shí)現(xiàn)對(duì)表-1中動(dòng)作識(shí)別模型的推理與解析輸出顯示。

動(dòng)作識(shí)別代碼演示

動(dòng)作識(shí)別代碼演示基于person-detection-action-recognition-0005網(wǎng)絡(luò)模型完成,該模型是基于室內(nèi)場景數(shù)據(jù)訓(xùn)練生成的,適合于教育智慧教室應(yīng)用場景。首先需要初始化動(dòng)作檢測類與初始化推理引擎加載,然后配置動(dòng)作檢測類的相關(guān)參數(shù),這些參數(shù)主要包括以下:

- 模型的權(quán)重文件路徑

- 推理引擎的計(jì)算設(shè)備支持

- 對(duì)象檢測閾值

- 動(dòng)作預(yù)測閾值

- 支持動(dòng)作類別數(shù)目

- 是否支持異步推理

等等。

配置完成之后設(shè)置與初始化ActionDetection類,然后就可以直接調(diào)用上述提到幾個(gè)類方法完成整個(gè)推理與輸出,根據(jù)輸出結(jié)果繪制與顯示即可,這部分的代碼如下:

cv::Mat frame = cv::imread(“D:/action_001.png”);

InferenceEngine::Core ie;

std::unique_ptr《AsyncDetection《DetectedAction》》 action_detector;

// Load action detector

ActionDetectorConfig action_config(model_xml);

action_config.deviceName = “CPU”;

action_config.ie = ie;

action_config.is_async = false;

action_config.detection_confidence_threshold = 0.1f;

action_config.action_confidence_threshold = 0.1f;

action_config.num_action_classes = 3;

action_detector.reset(new ActionDetection(action_config));

action_detector-》enqueue(frame);

action_detector-》submitRequest();

DetectedActions actions = action_detector-》fetchResults();

std::cout 《《 actions.size() 《《 std::endl;

for (int i = 0; i 《 actions.size(); i++) {

std::cout 《《 actions[i].rect 《《 std::endl;

std::cout 《《 actions[i].label 《《 std::endl;

cv::rectangle(frame, actions[i].rect, cv::Scalar(0, 0, 255), 2, 8, 0);

putText(frame, action_text_labels[actions[i].label], actions[i].rect.tl(), cv::FONT_HERSHEY_SIMPLEX, 0.75, cv::Scalar(0, 0, 255), 2, 8);

}

cv::imshow(“動(dòng)作識(shí)別演示”, frame);

cv::waitKey(0);

return 0;

責(zé)任編輯:haq

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

原文標(biāo)題:OpenVINO? 室內(nèi)動(dòng)作識(shí)別

文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于Python的深度學(xué)習(xí)人臉識(shí)別方法

    基于Python的深度學(xué)習(xí)人臉識(shí)別方法是一個(gè)涉及多個(gè)技術(shù)領(lǐng)域的復(fù)雜話題,包括計(jì)算機(jī)視覺、深度學(xué)習(xí)、以及圖像處理等。在這里,我將概述一個(gè)基本的
    的頭像 發(fā)表于 07-14 11:52 ?1053次閱讀

    深度學(xué)習(xí)反卷積的原理和應(yīng)用

    像分割、圖像重建和生成對(duì)抗網(wǎng)絡(luò)(GANs)等,反卷積展現(xiàn)出了其獨(dú)特的優(yōu)勢和廣泛的應(yīng)用前景。本文將詳細(xì)探討深度學(xué)習(xí)的反卷積技術(shù),包括其定義、原理、實(shí)現(xiàn)方式、應(yīng)用場景以及與其他上采樣方法
    的頭像 發(fā)表于 07-14 10:22 ?1018次閱讀

    深度學(xué)習(xí)的時(shí)間序列分類方法

    時(shí)間序列分類(Time Series Classification, TSC)是機(jī)器學(xué)習(xí)深度學(xué)習(xí)領(lǐng)域的重要任務(wù)之一,廣泛應(yīng)用于人體活動(dòng)識(shí)別、系統(tǒng)監(jiān)測、金融預(yù)測、醫(yī)療診斷等多個(gè)領(lǐng)域。隨
    的頭像 發(fā)表于 07-09 15:54 ?521次閱讀

    深度學(xué)習(xí)的無監(jiān)督學(xué)習(xí)方法綜述

    應(yīng)用往往難以實(shí)現(xiàn)。因此,無監(jiān)督學(xué)習(xí)深度學(xué)習(xí)扮演著越來越重要的角色。本文旨在綜述深度
    的頭像 發(fā)表于 07-09 10:50 ?278次閱讀

    深度學(xué)習(xí)在視覺檢測的應(yīng)用

    深度學(xué)習(xí)是機(jī)器學(xué)習(xí)領(lǐng)域中的一個(gè)重要分支,其核心在于通過構(gòu)建具有多層次的神經(jīng)網(wǎng)絡(luò)模型,使計(jì)算機(jī)能夠從大量數(shù)據(jù)自動(dòng)
    的頭像 發(fā)表于 07-08 10:27 ?488次閱讀

    深度學(xué)習(xí)與nlp的區(qū)別在哪

    深度學(xué)習(xí)和自然語言處理(NLP)是計(jì)算機(jī)科學(xué)領(lǐng)域中兩個(gè)非常重要的研究方向。它們之間既有聯(lián)系,也有區(qū)別。本文將介紹深度學(xué)習(xí)與NLP的區(qū)別。 深度
    的頭像 發(fā)表于 07-05 09:47 ?646次閱讀

    深度學(xué)習(xí)的模型權(quán)重

    深度學(xué)習(xí)這一充滿無限可能性的領(lǐng)域中,模型權(quán)重(Weights)作為其核心組成部分,扮演著至關(guān)重要的角色。它們不僅是模型學(xué)習(xí)的基石,更是模型智能的源泉。本文將從模型權(quán)重的定義、作用、優(yōu)化、管理以及應(yīng)用等多個(gè)方面,深入探討
    的頭像 發(fā)表于 07-04 11:49 ?603次閱讀

    深度學(xué)習(xí)與卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)作為其中的重要分支,已經(jīng)在多個(gè)領(lǐng)域取得了顯著的應(yīng)用成果。從圖像識(shí)別
    的頭像 發(fā)表于 07-02 18:19 ?667次閱讀

    深度學(xué)習(xí)在自動(dòng)駕駛的關(guān)鍵技術(shù)

    隨著人工智能技術(shù)的飛速發(fā)展,自動(dòng)駕駛技術(shù)作為其中的重要分支,正逐漸走向成熟。在自動(dòng)駕駛系統(tǒng),深度學(xué)習(xí)技術(shù)發(fā)揮著至關(guān)重要的作用。它通過模擬人腦的學(xué)習(xí)過程,實(shí)現(xiàn)對(duì)車輛周圍環(huán)境的感知、理解
    的頭像 發(fā)表于 07-01 11:40 ?559次閱讀

    深度解析深度學(xué)習(xí)下的語義SLAM

    隨著深度學(xué)習(xí)技術(shù)的興起,計(jì)算機(jī)視覺的許多傳統(tǒng)領(lǐng)域都取得了突破性進(jìn)展,例如目標(biāo)的檢測、識(shí)別和分類等領(lǐng)域。近年來,研究人員開始在視覺SLAM算法引入
    發(fā)表于 04-23 17:18 ?1155次閱讀
    <b class='flag-5'>深度</b>解析<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>下的語義SLAM

    詳解深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用

    在如今的網(wǎng)絡(luò)時(shí)代,錯(cuò)綜復(fù)雜的大數(shù)據(jù)和網(wǎng)絡(luò)環(huán)境,讓傳統(tǒng)信息處理理論、人工智能與人工神經(jīng)網(wǎng)絡(luò)都面臨巨大的挑戰(zhàn)。近些年,深度學(xué)習(xí)逐漸走進(jìn)人們的視線
    的頭像 發(fā)表于 01-11 10:51 ?1752次閱讀
    詳解<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>、神經(jīng)<b class='flag-5'>網(wǎng)絡(luò)</b>與卷積神經(jīng)<b class='flag-5'>網(wǎng)絡(luò)</b>的應(yīng)用

    目前主流的深度學(xué)習(xí)算法模型和應(yīng)用案例

    深度學(xué)習(xí)在科學(xué)計(jì)算獲得了廣泛的普及,其算法被廣泛用于解決復(fù)雜問題的行業(yè)。所有深度學(xué)習(xí)算法都使用不同類型的神經(jīng)
    的頭像 發(fā)表于 01-03 10:28 ?1465次閱讀
    目前主流的<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>算法模型和應(yīng)用案例

    GPU在深度學(xué)習(xí)的應(yīng)用與優(yōu)勢

    人工智能的飛速發(fā)展,深度學(xué)習(xí)作為其重要分支,正在推動(dòng)著諸多領(lǐng)域的創(chuàng)新。在這個(gè)過程,GPU扮演著不可或缺的角色。就像超級(jí)英雄電影的主角一樣,GPU在
    的頭像 發(fā)表于 12-06 08:27 ?1150次閱讀
    GPU在<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>中</b>的應(yīng)用與優(yōu)勢

    深度學(xué)習(xí)在人工智能的 8 種常見應(yīng)用

    深度學(xué)習(xí)簡介深度學(xué)習(xí)是人工智能(AI)的一個(gè)分支,它教神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)和推理。近年來,它解決復(fù)雜問題
    的頭像 發(fā)表于 12-01 08:27 ?3104次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>在人工智能<b class='flag-5'>中</b>的 8 種常見應(yīng)用

    基于深度學(xué)習(xí)的情感語音識(shí)別模型優(yōu)化策略

    情感語音識(shí)別技術(shù)是一種將人類語音轉(zhuǎn)化為情感信息的技術(shù),其應(yīng)用范圍涵蓋了人機(jī)交互、智能客服、心理健康監(jiān)測等多個(gè)領(lǐng)域。隨著人工智能技術(shù)的不斷發(fā)展,深度學(xué)習(xí)在情感語音識(shí)別領(lǐng)域的應(yīng)用越來越廣泛
    的頭像 發(fā)表于 11-09 16:34 ?590次閱讀