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

評論