許 誠, 金慶紅
(安徽工程大學體育學院,安徽蕪湖241000)
人體姿勢識別是幫助學習并理解人體動作與行為的主要方式,通過人體姿勢識別可實現對人體運動分析和動作信息的保存.如在舞蹈動作教學過程中,學生或教練可通過人體姿勢識別結果對動作進行規范;對于少數民族舞蹈,人體姿勢識別還可獲取舞蹈動作的關鍵信息并進行保存,降低舞蹈在傳承過程中消失的風險.目前,人體姿勢識別主要流程包括數據獲取及預處理、人體特征提取與構造、動作識別三個步驟.其中,人體特征的提取構造是決定人體姿勢識別的關鍵,但目前的特征提取和構造方法通常存在精度低的問題,包括基于底層特征跟蹤方法和基于語義的方法等.如石艷嬌[1]、蔣峰嶺[2]基于底層特征跟蹤方法通過對復合運動特征進行分析,有效檢測并預測到視頻中的異常事件;朱江[3]、王麗萍[4]等基于語義特征,通過對有限樣本條件下欠規范手語識別容錯特征擴充,一定程度上提高了人體姿勢識別的正確性,但仍存在識別準確率不高的問題.為解決該問題,需結合人體骨骼關鍵點信息,提出一種基于骨骼關鍵點與殘差網絡的姿勢識別舞蹈動作的檢測方法.通過選取人體骨骼關鍵點特征并通過殘差塊自動動作檢測方法,實現了復雜舞蹈場景的舞蹈動作檢測.通過實驗證明,該方法可有效提取人體舞蹈動作特征信息,提高動作識別的準確率.
人體姿勢識別網絡是一種基于PAFs算法,可準確識別圖像中人體骨骼關鍵點與動作的識別算法[5].其主要流程是通過VGG19的前10層網絡進行特征提取,并送入關鍵點熱力圖分支和肢體向量分支,實現對人體姿勢的識別.該網絡基本結構如圖1所示,分支1即為關鍵點熱力圖分支,主要負責預測位置置信圖S1;分支2即為肢體向量分支,主要負責預測部件親和力場L1[6].

圖1 姿勢識別網絡結構
采用姿勢識別網絡進行迭代預測,其預測的計算方法如式(1)(2)[7]:

式中,ρ,Φ分別表示對S和L分支對應的卷積操作.為避免該網絡進行訓練時產生梯度消失問題,通常在計算過程中加入loss損失函數,如式(3)[8]:


本研究提出的基于姿勢識別的舞蹈動作檢測算法分為姿勢識別、關鍵點特征處理、動作分類三部分.首先,將輸入圖像裁剪為368*368尺寸輸入姿勢識別網絡對人體關鍵點進行識別.然后,根據人體關鍵點輪廓值利用殘差網絡檢測出人體區域.最后,通過融合關鍵點特征分類和圖像分類,即可實現舞蹈動作的分類.基于姿勢識別的舞蹈動作檢測具體流程如圖2所示,其關節點分類網絡由關鍵點特征提取、圖像分類、融合三個分支構成.

圖2 基于姿勢識別的舞蹈動作檢測流程
針對關鍵點特征分類分支,通過分析舞蹈動作特征,將其全連接層設置為6層.第1層神經元個數與姿勢識別輸出的關鍵點特征維數相同,為18個;第2層神經元個數為256;第3層至第六層的神經元個數均為512.
針對殘差塊圖像分類分支,本研究選用一個卷積層和batchnormalization層組成殘差單元,并將殘差單元進行堆疊形成殘差網絡結構.該網絡結構中,神經網絡可學習到所有函數.通過實驗表明,直接學習殘差可降低模型難度.因此,選用resnet提供的殘差單元訓練神經網絡,并在第3層和第4層之間增加了dropout層.首先將輸入圖像裁剪到368*368,heatmap和pafs大小設置為19*46*46.然后根據關鍵點輪廓值,裁剪出人體輪廓框進行resnet50訓練.
Resnet50包括4個殘差塊,預處理后的圖像尺寸為224*224,其具體訓練過程如下:
步驟1:將預處理后的圖像輸入7*7*64大小、步長為2的卷積層進行卷積,得到112*112的特征圖;
步驟2:將特征圖先后通過3*3大小、步長為2的池化窗口和三個block,每個block包括3層,第1層卷積核大小為1*1*64,第2層卷積核大小為3*3*64,第3層卷積核大小為1*1*256;
步驟3:待殘差單元經過block后,經過一個average pooling層;
步驟4:最后先后連接層數為2048和512的兩層全連接層.
針對融合動作分類,將其設計為6層全連接層網絡結構.第1層神經元個數由關鍵點特征分類和殘差塊圖像分類融合決定,為1024,第2層和第3層神經元個數為512,第4層和第5層神經元個數為256,第6層神經元個數為6.最終,基于姿勢識別的舞蹈動作檢測網絡結構如圖3.

圖3 本算法網絡整體結構
實驗在pytorch開源神經網絡上對提出的算法進行驗證.該網絡框架包含一些常用的數據集,便于進行遷移學習,其torch.nn模塊封裝損失函數,torch.optim模塊封裝優化函數.
實驗數據集來自演唱會視頻和舞蹈視頻提取的圖像幀共3485張.數據集內容包括國內外歌手、舞蹈演員等,舞臺包括各類大中小型演出平臺和白天場景、夜晚場景.首先通過姿勢識別獲取圖像關鍵點,然后計算工作特征與圖像特征,得到人物動作的單幀圖像和18維數據集.其中,人物6種動作數據,如圖4.

圖4 6種動作數據展示
隨機選取數據集中3140張圖像作為訓練集,剩余345張圖像作為測試集.訓練集和測試集具體劃分情況如圖5所示.

圖5 數據集具體劃分情況
參數的選擇對算法檢測識別舞蹈動作具有較大的影響.因此,為提高算法性能,需要通過多次實驗確定算法的最佳網絡參數,包括神經元個數、批處理尺寸等.
首先,針對神經元個數確定,采用transform.compose增強輸入圖像數據,并裁剪為256*256尺寸大小的圖像.然后先后通過隨機旋轉和水平翻轉,進行中心裁剪為224*224尺寸大小的圖像.接著,進行歸一化操作,并將融合后的人體骨骼點動作和圖像信息特征輸入融合網絡,通過姿勢識別網絡識別出人體區域和人體動作信息.最后,將識別的信息輸入resnet和posenet,并將18維特征傳輸到全連接層.因此全連接層第1層神經元個數為18.在每個線性函數后添加一個torch.relu()函數,并以0.5的比例使神經元隨機失效.
針對批處理尺寸設置,若其設置過大,會導致算法收斂速度過快;若其設置過小,則容易出現局部最優解.本實驗根據硬件環境和數據集大小,將批處理大小設置為64.
考慮到算法網絡的卷積層為relu函數,因此本實驗采用dropout降低全連接層參數,選用隨機梯度下降SGD優化器對網絡進行優化,epoch設置為30,學習率設置為0.001,每10個epoch后,學習率變為原來的1/10.
3.4.1 特征選取
通過姿勢識別可得到人體骨骼的18個關鍵點.為便于說明,對關鍵點進行編號,如圖6.通過舞蹈動作特點,選取人體關節角度、關節點相對位置、關節點關節長度比值作為本實驗人體動作.

圖6 人體骨骼關鍵點特征定義
3.4.2 特征融合
考慮到單一特征不能全面準確表達舞蹈動作,對選取的三種特征進行融合.首先將關鍵點位置轉化為人體脖子位置的相對位置,然后計算肢體向量,最后對相對位置進行歸一化處理,即實現特征的融合.
3.5.1 算法驗證
為驗證算法的有效性,將所有熱力圖進行可視化,如圖7所示.左圖為輸入圖像,中間圖為歌手骨骼關鍵點熱力圖,右圖為將歌手熱力圖進行計算后得到的最大概率關鍵點及關鍵點肢體區域.采用算法進行訓練與識別,算法在訓練集和測試集上的準確率如圖8,具體測試集上的識別準確率如表1所示.

圖7 可視化熱力圖及骨骼關鍵點

圖8 訓練集和測試集準確率

表1 識別結果
由表1可知,本研究方法在測試集上的平均識別準確率達到92%以上,整體識別準確率較高,但手臂高舉和單手揮手的識別準確率沒有達到85%.其原因是,手臂高舉和單手揮手動作相較于其他四種動作手臂的幅度較大,且單手揮手時另一只手狀態不確定,因此降低了算法識別的準確率.此外,手臂高舉和單手揮手動作會因人體與攝像機的距離遠近和拍攝角度的不同,出現一定偏差,造成識別誤差.因此,這兩種動作的識別準確率較低.另外,數據集差異也是導致本算法對手臂高舉和單手揮手識別率低的原因.舞蹈動作中,單臂張開和手臂高舉動作相較于其他動作較少,故對算法識別準確率造成一定影響.
為解決因數據集差異帶來的識別準確率低的問題,研究在進行數據集處理時,構建了上述6種舞蹈動作的混淆矩陣,如圖9,以確保每個動作數據集的數量基本相同,然后采用本算法進行識別.根據識別結果可知,6種舞蹈動作的分類準確率均達到90%以上,說明通過混淆矩陣增加手臂高舉和單手揮手動作數據集數量,可有效減少人體差異對識別結果的影響,提高識別準確率.

圖9 6種舞蹈動作混淆矩陣
3.5.2 算法比較
為驗證本算法的優越性,采用本算法與傳統識別算法殘差網絡四通道算法[9]和計算Hu矩算法[10]在測試集上進行識別測試,結果如表2所示.由表2可知,相較于對比算法,本算法準確率更高,達到92%以上,說明本算法對舞蹈動作的識別效果較為理想,具有較高的準確率.此外,經實驗時間可知,本算法在TeslaP4顯卡上的運行速率為0.75幀/s,且可識別單張圖片中的多人動作.

表2 不同算法識別準確率對比
為進一步驗證本算法的識別效率,分別在0至多個人的場景下進行測試,發現隨著圖像中的人數增加時,本算法花費的時間也逐漸增加,但只是小幅度上升.霍夫方向計算器算法(HOC)隨人數增加,運行時間線性增長,如圖10.相較而言,本研究算法運行時間基本沒有較大幅度的提升.由此說明,本算法效率更高,算法性能更好.

圖10 HOC算法效率
綜上所述,本研究設計的基于姿勢識別的舞蹈動作檢測方法,通過結合骨骼關鍵點信息和殘差網絡可對復雜場景下的舞蹈動作自動檢測,識別準確率達到92%以上,相較于傳統舞蹈動作識別方法殘差網絡四通道算法和計算Hu矩算法,本算法的識別準確率最高,且算法的識別效率幾乎不受圖像中人物多少的影響;相較于HOC算法,本算法的識別效率更快,可滿足實際舞蹈動作檢測需求,具有一定借鑒意義.