曾文獻(xiàn),馬 月,李偉光
(河北經(jīng)貿(mào)大學(xué) 信息技術(shù)學(xué)院,河北 石家莊 050061)
計(jì)算機(jī)視覺技術(shù)已經(jīng)應(yīng)用到各個(gè)領(lǐng)域,其中人體骨骼關(guān)鍵點(diǎn)檢測(cè)受到越來越多研究者的關(guān)注,已經(jīng)在很多領(lǐng)域取得了不錯(cuò)的成績,所以利用計(jì)算機(jī)視覺技術(shù)解決士兵體能訓(xùn)練中的問題已經(jīng)成為未來的趨勢(shì)[1]。士兵的體能訓(xùn)練在保證身體健康的基礎(chǔ)上,通過一定的體能訓(xùn)練提高適應(yīng)執(zhí)行特殊任務(wù)的身體素質(zhì),主要包括力量訓(xùn)練、耐力訓(xùn)練、速度訓(xùn)練和柔韌訓(xùn)練等。士兵體能訓(xùn)練主要包括引體向上、俯臥撐、仰臥起坐、障礙跑、越野跑、蛙跳等。隨著信息智能化的發(fā)展,智能化手段必將應(yīng)用于軍隊(duì)未來的發(fā)展[2],對(duì)于提升士兵體能訓(xùn)練的水平具有巨大潛能。然而目前士兵體能訓(xùn)練大多采取人工監(jiān)督的方法,存在訓(xùn)練監(jiān)督不精準(zhǔn)、訓(xùn)練手段不先進(jìn)和浪費(fèi)人力成本等問題。
本文將人體骨骼關(guān)鍵點(diǎn)檢測(cè)引入士兵體能訓(xùn)練中,提出一種士兵體能訓(xùn)練動(dòng)作分類算法,主要針對(duì)士兵體能訓(xùn)練的基本訓(xùn)練項(xiàng)目:仰臥起坐、俯臥撐和引體向上三種動(dòng)作進(jìn)行分類。該方法通過利用OpenPose模型提取士兵訓(xùn)練視頻中的骨骼關(guān)鍵點(diǎn)位置信息,對(duì)獲取的關(guān)鍵點(diǎn)信息進(jìn)行補(bǔ)全等處理,然后針對(duì)體能訓(xùn)練動(dòng)作設(shè)計(jì)特征,最后利用改進(jìn)的支持向量機(jī)進(jìn)行視頻分類。
基于人體骨骼關(guān)鍵點(diǎn)的士兵體能訓(xùn)練運(yùn)動(dòng)識(shí)別方法流程圖,如圖1所示。該方法首先進(jìn)行人體骨骼關(guān)鍵點(diǎn)檢測(cè),對(duì)提取的關(guān)鍵點(diǎn)位置信息進(jìn)行補(bǔ)全等處理。然后進(jìn)行特征提取,最后針對(duì)提取的特征進(jìn)行分類。
圖1 算法流程圖
OpenPose網(wǎng)絡(luò)模型[3]是由Cao等人提出,在CPM[4]的基礎(chǔ)上引入了部位親合場(Part Affinity Fields,PFAs),其中PAFs是一個(gè)矢量場,用于編碼四肢的位置和方向信息,以便將獲取的人體關(guān)鍵點(diǎn)進(jìn)行連接,得到不同的人體姿態(tài)。但由于OpenPose模型提取出來的骨骼關(guān)鍵點(diǎn)信息是針對(duì)視頻中的單幀圖像提取出來的,沒有充分利用視頻幀間信息,丟失了目標(biāo)人體在場景中的時(shí)間聯(lián)系,會(huì)出現(xiàn)漏檢、誤檢等情況,如圖2所示。
圖2 OpenPose模型檢測(cè)結(jié)果
圖3 骨骼關(guān)鍵點(diǎn)編號(hào)圖
(1)
(2)
OpenPose模型獲取18個(gè)人體骨骼關(guān)鍵點(diǎn)信息,檢測(cè)出來的關(guān)鍵點(diǎn)示意圖,如圖3所示,其中編號(hào)對(duì)應(yīng)的關(guān)鍵點(diǎn)含義,如表1所示。
表1 關(guān)鍵點(diǎn)編號(hào)對(duì)應(yīng)含義
首先,進(jìn)行歸一化處理,由于OpenPose提取的關(guān)鍵性位置信息不僅和運(yùn)動(dòng)動(dòng)作有關(guān),還受人體在圖像中的位置和視頻拍攝角度、距離有關(guān)。直接提取出來的數(shù)據(jù)不能用于后續(xù)的處理,需要對(duì)其進(jìn)行歸一化處理。將人體骨骼關(guān)鍵點(diǎn)坐標(biāo)示(x,y)歸一化到(0,1)的范圍,并將鼻子的關(guān)鍵點(diǎn)坐標(biāo)作為參考坐標(biāo)來轉(zhuǎn)換其他坐標(biāo)。然后,由于人體骨骼關(guān)鍵點(diǎn)14-17號(hào)在運(yùn)動(dòng)過程中沒有發(fā)揮作用,不會(huì)影響完整動(dòng)作的表示,所以舍棄了14-17號(hào)關(guān)鍵點(diǎn)。最后,進(jìn)行關(guān)鍵點(diǎn)缺省補(bǔ)全。由于體能訓(xùn)練視頻可以看作是一組連續(xù)的視頻幀,每一幀都包含了18個(gè)關(guān)鍵點(diǎn)的二維坐標(biāo),人體運(yùn)動(dòng)具有連續(xù)性,不會(huì)發(fā)生很大的突變,所以人體關(guān)鍵點(diǎn)坐標(biāo)具有一定的局部線性特征。為了獲得比較完整的運(yùn)動(dòng)序列坐標(biāo),可以使用線性插值的方法補(bǔ)全缺省的關(guān)鍵點(diǎn)坐標(biāo)[6]。
為了識(shí)別出士兵體能訓(xùn)練中的不同訓(xùn)練動(dòng)作,需要對(duì)獲取人體骨骼關(guān)鍵點(diǎn)之間的關(guān)系進(jìn)行分析,提取關(guān)鍵點(diǎn)之間的特征關(guān)系。主要針對(duì)士兵體能訓(xùn)練中的引體向上,俯臥撐和仰臥起坐進(jìn)行分類。由于拍攝的視頻中存在許多干擾因素,如拍攝距離的遠(yuǎn)近、拍攝角度、訓(xùn)練者的體態(tài)和服裝等因素,會(huì)對(duì)人體運(yùn)動(dòng)輪廓產(chǎn)生很大的干擾,針對(duì)以上分析,本文采用關(guān)鍵點(diǎn)坐標(biāo)之間的幾何關(guān)系和關(guān)節(jié)角作為特征描述,保證體能訓(xùn)練運(yùn)動(dòng)的行為檢測(cè)不變性,其中人體關(guān)節(jié)角是人體關(guān)節(jié)與水平方向(Horizon Line,HL)的夾角。
利用關(guān)鍵點(diǎn)坐標(biāo)之間的幾何關(guān)系計(jì)算關(guān)鍵點(diǎn)之間的距離和比較關(guān)鍵點(diǎn)之間的位置關(guān)系,可以作為訓(xùn)練動(dòng)作的一個(gè)特征。如仰臥起坐運(yùn)動(dòng)中,可根據(jù)鼻子關(guān)鍵點(diǎn)與膝蓋關(guān)鍵點(diǎn)之間的距離,判斷該距離是否在設(shè)定的閾值內(nèi),若符合,則表示仰臥起坐運(yùn)動(dòng)中頭膝距離指標(biāo)合格。引體向上訓(xùn)練運(yùn)動(dòng)中,判斷頸部關(guān)鍵點(diǎn)和腕部關(guān)鍵點(diǎn)是否在同一水平線上,作為引體向上是否合格的一個(gè)標(biāo)準(zhǔn)。
針對(duì)每一種訓(xùn)練動(dòng)作,其關(guān)節(jié)角會(huì)在一定的范圍內(nèi)變化,利用關(guān)節(jié)角的夾角和變化規(guī)律來描述訓(xùn)練動(dòng)作。如仰臥起坐運(yùn)動(dòng),仰臥起坐運(yùn)動(dòng)可以分成準(zhǔn)備階段、起身階段、坐姿階段和坐姿躺下階段四個(gè)階段,通過需要人體脊柱角和鼻膝距離就能判斷出士兵處于仰臥起做的那個(gè)階段,判斷該階段動(dòng)作對(duì)否標(biāo)準(zhǔn),從而可以對(duì)仰臥起坐進(jìn)行計(jì)數(shù)。人體關(guān)節(jié)角的含義如表2所示。
表2 關(guān)節(jié)角的含義
由于目前還沒有體能訓(xùn)練動(dòng)作識(shí)別的數(shù)據(jù)集,采用的是在網(wǎng)上搜集的數(shù)據(jù)集和自己拍攝的數(shù)據(jù)集,數(shù)據(jù)集樣本比較小,動(dòng)作類型只有三種,考慮到用深度神經(jīng)網(wǎng)絡(luò)的方法會(huì)出現(xiàn)過擬合的線性,綜合考慮,決定采用支持向量機(jī)(Support Vector Machine,SVM)[7]。SVM支持向量機(jī)(SVM)在泛化能力好,適合處理小樣本數(shù)據(jù)和高維數(shù)據(jù)。支持向量機(jī)是一種有監(jiān)督學(xué)習(xí)的方法,可廣泛地應(yīng)用于分類以及回歸分析[8]。其核心思想是將向量映射到一個(gè)更高維的空間里,在這個(gè)空間里建立有一個(gè)最大間隔超平面[9],樣本中起到?jīng)Q定作用的樣本點(diǎn)叫做支持向量。松弛標(biāo)量的加入提高支持向量機(jī)的泛化能力,核函數(shù)的引入使SVM能夠輕松處理高維度數(shù)據(jù)。本質(zhì)上,SVM是一個(gè)二類分類器,不能用于多分類任務(wù)中,所以需要構(gòu)造一個(gè)多分類SVM。構(gòu)造SVM多類分類器[10]的方法主要有兩類:一類是直接法,直接在目標(biāo)函數(shù)上進(jìn)行修改,將多個(gè)分類面的參數(shù)求解合并到一個(gè)最優(yōu)化問題中,通過求解該最優(yōu)化問題“一次性”實(shí)現(xiàn)多類分類。另一類是間接法,主要是通過組合多個(gè)二分類器來實(shí)現(xiàn)多分類器的構(gòu)造,常見的方法有one-against-one和one-against-all兩種。本文采用one-against-all方法構(gòu)造的決策樹支持向量機(jī),并利用蟻群算法對(duì)支持向量機(jī)的核寬度參數(shù)σ和懲罰參數(shù)C進(jìn)行優(yōu)化,然后將基于人體骨骼關(guān)鍵點(diǎn)的體能訓(xùn)練行為中提取的特征向量作為輸入,經(jīng)過決策樹支持向量機(jī)進(jìn)行體能訓(xùn)練行為視頻分類。
蟻群算法(Ant Colony Optimization, ACO)[11]是一種新型的模擬進(jìn)化算法,由意大利學(xué)者首次提出。ACO屬于群集智能算法的一種,具有良好的魯棒性、良好的正反饋特性和并行搜索的優(yōu)點(diǎn)。蟻群優(yōu)化算法被用來搜索最佳目標(biāo)函數(shù)值,并最終得到正確的參數(shù)值組合[12]。在我們的模型中,選擇了RBF,是SVM最常用的核函數(shù)。所以有兩個(gè)參數(shù)σ,C。要做的是通過使用ACO優(yōu)化σ,C來提高分類的準(zhǔn)確率。具體的算法步驟描述如下:
(1)首先給每只螞蟻提供的初始參數(shù)(σ,C)。
(2)基于初始參數(shù)(σ,C),通過SVM學(xué)習(xí)訓(xùn)練集后,計(jì)算得到SVM的誤差模型,如公式(3)所示。其中,Yt為訓(xùn)練樣本的值,Yr為真實(shí)樣本的值。
E(i)=|Yt-Yr|
(3)
(3)當(dāng)螞蟻在位置i時(shí),其信息素表示,如公式(4)。根據(jù)公式可知,誤差越小,信息素越大,設(shè)定α=3。
J0(i)=αE(i)
(4)
(4)根據(jù)每只螞蟻的信息素值,得到每只螞蟻的轉(zhuǎn)移概率 ,如公式(5)。其中,Bindex是擁有最大信息素的螞蟻。
(5)
(5)為了防止得到局部最優(yōu)解,本文采用了自適應(yīng)方法。信息素的揮發(fā)系數(shù)在開始時(shí)被設(shè)定得比較小,隨著螞蟻進(jìn)化數(shù)量的增加而不斷增加,信息素的揮發(fā)系數(shù),如公式(6)。其中,這里K=0.1,N是螞蟻進(jìn)化一代的現(xiàn)有數(shù)量。Nmax是演化一代螞蟻的最大數(shù)量。
(6)
(6)基于ACO優(yōu)化的SVM參數(shù)的信息素更新表示,如公式(7)所示 。
J0(i)=(1-ρ)·J0(i)+α-E(i)
(7)
(7)在一個(gè)迭代工作結(jié)束時(shí),保存最大的信息素,并根據(jù)誤差模型計(jì)算誤差,同時(shí)步驟轉(zhuǎn)到步驟(1)繼續(xù)。當(dāng)?shù)显O(shè)定的頻率時(shí),找到最優(yōu)的螞蟻獲得最優(yōu)參數(shù)C和σ。
目前已有很多與行為分析相關(guān)的數(shù)據(jù)集,但是針對(duì)性不高,所以本文采用的實(shí)驗(yàn)數(shù)據(jù)集由兩部分組成,一部分是從網(wǎng)絡(luò)搜集的數(shù)據(jù)集,包含引體向上,俯臥撐和引體向上三種訓(xùn)練運(yùn)動(dòng),另一部分是由10名退伍軍人在多種復(fù)雜環(huán)境中采集的視頻數(shù)據(jù)集。整體數(shù)據(jù)集包含了不同的光線明暗、背景、拍攝距離和拍攝角度,數(shù)據(jù)集共包含3種訓(xùn)練動(dòng)作1140個(gè)視頻片段,視頻分辨率為1278×712、60FPS,視頻時(shí)長均大于10s,其中三種體能訓(xùn)練動(dòng)作的標(biāo)簽分布,如表3所示,引體向上為1,俯臥撐為2,仰臥起坐為3。
評(píng)價(jià)標(biāo)準(zhǔn)采用準(zhǔn)確率(Accuracy)、召回率(Recall)和F1值作為評(píng)價(jià)指標(biāo),其中F1值是評(píng)價(jià)體育視頻分類方法的優(yōu)劣性能指標(biāo)。定義分別如下:
其中:TP(true positive)表示真正例、TN(true negative)表示真負(fù)例、FP(false positive)表示假正例、FN(false negative)表示假負(fù)例。
實(shí)驗(yàn)采用的環(huán)境是Windows10,python編程語言,Core(TM)i7-10100F型號(hào)處理器,NVIDIA GeForce RTX 3090型號(hào)24 G GPU 和32G的運(yùn)行內(nèi)存。采用本文方法對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行分類,實(shí)驗(yàn)結(jié)果如表4所示。實(shí)驗(yàn)結(jié)果表明本文方法可以有效的對(duì)3種不同的體能訓(xùn)練動(dòng)作進(jìn)行分類。
實(shí)驗(yàn)對(duì)比本文方法與未進(jìn)行優(yōu)化的SVM和RBF神經(jīng)網(wǎng)絡(luò)[13]進(jìn)行對(duì)比,如圖4所示。實(shí)驗(yàn)結(jié)果表明本文方法的準(zhǔn)確率、召回率和F1值均高于其他兩種方法,證明本文方法對(duì)于體能訓(xùn)練動(dòng)作視頻有較好的性能。
圖4 實(shí)驗(yàn)結(jié)果對(duì)比圖
本文提出了一種基于骨骼關(guān)鍵點(diǎn)檢測(cè)的士兵體能訓(xùn)練的動(dòng)作分類方法,可以有效針對(duì)體能訓(xùn)練動(dòng)作視頻進(jìn)行分類。采用OpenPose模型來檢測(cè)獲取人體骨骼關(guān)鍵點(diǎn)位置信息,然后通過一個(gè)多分類SVM進(jìn)行動(dòng)作分類。實(shí)驗(yàn)結(jié)構(gòu)表明本文提出的方法對(duì)體能訓(xùn)練動(dòng)作視頻的分類準(zhǔn)確率為92.9%,證明了該算法的有效性。