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