楊 磊 李英祥 張洪波
(成都信息工程大學(xué)通信工程學(xué)院,四川 成都 610225)
體能測(cè)試是監(jiān)測(cè)在校學(xué)生身體健康的重要手段,目前主要通過(guò)體育老師人工進(jìn)行評(píng)估和計(jì)數(shù),存在效率低下和標(biāo)準(zhǔn)難以準(zhǔn)確執(zhí)行等問(wèn)題。因此,本文旨在設(shè)計(jì)基于深度學(xué)習(xí)的體能測(cè)試評(píng)估與計(jì)數(shù)算法。在本算法中,需要對(duì)體能測(cè)試視頻中人物的關(guān)節(jié)點(diǎn)進(jìn)行檢測(cè)、運(yùn)動(dòng)類型進(jìn)行識(shí)別,并針對(duì)不同的運(yùn)動(dòng)制定評(píng)價(jià)標(biāo)準(zhǔn),判斷有效運(yùn)動(dòng)并計(jì)數(shù),以提高體能測(cè)試的檢測(cè)效率與準(zhǔn)確度。
當(dāng)前,國(guó)內(nèi)外學(xué)者對(duì)人體運(yùn)動(dòng)姿態(tài)識(shí)別與分析方法進(jìn)行了一定程度的研究。滿蔚仕等[1]采用一種通過(guò)雷達(dá)回波模型和同步擠壓小波變換(SSTAP)方法獲得人體主要部位的特征,再通過(guò)同步擠壓小波變換獲得人體回波信號(hào)并解析為運(yùn)動(dòng)姿態(tài)信息。張永強(qiáng)[2]設(shè)計(jì)了一種基于Hu不變矩陣特征優(yōu)化的人體運(yùn)動(dòng)姿態(tài)識(shí)別算法,提取連續(xù)二維圖像的7個(gè)Hu不變舉證,并輸入到SVM中訓(xùn)練最終完成對(duì)運(yùn)動(dòng)姿態(tài)識(shí)別。Gao L等[3]設(shè)計(jì)了一種無(wú)線穿戴運(yùn)動(dòng)捕捉系統(tǒng),通過(guò)姿態(tài)數(shù)據(jù)庫(kù)中的姿態(tài)信號(hào)特征序列和后續(xù)三層識(shí)別算法精確地識(shí)別各種運(yùn)動(dòng),但是硬件成本太高。Zhao L等[4]采用慣性傳感器技術(shù)對(duì)籃球運(yùn)動(dòng)中的運(yùn)球、傳球、接球和投籃4種姿勢(shì)進(jìn)行識(shí)別。Thar M C等[5]基于Openpose對(duì)關(guān)節(jié)信息進(jìn)行檢測(cè),并計(jì)算與標(biāo)準(zhǔn)動(dòng)作之間的差距,從而完成對(duì)瑜伽的自學(xué)訓(xùn)練,但是該方法應(yīng)用場(chǎng)景較為單一。綜上所述,大部分研究基于傳統(tǒng)方法和深度學(xué)習(xí)模型,存在成本較高、準(zhǔn)確率低和檢測(cè)速度較慢等問(wèn)題。
針對(duì)上述問(wèn)題,本文設(shè)計(jì)了基于輕量級(jí)的深度學(xué)習(xí)網(wǎng)絡(luò)的體測(cè)識(shí)別與計(jì)數(shù)算法,有效改善了體測(cè)運(yùn)動(dòng)識(shí)別與計(jì)數(shù)效率與準(zhǔn)確率問(wèn)題。該算法結(jié)構(gòu)如圖1所示,輸入為視頻中的每幀RGB圖像,主要包括姿態(tài)估計(jì)、分類網(wǎng)絡(luò)和計(jì)數(shù)3個(gè)主要模塊。姿態(tài)估計(jì)模塊能夠?qū)D像中的人物關(guān)節(jié)點(diǎn)進(jìn)行檢測(cè)和追蹤,輸出為視頻中每個(gè)人物的關(guān)節(jié)點(diǎn)坐標(biāo)時(shí)域信息;分類網(wǎng)絡(luò)能夠根據(jù)圖像中人物的動(dòng)作進(jìn)行運(yùn)動(dòng)識(shí)別;計(jì)數(shù)模塊結(jié)合上述模塊的計(jì)算結(jié)果與運(yùn)動(dòng)評(píng)價(jià)標(biāo)準(zhǔn)完成對(duì)視頻中體測(cè)運(yùn)動(dòng)的有效判斷與計(jì)數(shù)。
Openpose作為一種自底向上的姿態(tài)估計(jì)方法,在諸多領(lǐng)域得到了廣泛的應(yīng)用。本文采用Daniil Osokin[6]提出的一種對(duì) Openpose改進(jìn)的姿態(tài)估計(jì)網(wǎng)絡(luò)——lightweight-openpose作為姿態(tài)估計(jì)模塊的基本框架。在該網(wǎng)絡(luò)結(jié)構(gòu)中,首先將輕量級(jí)的網(wǎng)絡(luò)Mobilenet作為特征提取網(wǎng)絡(luò)。在后續(xù)的網(wǎng)絡(luò)中,Heatmap和PAFs預(yù)測(cè)采用公用的網(wǎng)絡(luò)結(jié)構(gòu),在最后兩層中,分別完成對(duì)Heatmap和PAF的預(yù)測(cè)。同時(shí),將Openpose網(wǎng)絡(luò)中7×7的卷積核替換成兩個(gè)3×3的卷積核,這樣既大幅減少了網(wǎng)絡(luò)的參數(shù),同時(shí)也具有相同的感受野[7],最后在3×3卷積塊中加入了殘差結(jié)構(gòu),以解決網(wǎng)絡(luò)變深帶來(lái)的影響。網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖2所示。
本文根據(jù)體能測(cè)試計(jì)數(shù)實(shí)際應(yīng)用場(chǎng)景做了如下的改進(jìn):(1)通過(guò)計(jì)算相鄰幀所有關(guān)節(jié)組的相似度,對(duì)視頻中多個(gè)人物進(jìn)行區(qū)分與追蹤;(2)對(duì)由于遮擋導(dǎo)致關(guān)節(jié)檢測(cè)不全的情況進(jìn)行優(yōu)化;(3)減少模型無(wú)效關(guān)節(jié)點(diǎn)和區(qū)域的計(jì)算。
在體能測(cè)試計(jì)數(shù)的場(chǎng)景下,常常會(huì)多人出現(xiàn)在一張圖像中的情況。為便于后續(xù)流程對(duì)關(guān)節(jié)信息逐幀、逐人的分析,本文設(shè)計(jì)了人物追蹤算法[8]。如果一張圖片中存在多個(gè)人,即多個(gè)姿態(tài)(關(guān)節(jié)點(diǎn)組)的時(shí)候,會(huì)遍歷上一幀中的所有姿態(tài)信息,對(duì)每一個(gè)姿態(tài)中的所有關(guān)節(jié)進(jìn)行相似度計(jì)算。如果相似關(guān)節(jié)數(shù)大于閾值,即認(rèn)為這相鄰兩幀的姿態(tài)屬于同一個(gè)人。相鄰幀中的兩個(gè)姿態(tài)的相似度計(jì)算公式如下:
式中,d為兩個(gè)姿態(tài)所有關(guān)節(jié)點(diǎn)距離之和,a為兩個(gè)姿態(tài)框面積的最大值,n為關(guān)節(jié)點(diǎn)個(gè)數(shù),ε為一個(gè)較小的實(shí)數(shù),其中:
在體能測(cè)試場(chǎng)景中,由于障礙物或者拍攝角度的問(wèn)題,視頻圖像中的人物往往存在部分關(guān)節(jié)不全或者重疊的問(wèn)題,導(dǎo)致模型無(wú)法對(duì)關(guān)節(jié)進(jìn)行有效的預(yù)測(cè),對(duì)后續(xù)運(yùn)動(dòng)分析模塊造成較大的影響。對(duì)于上述問(wèn)題,文中采用人體測(cè)量學(xué)的方法對(duì)漏檢的人體進(jìn)行補(bǔ)全[9]。具體方法為:對(duì)于身體對(duì)稱部位,只需要獲取其中一半的身體部位關(guān)節(jié)點(diǎn)即可通過(guò)以身體中軸線映射獲取另一半關(guān)節(jié)的坐標(biāo)信息;對(duì)于其他特殊部位,如鼻子,其坐標(biāo)應(yīng)該位于兩肩中點(diǎn)的延長(zhǎng)線上,長(zhǎng)度可以通過(guò)其他可見(jiàn)的幀進(jìn)行獲取。改進(jìn)效果如圖3所示。
原始模型共有18個(gè)關(guān)節(jié)點(diǎn),但是在體能測(cè)試計(jì)數(shù)的場(chǎng)景中,部分頭部關(guān)節(jié)點(diǎn)的坐標(biāo)信息沒(méi)有實(shí)際作用,反而加重了整個(gè)模型的運(yùn)算負(fù)擔(dān)[10]。因此,將原始模型的關(guān)節(jié)點(diǎn)刪減,部位包括左右耳朵、左右眼睛和脖子,以減輕模型的計(jì)算負(fù)擔(dān)。
同時(shí)注意到在體能測(cè)試的場(chǎng)景中,可能會(huì)出現(xiàn)意外入鏡的人物,原始模型往往會(huì)對(duì)其進(jìn)行檢測(cè),但這卻是無(wú)效的計(jì)算,因此需要拋棄。在改進(jìn)的模型中,基于檢測(cè)到的姿態(tài)對(duì)象,會(huì)生成一個(gè)檢測(cè)框?qū)傩?該屬性是包含所有關(guān)節(jié)點(diǎn)的最小面積的長(zhǎng)方形框。為避免對(duì)無(wú)效區(qū)域的計(jì)算,對(duì)檢測(cè)框區(qū)域面積所占比例小于整體圖像的檢測(cè)區(qū)域進(jìn)行舍棄,從而進(jìn)一步減少模型的計(jì)算量。模型改進(jìn)效果對(duì)比如圖4所示。
針對(duì)常見(jiàn)的4種體能測(cè)試運(yùn)動(dòng):引體向上、俯臥撐、下蹲和仰臥起坐制作數(shù)據(jù)集。數(shù)據(jù)集圖片的來(lái)源包括bilibili、youtube、騰訊視頻等視頻網(wǎng)站;百度圖片、必應(yīng)圖片、谷歌圖片及搜狗圖片的搜索引擎,通過(guò)爬蟲和視頻取幀等技術(shù)獲取運(yùn)動(dòng)圖片。該數(shù)據(jù)集共有4個(gè)分類、6160張圖片,隨機(jī)分配測(cè)試集和訓(xùn)練集的比例為3∶7,部分?jǐn)?shù)據(jù)集如圖5所示。
由于不同的體測(cè)運(yùn)動(dòng)具有不同的評(píng)判和計(jì)數(shù)標(biāo)準(zhǔn),因此運(yùn)動(dòng)視頻或者圖片需要輸入到分類網(wǎng)絡(luò),對(duì)運(yùn)動(dòng)種類進(jìn)行預(yù)測(cè)[11]。考慮到實(shí)際場(chǎng)景中,改變運(yùn)動(dòng)類型的時(shí)間間隔普遍較長(zhǎng),因此采取抽樣的策略進(jìn)行預(yù)測(cè)。根據(jù)上述功能需求,選擇了常見(jiàn)的分類網(wǎng)絡(luò),包括ResNet、MobileNet[12]等。首先,對(duì)各個(gè)原始網(wǎng)絡(luò)在數(shù)據(jù)集上進(jìn)行訓(xùn)練,但是預(yù)測(cè)準(zhǔn)確率表現(xiàn)不佳。因此,對(duì)訓(xùn)練過(guò)程做如下優(yōu)化:(1)對(duì)數(shù)據(jù)進(jìn)行批量正則化(batch normalization)處理,目的是使一批輸入圖像的Feature Map滿足均值為0、方差為1的分布規(guī)律,加速網(wǎng)絡(luò)的收斂并提升準(zhǔn)確率[13];(2)在訓(xùn)練過(guò)程中使用遷移學(xué)習(xí)[14]的方法,通過(guò)官方提供的ImageNet數(shù)據(jù)集上的預(yù)訓(xùn)練模型,使在較少的數(shù)據(jù)集上得到更好的準(zhǔn)確率。通過(guò)訓(xùn)練與測(cè)試,經(jīng)過(guò)上述對(duì)訓(xùn)練過(guò)程的改進(jìn),各個(gè)網(wǎng)絡(luò)的預(yù)測(cè)精度均提升了5%~8%。
在體能測(cè)試和日常訓(xùn)練中,如果關(guān)鍵關(guān)節(jié)或肢體伸展不夠,不僅不能達(dá)到預(yù)期的鍛煉效果,而且在體能測(cè)試過(guò)程中不能算作有效運(yùn)動(dòng)。因此,體能測(cè)試與計(jì)數(shù)模塊需要對(duì)視頻中人物的運(yùn)動(dòng)有效性進(jìn)行判斷,并記錄有效的運(yùn)動(dòng)次數(shù)。具體方法為:根據(jù)姿態(tài)估計(jì)網(wǎng)絡(luò)獲得運(yùn)動(dòng)中各個(gè)關(guān)節(jié)坐標(biāo)的時(shí)域信息,并以此計(jì)算各個(gè)關(guān)鍵肢體彎曲角度的時(shí)域信息,從而判斷關(guān)鍵部位的伸展情況,計(jì)算有效的運(yùn)動(dòng)次數(shù),并通過(guò)圖表的方式進(jìn)行可視化。本文涉及的4種運(yùn)動(dòng)及其評(píng)價(jià)方式為:俯臥撐需要關(guān)注手臂和臀部的彎曲角度;引體向上通過(guò)手臂拉伸角度判斷是否有效完成運(yùn)動(dòng);仰臥起坐通過(guò)整個(gè)身體在臀部的彎曲程度判斷是否有效運(yùn)動(dòng);下蹲運(yùn)動(dòng)需要膝蓋處角度判斷是否下蹲到位。計(jì)算公式如表1所示,其中∠elb、∠hip和∠kne分別代表手肘、臀部和膝蓋的角度,θ和α代表允許的誤差范圍。

表1 各運(yùn)動(dòng)評(píng)價(jià)標(biāo)準(zhǔn)
在人物追蹤算法實(shí)驗(yàn)過(guò)程中,關(guān)鍵點(diǎn)在于對(duì)參數(shù)θ、N的選擇。其中,θ為某相鄰幀、同一個(gè)關(guān)節(jié)的相似程度,而N代表相似關(guān)節(jié)的個(gè)數(shù)。實(shí)驗(yàn)選擇 lightweight-openpose官方提供的預(yù)訓(xùn)練目標(biāo)檢測(cè)模型,對(duì)視頻中圖像進(jìn)行關(guān)節(jié)點(diǎn)預(yù)測(cè)與人物追蹤,并對(duì)保存的幀圖像進(jìn)行驗(yàn)證。實(shí)驗(yàn)發(fā)現(xiàn),錯(cuò)誤的參數(shù)設(shè)置可能導(dǎo)致將單個(gè)人檢測(cè)成多人的情況。θ、N的選擇與人物追蹤錯(cuò)誤率如表2所示,由表可見(jiàn)當(dāng)θ=0.5,N=3時(shí)算法有最佳的表現(xiàn)。

表2 θ、N選擇對(duì)于人物追蹤的正確率影響
基于上述改進(jìn)的模型,繼續(xù)對(duì)關(guān)節(jié)點(diǎn)數(shù)量和對(duì)無(wú)效檢測(cè)區(qū)域進(jìn)行優(yōu)化,對(duì)頭部無(wú)效計(jì)算的耳朵、眼睛和脖子等關(guān)節(jié)點(diǎn)進(jìn)行刪減。無(wú)效檢測(cè)區(qū)域的比例設(shè)置為10%,實(shí)驗(yàn)圖片數(shù)量為1000張,平臺(tái)為NVIDIA GTX 1080 GPU,模型單幀平均耗時(shí)如表3所示,改進(jìn)模型在運(yùn)行速度上提升了17.6%,達(dá)到約36幀/秒。

表3 姿態(tài)估計(jì)模型改進(jìn)前后耗時(shí) 單位:s
運(yùn)動(dòng)識(shí)別模塊使用Pytorch框架搭建分類網(wǎng)絡(luò),包括ResNet和MobileNet家族常用網(wǎng)絡(luò),數(shù)據(jù)集采用自制數(shù)據(jù)集,共6160張圖片,隨機(jī)分配驗(yàn)證集和訓(xùn)練集,比例為3∶7。訓(xùn)練過(guò)程中,對(duì)數(shù)據(jù)的預(yù)處理包括:(1)隨機(jī)剪裁至大小為224×224;(2)以概率為0.5隨機(jī)水平旋轉(zhuǎn)[14];(3)歸一化處理。訓(xùn)練平臺(tái)為Nvidia GTX 1080 GPU,遷移學(xué)習(xí)預(yù)訓(xùn)練模型采用Pytorch官網(wǎng)提供的模型,batch_size設(shè)置為16,優(yōu)化器選擇Adam優(yōu)化器,損失函數(shù)選擇交叉熵?fù)p失函數(shù),模型的平均運(yùn)行速度如表4所示,各個(gè)網(wǎng)絡(luò)在該分類任務(wù)上的精度如表5所示。

表4 各個(gè)模型運(yùn)行速度 單位:s

表5 各個(gè)模型在驗(yàn)證集上的準(zhǔn)確率
從表5可以看出,由于數(shù)據(jù)集的限制,各個(gè)模型在驗(yàn)證集上的準(zhǔn)確率均不高,但是通過(guò)遷移學(xué)習(xí)和正則化預(yù)處理的方法提高準(zhǔn)確率約5%~8%。其中MobileNet_v3_large的準(zhǔn)確率最高,達(dá)到了94.49%。但是結(jié)合表4中各個(gè)模型的平均運(yùn)行速度,在實(shí)際應(yīng)用中選擇MobileNet_v2作為運(yùn)動(dòng)識(shí)別預(yù)測(cè)模型。
采用各個(gè)視頻網(wǎng)站收集和現(xiàn)場(chǎng)錄制的體能測(cè)試運(yùn)動(dòng)視頻片段作為輸入,依次通過(guò)姿態(tài)估計(jì)網(wǎng)絡(luò)和運(yùn)動(dòng)識(shí)別網(wǎng)絡(luò),結(jié)合有效計(jì)數(shù)標(biāo)準(zhǔn),通過(guò)圖表分析關(guān)鍵肢體角度的時(shí)域信息,并計(jì)算峰值濾除無(wú)效運(yùn)動(dòng)最終完成計(jì)數(shù),部分實(shí)驗(yàn)結(jié)果如圖6所示。實(shí)驗(yàn)過(guò)程中,誤差范圍θ設(shè)置為10°,并進(jìn)行重復(fù)實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果與人工計(jì)數(shù)結(jié)果進(jìn)行對(duì)比,得到體能測(cè)試計(jì)數(shù)算法的準(zhǔn)確率如表6所示。

表6 4類體能測(cè)試計(jì)數(shù)準(zhǔn)確率
由圖6可知,本算法能對(duì)4種常見(jiàn)的體能測(cè)試運(yùn)動(dòng)進(jìn)行有效性區(qū)分并準(zhǔn)確計(jì)數(shù)。在圖6(d)中,由于下蹲程度不夠,導(dǎo)致部分運(yùn)動(dòng)未進(jìn)行計(jì)數(shù)。從表6可以看到,體能測(cè)試算法平均準(zhǔn)確率達(dá)到了95%。但是,由于仰臥起坐運(yùn)動(dòng)中未對(duì)手臂和腿等關(guān)節(jié)進(jìn)行計(jì)算,導(dǎo)致計(jì)數(shù)錯(cuò)誤率較高。
本文提出的體能測(cè)試計(jì)數(shù)方法解決了人工計(jì)數(shù)標(biāo)準(zhǔn)難以執(zhí)行和效率低的問(wèn)題。本算法改進(jìn)了姿態(tài)估計(jì)算法,并制作數(shù)據(jù)集訓(xùn)練分類網(wǎng)絡(luò),結(jié)合計(jì)數(shù)標(biāo)準(zhǔn)對(duì)有效運(yùn)動(dòng)進(jìn)行計(jì)數(shù)。實(shí)驗(yàn)表明,姿態(tài)估計(jì)模塊人物追蹤錯(cuò)誤率最低為3.2%,速率提升了17%;動(dòng)作識(shí)別網(wǎng)絡(luò)通過(guò)改進(jìn)模型訓(xùn)練過(guò)程使得準(zhǔn)確率達(dá)到94.84%;有效運(yùn)動(dòng)計(jì)數(shù)模塊平均準(zhǔn)確率達(dá)到95%。但是該方法也存在一定的缺陷:(1)運(yùn)動(dòng)識(shí)別數(shù)據(jù)集較小,且場(chǎng)景比較單一,導(dǎo)致分類網(wǎng)絡(luò)預(yù)測(cè)精度較低;(2)體能測(cè)試運(yùn)動(dòng)有效性僅對(duì)部分關(guān)鍵部位的簡(jiǎn)單分析,并且實(shí)驗(yàn)數(shù)據(jù)量偏小。在后續(xù)研究中將針對(duì)上述問(wèn)題,擴(kuò)容數(shù)據(jù)集和實(shí)驗(yàn)數(shù)據(jù),考慮更多的肢體評(píng)價(jià)指標(biāo),提升計(jì)數(shù)準(zhǔn)確率。