人體動(dòng)作識(shí)別背景簡介
自從我在英特爾開始我的旅程以來已經(jīng)有幾個(gè)月了,我很高興能與大家分享我一直在做的事情。今天,我將帶你瀏覽我的第一個(gè)關(guān)于人體動(dòng)作識(shí)別的OpenVINO Notebook。我希望你喜歡它,并且可以將它應(yīng)用到你正在進(jìn)行的開發(fā)中。
在本博客中,您將了解如何使用OpenVINO 工具套件以同步的方式進(jìn)行實(shí)時(shí)人體動(dòng)作識(shí)別。
人體動(dòng)作識(shí)別是一種 AI 功能,可以在錄制或?qū)崟r(shí)視頻中查找和分類大量活動(dòng)。例如:如果您有大量的家庭視頻收藏,并且想要找到特定的記憶,如圖1.1所示,那么人體動(dòng)作識(shí)別是最簡單、最快的方法。
傳統(tǒng)方法需要您花費(fèi)大量精力和時(shí)間手動(dòng)查看您擁有的每個(gè)視頻,直到找到合適的視頻。使用人體動(dòng)作識(shí)別,您可以訓(xùn)練 AI 模型根據(jù)錄制的活動(dòng)為您自動(dòng)分類和組織您的視頻,從而在幾秒鐘內(nèi)更輕松地找到和訪問您最珍貴的記憶。
圖1.1珍貴的家庭回憶
人體動(dòng)作識(shí)別也可以應(yīng)用于制造業(yè)等企業(yè)。例如:為工人提供一種保證他們工作安全的解決方案,該方案能夠識(shí)別工人正在執(zhí)行任務(wù)和工人手勢,并提醒管理人員可能存在的潛在危險(xiǎn)。
這只是人體動(dòng)作識(shí)別的幾個(gè)應(yīng)用場景。在接下來的幾年里,我希望在這個(gè)領(lǐng)域看到更多新的和令人興奮的應(yīng)用案例。在運(yùn)行這個(gè)OpenVINO Notebook后,若能激發(fā)您想到還有其它領(lǐng)域可以從人體動(dòng)作識(shí)別功能中受益,請告訴我們。
現(xiàn)在,讓我們開始吧!
OpenVINO Notebook簡介
OpenVINO Notebook 是開源免費(fèi)的一系列 Jupyter Notebook 格式的 OpenVINO 范例程序。
本文對應(yīng)的 OpenVINO Notebook 范例是Live Action Recognition with OpenVINO,如圖1-2所示。
圖1-2Live Action Recognition with OpenVINO
Live Action Recognition with OpenVINO基于 DeepMind Kinetics-400 人體動(dòng)作視頻數(shù)據(jù)集,它總共包含 400 個(gè)動(dòng)作,包括:
人的動(dòng)作(例如,寫作、喝酒、大笑)
人與人的動(dòng)作(例如,擁抱、握手、玩耍)撲克)
人與物體的動(dòng)作(騎摩托車、洗衣服、吹氣球)
您還可以區(qū)分一組親子互動(dòng),例如:編辮子或梳頭、薩爾薩舞或機(jī)器人跳舞,以及拉小提琴或吉他。
有關(guān)標(biāo)簽和數(shù)據(jù)集的更多信息,請參閱 “The Kinetics Human Action Video Dataset” 研究論文。
您可以使用普通計(jì)算機(jī)運(yùn)行此 OpenVINO Notebook范例程序,無需硬件加速器。使用 OpenVINO工具套件的好處在于:它設(shè)計(jì)為在邊緣工作,因此可以針對邊緣運(yùn)行,優(yōu)化您的AI模型,以便在 GPU、CPU 或VPU 上高效運(yùn)行。
您可以使用各種視頻源,例如:來自 URL、本地存儲(chǔ)的文件或網(wǎng)絡(luò)攝像頭源。
動(dòng)作識(shí)別模型簡介
本文使用Open Model Zoo的Action Recognition模型庫,它提供了各種各樣的預(yù)訓(xùn)練深度學(xué)習(xí)模型和演示應(yīng)用程序。本文使用的模型action-recognition-0001,這是一個(gè)基于 Video Transformer,具有 ResNet34 架構(gòu)的模型,如圖1.3所示。
圖1.3人體行為識(shí)別模型流程圖
action-recognition-0001模型含兩個(gè)關(guān)鍵組件:
基于PyTorch 框架,輸入形狀為 [1x3x224x224],表示批尺寸大小為1,顏色通道為3,圖像尺寸為 224 x 224 像素;輸出形狀為 [1x512x1x1],表示內(nèi)嵌的已處理幀。
解碼器
同樣基于 PyTorch 框架,輸入形狀為 [1x16x512],表示批尺寸大小為1,一秒內(nèi)處理 16 幀,內(nèi)嵌數(shù)據(jù)為 512。
我選擇每秒 16 幀進(jìn)行分析——因?yàn)檫@是 Kinetics-400 作者找到類別分?jǐn)?shù)的平均幀數(shù)。如圖1.2中的 GIF 所示,對幀進(jìn)行預(yù)處理以及分析中心裁剪的圖像。
編碼器和解碼器都創(chuàng)建了一個(gè)序列到序列 (Seq2Seq) 系統(tǒng)來識(shí)別 Kinetics-400 數(shù)據(jù)集的人體動(dòng)作。由于沒有過量的標(biāo)注信息,模型性能是最好的,它可以幫助我們理解處理工作流程
了解了上述基礎(chǔ)信息后,您可以按照以下步驟開始識(shí)別您自己的視頻:
準(zhǔn)備OpenVINO Notebooks 運(yùn)行環(huán)境。
準(zhǔn)備您的視頻源、網(wǎng)絡(luò)攝像頭或視頻文件以及您想要檢測的常見活動(dòng)。考慮通過檢查數(shù)據(jù)集標(biāo)簽來檢測動(dòng)作名稱。
在您的計(jì)算機(jī)上打開一個(gè) Jupyter Notebook。該Notebook可以在Windows、MacOS 和 Ubuntu 下通過不同的互聯(lián)網(wǎng)瀏覽器運(yùn)行。
實(shí)現(xiàn)實(shí)時(shí)動(dòng)作識(shí)別
現(xiàn)在,我將向您展示如何使用 OpenVINO 實(shí)現(xiàn)實(shí)時(shí)動(dòng)作識(shí)別。
1.4.1
下載模型
我們使用Open Model Zoo 工具,例如:omz_downloader,來下載 Open Model Zoo 中的預(yù)訓(xùn)練模型。omz_downloader是一個(gè)命令行工具,可以自動(dòng)創(chuàng)建目錄結(jié)構(gòu)并下載選定的模型。
使用 omz_downloader 工具下載 Open Model Zoo 的 “action-recognition-0001” 模型,如圖1.4所示。
圖1.4下載 action-recognition-0001 模型
1.4.2
初始化模型
在執(zhí)行推理計(jì)算前,需要先初始化推理引擎,然后從模型文件中讀取網(wǎng)絡(luò)和權(quán)重,并將模型加載到所選設(shè)備(本文例子中是 CPU)上,最后獲取模型的輸入和輸出節(jié)點(diǎn),如圖1.5所示。
圖1.5初始化模型
1.4.3
輔助函數(shù)
您需要一些輔助函數(shù)來幫您將執(zhí)行結(jié)果可視化,例如:創(chuàng)建一個(gè)以裁剪為中心的 ROI,調(diào)整圖像大小,并在每一幀中放置文本信息。
1.4.4
AI 函數(shù)
這里將依次實(shí)現(xiàn)AI推理計(jì)算。
第一步:
在運(yùn)行編碼器之前對每幀圖像進(jìn)行預(yù)處理(預(yù)處理)。在將幀傳入編碼器之前,請先準(zhǔn)備好圖像:
01
將圖像放縮到編碼器中輸入尺寸,即[224,224]
02
將放縮后的圖像進(jìn)行中心裁剪,并使其長寬相等
03
將顏色通道從 HWC 變?yōu)?CHW
具體代碼實(shí)現(xiàn),如圖1.6所示
圖1.6圖像預(yù)處理
第二步:
執(zhí)行編碼器模型推理計(jì)算。encoder()函數(shù)調(diào)用已編譯模型(compiled_model),執(zhí)行推理計(jì)算,然后從輸出節(jié)點(diǎn)提取推理計(jì)算結(jié)果,并以列表形式以供解碼器使用,如圖1.7所示。
圖1.7執(zhí)行編碼器模型推理計(jì)算
第三步:
執(zhí)行解碼器模型推理計(jì)算。decoder()函數(shù)將來自編碼器輸出的16幀的嵌入層連接在一起,然后轉(zhuǎn)置數(shù)組以匹配解碼器輸入尺寸。它調(diào)用已編譯好的解碼器模型 (compiled_model_de),提取 logits,并將 logits 標(biāo)準(zhǔn)化以獲得沿指定軸的置信度值。最后,它將最高概率解碼為相應(yīng)的標(biāo)簽名稱,如圖1.8所示。
圖1.8執(zhí)行解碼器模型推理計(jì)算
1.4.5
完整執(zhí)行整個(gè)程序
現(xiàn)在,我們可以直接執(zhí)行整個(gè)完整的人體動(dòng)作識(shí)別程序。
首先,選擇您要為其運(yùn)行完整工作流程的視頻。
video_file = "https://archive.org/serve/ISSVideoResourceLifeOnStation720p/ISS%20Video%20Resource_LifeOnStation_720p.mp4"run_action_recognition(source=video_file, flip=False, use_popup=False, skip_first_frames=600)
然后,選擇網(wǎng)絡(luò)攝像頭并再次運(yùn)行完整的工作流程。
run_action_recognition(source=0, flip=False, use_popup=False, skip_first_frames=0)
恭喜!你已經(jīng)做到了。我希望您發(fā)現(xiàn)這個(gè)主題對您的應(yīng)用程序開發(fā)有趣和有用。
審核編輯:劉清
-
編碼器
+關(guān)注
關(guān)注
45文章
3709瀏覽量
135814 -
硬件加速器
+關(guān)注
關(guān)注
0文章
42瀏覽量
12900 -
人體動(dòng)作識(shí)別
+關(guān)注
關(guān)注
0文章
5瀏覽量
2314
原文標(biāo)題:使用 OpenVINO??實(shí)現(xiàn)人體動(dòng)作識(shí)別 | 開發(fā)者實(shí)戰(zhàn)
文章出處:【微信號(hào):英特爾物聯(lián)網(wǎng),微信公眾號(hào):英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
如何部署OpenVINO?工具套件應(yīng)用程序?
構(gòu)建開源OpenVINO?工具套件后,模型優(yōu)化器位于何處呢?
使用工具套件2020.2從ncappzoo運(yùn)行模型和演示OpenVINO?報(bào)錯(cuò)怎么解決?
如何修復(fù)IR版本與OpenVINO?工具套件版本不匹配問題?
已安裝OpenVINO?工具套件,無法運(yùn)行是怎么回事?
將英特爾?獨(dú)立顯卡與OpenVINO?工具套件結(jié)合使用時(shí),無法運(yùn)行推理怎么解決?
C#集成OpenVINO?:簡化AI模型部署

英碼科技EA500I基于昇騰Mind SDK實(shí)現(xiàn)實(shí)時(shí)人體關(guān)鍵點(diǎn)檢測

英碼科技EA500I基于昇騰Mind SDK實(shí)現(xiàn)實(shí)時(shí)人體關(guān)鍵點(diǎn)檢測

評論