人體姿態評估技術的開發與實現
譯文【51CTO.com快譯】根據有關研究報告,到2022年,數字健身市場的規模預計將達到274億美元。如果有人告訴您:有某種技術能夠取代健身教練的話,那么他一定指的是3D人體姿勢估計(Human Pose Estimation)技術。作為數字健身中一種相對較新、但發展迅速的技術,它能夠利用用戶輸入的體能練習視頻,以自動化的方式,分析他們的各項運動參數指標。下面,我將基于自己的實現經驗,和您討論如何為AI健身領域開發和實現3D人體姿勢估計的應用。
什么是人體姿勢估計?
作為一種基于計算機視覺的技術,人體姿勢估計可以通過人體建模,來檢測和分析人體的各種動作與姿勢。此類技術通常包含如下三種人體模型:
- 基于骨骼的模型 - 由一組關節(關鍵點)組成,例如腳踝、膝蓋、肩膀、肘部、手腕和四肢的姿勢。這些組成了人體的骨骼結構。鑒于其靈活性,此類模型可用于2D和3D人體姿勢估計技術。
- 基于輪廓的模型 - 由人體軀干和四肢輪廓的粗略寬度組成,其中人體部位是以輪廓的邊界和矩形呈現的。
- 基于體積的模型 - 由3D人體形狀和姿勢組成。這些姿勢由具有幾何網格和形狀的體積模型,通過3D掃描而捕獲。
來源--https://arxiv.org/pdf/2006.01423.pdf
下面,我將主要討論由2D或3D視角檢測到的、基于骨骼的模型。其中:2D姿態估計的檢測和分析是基于RGB圖像中人體關節的X、Y坐標;而3D姿勢估計則檢測和分析的是X、Y、Z坐標。通常,對于健身應用而言,最好使用3D估計,來更加精確地分析體育運動中的人體姿勢。因此,AI健身教練類App的基本流程是:
1. 捕捉用戶練習時的動作
2. 分析運動表現的正確性
3. 在用戶界面上顯示錯誤
下面,我們來討論一下3D人體姿勢估計技術是如何檢測人體關鍵點的:
如上圖所示,該過程首先要提取人體的關節,然后通過深度學習算法分析人體的姿勢。如果人體姿勢估計系統使用視頻記錄作為數據源的話,就需要從一系列實際動作的幀,而不是單個穩定姿勢的圖片中檢測關鍵點(即:關節位置),以獲取更高的準確性。
雖然目前有多種方法可以用來開發3D人體姿勢估計系統,但是,我們最常用的還是通過訓練深度學習模型,從給定的圖像/幀中提取3D或2D關鍵點。我們將對如下視頻采用具有時空卷積的卷積神經網絡(convolutional neural networks,CNN)進行分析。
來源--https://github.com/facebookresearch/VideoPose3D/blob/master/images/convolutions_anim.gif
通過對現有模型的分析,我們發現VideoPose3D是健身類應用的合適選擇。它能夠從輸入中將COCO 2017數據集用作預訓練的2D檢測器,以檢測出一組2D關鍵點。同時,為了準確地預測特定關節的位置,它會處理在不同時間段捕獲到的多個幀中的視覺數據。
如何在AI健身教練App中使用人體姿勢評估
假設我們的目標是:讓系統能夠對給定的輸入視頻進行檢查,以發現是否存在著常見的動作錯誤。也就是說,該應用需要將輸入的視頻,與專業運動員相同示范動作的參考視頻進行比較。下面,我們來討論其具體處理流程:
1.根據動作的開末來剪切輸入視頻
對于起點和終點的標注,我們可以使用任意閾值,來自動檢測身體控制點的位置。例如:在下蹲時,我們可以檢測手臂的角度和手的高度位置,然后通過使用任意閾值(arbitrary thresholds),來比對捕獲到的練習動作的起點和終點(如下圖所示)。
視頻來源--https://www.youtube.com/watch?v=M-qAx0yGK9w
當然,我們也可以使用另一種方法:要求用戶刻意示意他們動作的開始和結束。
2.檢測用戶身體上的2D和3D關鍵點
根據上述檢測到的始末點,算法會自動將其對應轉換為2D和3D關鍵點。
3.練習階段的分解
提取關鍵點(關節)位置的過程中,我們需要將其與參考視頻的位置進行比較。由于用戶實際的動作速度,與參照視頻中專業運動員的動作速度有所差異,因此我們無法進行直接比較。
針對此類差異,我們可以通過將練習動作分解為多個階段予以解決。如下圖所示,下蹲練習可被分為下蹲和站起,兩個主要階段。
來源--stronglifts.com
接著我們可以通過逐幀分析的方式,從輸入視頻中檢測到的關鍵點,然后通過動作標準,將它們逐個與參考視頻中的關鍵點進行比較,以完成分解。
4.搜索常見錯誤
在完成了3D關鍵點的檢測,以及練習階段的分解后,我們便可以在輸入的視頻中檢測練習動作中的常見錯誤了。如下圖所示,在該用戶下蹲時,我們檢測到其腿部是向外彎曲,而不是筆直的。同時,他的膝蓋應當比雙腳更靠近軀干。
視頻來源--https://www.youtube.com/watch?v=W73Mc0Gil9A&t=244s
5.將輸入視頻與參考視頻進行逐幀比較
為了更加精準地糾正用戶的動作,我們需要通過如下分步流程,將輸入視頻與參考視頻進行逐幀比較:
1) 通過減慢或快進參考視頻,使其與輸入視頻的進度相匹配。
2) 將用戶和專業運動員的骨骼模型對齊,使他們旋轉的角度和對照點相匹配。
3) 由于參考視頻和輸入視頻可能是從不同的距離拍攝的,因此我們需要合并或歸一化兩套骨骼。
4) 通過逐幀比較關鍵點,以檢測并發現動作的不一致性。
5) 對不同的關節處(如:腳、膝蓋、手、肘等位置)分別重復執行上述流程。
6.顯示結果并為用戶生成建議
當整個分析周期完成后,用戶需要獲得以不同格式顯示的結果。例如,輸出結果可以包括帶有錯誤提示信息的各種交互式3D重建,以便用戶可以對某個動作細節進行放大、縮小、后退、前進或暫停。當然,輸出結果也可以收集和顯示有關某些動作的統計信息,例如:重復的次數、單次循環動作的平均速度、以及持續時間等。
下圖便是基于視頻的3D人體姿勢估計系統的輸出示例:
來源--stronglifts.com的男性健康頻道
經驗總結
綜上所述,我從AI健身教練App的開發角度,描述了3D人體姿勢估計系統的基本工作原理,以及運作流程。當然,根據實際項目的具體特征,該流程可能會隨著業務需求的變化,而有所增、刪、減、改。下面是我的一些經驗總結:
- 3D人體姿勢估計可用于檢測健身練習中的動作錯誤。
- 選擇合適的2D關鍵點檢測器,對于獲得高質量3D關鍵點是至關重要的。
- 快速移動的關節,對于檢測2D關鍵點模型,以及發現錯誤是極具挑戰的。
- 預訓練的模型可能對于異常的動作和身體姿勢,無法很好地發揮作用。此時,您可能需要微調或重新訓練,讓具有特定屬性的數據,對模型進行優化。
注:本文源自https://mobidev.biz。MobiDev是一個提供技術研究和軟件開發服務經驗的網站。
原文標題:Human Pose Estimation Technology 2021 Guide,作者: Maksym Tatariants
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】