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