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