蘇 波,柴自強,王 莉
(河南理工大學電氣工程與自動化學院,河南 焦作 454000)
subo@hpu.edu.cn;18837250776@163.com;wangli@hpu.edu.cn
動作評估與反饋可有效輔助健身運動練習者提高鍛煉收益,而實現自動量化評估可以減少主觀評價帶來的誤差并節(jié)省人力資源。人體姿態(tài)估計根據獲取數據方式不同分為基于傳感器與基于圖像的方法。薛智宏等設計了原地太極拳輔助訓練系統(tǒng),通過深度相機采集的坐標計算關節(jié)角度、瞬時速度進行評估;徐言東等利用Kinect相機采集人體數據并開發(fā)了康復訓練系統(tǒng),通過運動干預來提高患者康復效果;HASEGAWA等采用慣性傳感器檢測輪椅左右軸角速度,并以此對輪椅籃球的手法進行質量評估。這些方法都依賴硬件傳感器,其設備較為昂貴,不易普及。隨著計算機視覺的發(fā)展,通過視頻圖像獲取信息更為便捷。QIAO等提出一種基于單目圖像的人體姿態(tài)分級系統(tǒng),通過計算標準與實時姿勢間的離散弗雷歇距離來進行評分;楊君等通過計算兩幅圖像中肢體關節(jié)角度偏差來進行動作對比;PARMAR等利用三維卷積神經網絡提取跳水、跳馬視頻中的時空特征,并通過支持向量回歸機(Support Vector Regression,SVR)進行分數回歸,但前者方法忽略了動作快慢因素或者只針對單幅圖像,后者深度學習方法需要大量標注數據且訓練時間長,模型泛化能力較弱。
針對上述問題,提出一種基于視覺的動作評估方法,首先采用改進OpenPose算法獲取人體關鍵點坐標位置,根據關鍵點信息計算測試動作與標準動作的相似度,以此對視頻動作進行評估。
基于深度學習的人體姿態(tài)估計方法分為自頂向下和自底向上,自頂向下是先檢測圖中的每個人,再對每個人進行關鍵點檢測,典型算法如RMPE、CPN;自底向上則先檢測圖中所有人的關鍵點,再將關鍵點分配給每個人,典型算法為OpenPose。由于后者有較好的魯棒性,因此本文采用OpenPose作為姿態(tài)檢測算法。算法流程如圖1所示,網絡結構如圖2所示。輸入圖像首先經過VGG19網絡得到深層特征,然后將特征經過多階段網絡,前四個階段用來預測人體部件親和場(Part Affinity Fields,PAFs),它是一組包含、方向的二維向量場,用于表征人體關鍵點之間的關聯度;后兩個階段用來預測人體關鍵點熱度圖(18 個Heatmaps),通過多階段的迭代來不斷細化和提純預測結果,最后通過二分匹配將關鍵點正確分配給每一個人并連接生成人體骨架圖。
圖1 OpenPose算法姿態(tài)檢測流程Fig.1 Pose detection process of OpenPose algorithm
圖2 OpenPose網絡結構Fig.2 OpenPose network structure
傳統(tǒng)OpenPose模型以VGG19作為特征提取部分,整體網絡結構深且模型參數量較大,對計算機硬件設備要求較高,很難實時檢測。因此,本文對網絡結構進行改進,更換特征提取網絡并減少預測部分的重復階段數,使模型輕量化從而提高系統(tǒng)運行速度,達到實時檢測的效果。
在自然圖像中,高頻信息構成圖像的邊緣和細節(jié),而低頻信息主要構成圖像灰度等級,對圖像結構的決定作用較小。同樣,卷積層的輸入、輸出通道也存在高、低頻分量。八度卷積OctConv的思想就是將卷積特征圖進行分頻表示,并將低頻特征圖大小減半,從而有效減少存儲和計算量。
八度卷積中的輸入、輸出通道特征以及卷積核都被分解為高頻部分X、Y、W和低頻部分X、Y、W;超參數表示低頻信息通道占比,且=。如圖3所示,高頻輸出Y=(X;W)+upsample((X;W),2),低頻輸出Y=(X;W)+(pool(X,2);W)。其中,Y是高頻輸入X卷積得到的部分高頻輸出,由于低頻與高頻通道尺寸不同,另一部分高頻輸出Y需要低頻輸入X先卷積再進行二倍上采樣后得到,最后兩者融合得到整體高頻輸出Y。同理,Y為Y與Y的融合,其中高頻輸入到低頻輸出先進行平均池化再卷積。這些融合過程保證了高頻與低頻特征之間的信息交換,目的是進一步優(yōu)化最后的高頻輸出。
圖3 八度卷積運算流程Fig.3 Octave convolution operation procedure
以深度可分離卷積為核心的移動端輕量級網絡MobileNet,是將一個標準卷積操作分成了逐通道卷積(Depthwise,DW)和逐點卷積(Pointwise,PW),相比于VGGNet,在精度上略微降低但模型參數量大幅減少,運算成本更低。因此,本文將八度卷積與MobileNet進行有機結合,結構設計如圖4所示。為了得到與VGG19輸出相同的維度特征,只選用MobileNet V1的前十層并加入兩層降維卷積,將所有深度可分離卷積里的DW卷積和PW卷積融入OctaveConv模塊,使網絡進一步降低參數量,在減少低頻信息冗余的同時更注重高頻信息,使提取的深層特征中包含更多有效信息。網絡具體參數如表1所示,其中第一層卷積為普通卷積,第二層開始為深度可分離卷積,并且在第一個OctaveConv模塊中設置=0、=0.5,即關閉低頻輸入通道,只保留由高頻輸入產生的兩條路徑;最后一個OctaveConv模塊設置=0.5、=0,關閉低頻輸出通道,使多頻特征表示恢復成正常大小的高頻特征;中間的模塊則設置==0.5,保證提升精度與降低參數兩者平衡。
圖4 Oct-MobileNet網絡結構Fig.4 Oct-MobileNet network structure
表1 Oct-MobileNet網絡參數Tab.1 Oct-MobileNet network parameters
本文將Oct-MobileNet作為改進OpenPose的主干特征提取網絡,改進結構如圖5所示。在外部結構上,將原來四個階段PAFs預測減至三個階段,預測Heatmaps減至一個階段,降低整體冗余。在內部細節(jié)中,原先預測PAFs與Heatmaps中前五個卷積塊是由三個3×3標準卷積構成的,現將第一個3×3卷積變?yōu)?×1卷積,第三個3×3卷積變?yōu)榕蛎浵禂禐?的空洞卷積,使其保留與原先相同的感受野并進一步降低卷積核參數量;五個卷積塊依次連接,塊內的卷積再殘差相連,使整體獲得增大感受野,提升捕獲遠程信息的能力。
圖5 改進OpenPose模型結構Fig.5 Improved OpenPose model structure
為了驗證八度卷積對深層特征及預測階段效果是否產生增益,對改進OpenPose特征提取階段、預測階段PAFs 3及Heatmaps 1進行特征可視化,分析Oct-MobileNet與普通MobileNet的效果。如圖6所示,融合了八度卷積的MobileNet網絡提取的深層特征對人體輪廓這些高頻特征分量更重視,對其他低頻分量則起到抑制作用,證明了八度卷積模塊融入深度可分離卷積可以產生互補,對后續(xù)預測階段的效果也能帶來進一步的提升。
圖6 特征可視化對比效果Fig.6 Comparison effect of feature visualization
實驗在Windows 10系統(tǒng)下進行,深度學習框架為Pytorch,硬件配置為:Inter Core i7-9750H CPU @3.20 GHz,GPU為RTX2060,顯存6 GB,RAM為8 GB。訓練與測試采用COCO2017數據集,實驗中模型優(yōu)化器為Adam,訓練迭代次數為3×10次,學習率為4×10。實驗對比結果如表2所示,其中前兩行為原論文中的數據,mAP代表模型的檢測精度;FLOPs是卷積時發(fā)生的浮點運算次數,代表模型的計算量,且1×GFLOPs=10×FLOPs。
表2 消融實驗對比Tab.2 Comparison of ablation experiments
從表2可以看出,在預測PAFs和Heatmaps的階段數目分別為3和1時,本文提出的改進OpenPose精度比原模型下降了1.2%,但Oct-MobileNet計算量GFLOPs僅有VGG19的12%左右。模型檢測速度如圖7所示,改進后的檢測幀率為30 fps左右,滿足實時性需求且檢測效果較好。
圖7 改進前后檢測幀率對比Fig.7 Comparison of detection frame rate before and after improvement
本文提出的動作評分方法首先通過OpenPose檢測出人體關鍵點坐標,再用坐標信息表征人體運動姿態(tài),改進后的模型可以對視頻進行實時檢測,滿足算法需求。實驗數據為網上下載的《健身氣功八段錦》標準教學視頻以及個人練習動作視頻,以此來進行算法驗證。
由于動作練習者有不同的身高體型,也可能站在鏡頭不同位置,為了便于分析計算,對檢測到的關鍵點坐標進行預處理。模型輸出為人體18 個關鍵點的坐標(x,y),∈[0,17],這些點的坐標可以用來創(chuàng)建一個最小邊界框,將圖片中的人包圍起來,如圖8所示,從而建立一個新的坐標系,解決了動作練習者出現在畫面不同位置的問題。新坐標系下關鍵點位置計算方式如式(1)所示,其中(,)表示邊界框的左下角端點位置。
圖8 坐標預處理流程Fig.8 Coordinate preprocessing process
由于頭部在運動過程中變化幅度較小,對動作整體影響不大,故計算過程中去除耳鼻眼等五個關鍵點,保留頸部與四肢共13 個關鍵點來構成向量。對于視頻中某一幀的動作,可將預處理后的關鍵點坐標按順序表示成一個高維向量=[,,...,]。其中—為13 個關鍵點位置坐標,那么某兩幀的動作與動作的相似度便可轉化為兩個向量和之間的相似度。由于練習者距離鏡頭遠近發(fā)生變化會導致向量單位大小不一致,因此對各向量進行L2范數歸一化,以保證結果的準確性。
分析特征向量之間的相似性時,通常采用余弦相似度或余弦距離來表示,計算方法如式(2)、式(3)所示。將標準動作生成的向量作為基準向量,計算出基準向量與練習動作生成的向量的余弦相似度,其值越大,對應余弦距離越小,代表動作越相似。
由于每個人的動作快慢不同,導致做相同動作的耗時不同,最后得到的向量序列長度也不一致。對于評估序列相似性問題,一般采用歐式距離和DTW(Dynamic Time Warping)距離,歐氏距離計算的是同一時刻兩組序列對應點的直接距離,難以有效計算不同長度的序列相似度;而DTW算法允許擠壓或拉伸時間來計算兩組時間序列在最佳對齊時的最小距離,如圖9所示。
圖9 DTW算法原理圖Fig.9 Principle diagram of DTW algorithm
設時間內,視頻與的幀數分別為和,那么兩組視頻中的人體動作可表征為序列=[,,...,m,...,m],=[,,...,n,...,n],其中m、n為某一幀的關鍵點坐標構成的向量。由式(4)、式(5)可求出兩序列之間的距離:
其中,(,)表示m與n之間的余弦距離,(,)則表示序列前個點與序列前個點的總距離,即等于當前點距離(,)與可以到達該點最小鄰近元素的累積距離之和,衡量的是整體相似度。最后,通過式(6)轉化為最后得分,式中表示序列與序列的DTW距離即(,),為相似度最低時的余弦距離。
如圖10所示,以《健身氣功八段錦》視頻中的“左右開弓似射雕”動作為例,圖10(a)為專家標準動作,將其設定為模板序列;圖10(b)為測試動作序列1;圖10(c)為另一專家動作序列,設為測試動作序列2。其中圖10(a)序列與圖10(c)序列動作規(guī)范且相似度較高,而圖10(b)動作序列規(guī)范性較差。用本文提出的評分算法計算結果如表3所示,其中序列圖10(c)得分高且與模板圖10(a)的幀數接近,代表各自在動作規(guī)范性及速度上都相似,序列圖10(b)動作較不規(guī)范且速度過快,因此評分也相應較低。
表3 視頻序列相似度得分計算結果Tab.3 Calculation results of video sequence similarity scores
圖10 八段錦動作序列樣本Fig.10 Action sequence samples of Baduanjin
將三組視頻中人體某一關鍵點位移軌跡進行可視化,如圖11所示,其中曲線(a)、(c)的走勢相同,可以看作是相互平移所得,代表兩者動作相似度較高;而曲線(b)與模板(a)有類似的趨勢,但動作幅度不到位,導致曲線整體相似度較差。由此,進一步驗證了本文算法的有效性。
圖11 右膝x坐標變化曲線Fig.11 x coordinate curve of right knee
本文提出了以Oct-MobileNet為主干的改進OpenPose網絡,對原網絡結構進行了優(yōu)化。實驗結果表明,改進后的模型在精度略微減少的情況下模型計算量大幅減少,視頻檢測幀率達30 fps,滿足后續(xù)動作評分系統(tǒng)的實時性需求。
本文將OpenPose得到的關鍵點位置進行歸一化并構成高維向量,用向量表示人體姿態(tài)。以八段錦招式為例,通過計算模板動作和練習動作之間向量的余弦距離來表示每一幀動作的相似度,最后采用DTW算法計算視頻動作的整體相似度并轉化為最后得分。實驗表明,本文提出的基于改進OpenPose的動作評分方法無須大量樣本訓練即可實現。算法在復雜度和速度上有較大優(yōu)勢,并且評價結果與實際情況吻合,在體育運動、健身鍛煉等方面具有一定的應用價值。未來工作將關注在算法中加入更多評判條件及反饋信息,進一步完善動作評估系統(tǒng)的功能。