楊 君, 張素君, 張創(chuàng)豪, 黃晶晶
(武漢科技大學(xué) 信息科學(xué)與工程學(xué)院,湖北 武漢430081)
隨著我國經(jīng)濟水平和生活水平的提高,人們的生活質(zhì)量和健康狀況受到更多的關(guān)注。人們在鍛煉中受傷會影響生活和健康,系統(tǒng)提出的解決辦法是通過計算機或者傳感器等判斷人們的動作是否標(biāo)準(zhǔn),從而避免損傷。這種識別方法主要有兩種:基于傳感器的方法[1~3]和基于計算機平臺的方法[4~6]。
目前基于人體特征的動作識別研究受到了更多關(guān)注,如利用反向傳播(back propagation,BP)、SAM等[7,8]多種分類方式進行人體動作識別?;谌梭w特征的識別方法中對知識庫和訓(xùn)練數(shù)據(jù)的大量需求使得該方法有一定的局限性。
現(xiàn)在成熟的識別研究大多與人臉識別和手勢識別有關(guān),對動作識別的研究較少,且往往沒有交互的過程。針對以往經(jīng)典的人體動作對比識別方法的不足,本文在現(xiàn)有的應(yīng)用基礎(chǔ)[9]上分析研究,提出了一個基于OpenPose的單目圖像識別對比指導(dǎo)系統(tǒng)。
實驗環(huán)境為戴爾Inspiron 15—7560筆記本電腦,CPU 為Intel i7—7500U,Windows 10 64位旗艦版操作系統(tǒng)。內(nèi)存為12 GB,1 600 MHz,顯卡為NVIDIA GEFORCE GT 640M,軟件平臺Visual Studio 2019。該系統(tǒng)安裝簡單,所需設(shè)備數(shù)量少、成本低。系統(tǒng)流程圖如圖1所示。
圖1 系統(tǒng)流程圖
圖像在轉(zhuǎn)換和傳輸?shù)倪^程中,會受到成像設(shè)備和外部環(huán)境的影響,經(jīng)常會出現(xiàn)一些出現(xiàn)亮度偏差過大的區(qū)域,即噪聲,這些噪聲會干擾結(jié)果的準(zhǔn)確性。為了最大程度簡化無關(guān)信息,首先對圖像進行預(yù)處理提取有效信息[10];再采用中值濾波將圖象中的像素按RGB值排序,取中間值為有效值,平滑處理可以強化圖像的目標(biāo)特征;最后,銳化處理使用拉普拉斯模板對圖像邊緣增強。如圖2所示。
圖2 Laplace銳化模板
采用中值濾波和銳化處理能夠有效克服偶然因素的干擾,增強某些線性目標(biāo)的特征,有助于利用色彩差異分離人體和布景。中值濾波器使用非線性方法,在消除脈沖噪聲方面非常有效,但它的抗高斯噪聲的性能較差。這種方法可以保護圖像中物體的邊緣線條,過濾掉偏差較大的點。拉普拉斯銳化方法可以用于恢復(fù)圖像,預(yù)測殘差,對圖像進行一定范圍內(nèi)的恢復(fù)。經(jīng)過測試,預(yù)處理操作對噪聲干擾有較強的魯棒性,如圖3所示。
圖3 預(yù)處理效果
OpenPose實時姿態(tài)監(jiān)測估計算法是由卡內(nèi)基梅隆大學(xué)的一個團隊最先提出的。此算法使用一種叫做人體關(guān)鍵點親和域PAF(part affinity field)的方法連接人體關(guān)鍵點。圖4中的網(wǎng)絡(luò)結(jié)構(gòu)分支1的S1代表一組關(guān)鍵點,分支2的Ll代表連接這些關(guān)鍵點的親和向量。重復(fù)此步,可以得到一個所有2D關(guān)鍵點的集合S和關(guān)鍵點相關(guān)度的向量集合L,再根據(jù)相關(guān)度連接將得到一個近似度高的棍型圖。系統(tǒng)采用的數(shù)據(jù)集是COCO和MPI,并且收集了試驗者執(zhí)行的不同活動并與計算機相關(guān)聯(lián),既能檢測人體,也能感知到周圍環(huán)境中的信息。
OpenPose提供了23個精確的身體部位,包括肩膀、肘部、手腕、臀部、膝蓋、腳踝等。為了減少數(shù)據(jù)集的冗余,系統(tǒng)參考不同身體關(guān)節(jié)的視覺效應(yīng),根據(jù)人體結(jié)構(gòu)和運動特征將關(guān)節(jié)分成不同的組,并給每個關(guān)節(jié)分配不同的權(quán)重。
1)面部五官:面部關(guān)節(jié)分布集中密集,活動范圍小。它們很少表現(xiàn)出明顯的獨立運動,因此這些部位將從表示方案中刪除。2)軀干關(guān)節(jié):軀干關(guān)節(jié)包括肩關(guān)節(jié)、脊椎中心和臀部,它們體現(xiàn)了身體運動位移的主要趨勢,是連接身體和四肢的樞紐,因此添加到表示方案中。3)一級關(guān)節(jié):一級關(guān)節(jié)包括肘關(guān)節(jié)和膝關(guān)節(jié),包含大量關(guān)于四肢動作的信息。當(dāng)身體旋轉(zhuǎn)和彎曲時,它在視覺上相對軀干關(guān)節(jié)有更重要的作用,添加到表示方案中。4)二級連接:二級連接部位包括手腕和腳踝。手腕和踝關(guān)節(jié)比肘關(guān)節(jié)和膝蓋點延伸得更長,給人留下更加明顯的視覺印象,添加到表示方案中。5)三級連接:三級點包含右手、右臀、右腳、左手、左臀和左腳。手和腳是手腕和腳踝的延伸,沒有明顯的視覺印象,因此它們不在表示方案中。綜上所述,表示方案包括12種關(guān)節(jié),數(shù)據(jù)集合減少,但保留了起關(guān)鍵作用的信息。
OpenPose是自下而上識別人體的算法,即先找特征部位,再組合人體。它輸入三原色(RGB)圖像,輸出圖像中每個人解剖關(guān)鍵點的2D位置坐標(biāo),可以識別人體的關(guān)鍵點。此算法通過兩個卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)進行連接,預(yù)測每點的關(guān)鍵點的置信度S和親和度向量L,如圖5所示。兩個主要步驟如下:
1)輸出置信圖:原圖被第一個CNN處理后生成置信圖圖集,CNN利用卷積核對從原始圖像中取出的N×N的矩陣窗口進行卷積運算,每個置信圖包含一種圖像特征。第一個CNN輸出的置信圖和原始圖一起傳入到下一個網(wǎng)絡(luò)進行計算,其中置信度表示實際值落在一個區(qū)間的概率。循環(huán)這一過程直到結(jié)果收斂為止,即輸出的置信圖都落在同一區(qū)間的概率較大。每個置信圖還包含每個特征點的置信度,置信度在貝葉斯統(tǒng)計中的對應(yīng)概念是可信區(qū)間即估計值落在的區(qū)間。
圖5 關(guān)鍵點的置信圖
2)輸出骨架圖:如圖6所示。其步驟里同樣包括兩個CNN,這兩個CNN連著第一個卷積網(wǎng)絡(luò)輸出的置信圖并重復(fù)第一步的步驟。新獲得的置信圖根據(jù)概率的大小將計算好的兩個關(guān)鍵點進行連接,再根據(jù)關(guān)節(jié)部位和點的地方計算每個區(qū)域的法向向量實現(xiàn)關(guān)鍵點的聚集整合。
最后生成一個法向向量圖,通過貪心推理算法(每一步都選擇當(dāng)前狀態(tài)下的最好選擇)在法向向量圖中構(gòu)造出一條連接下一點的連線。由各個點的置信度來推測哪兩點是一條線上概率最大的兩點,反復(fù)使用最小生成樹Prim算法,保持一個有n點圖連通最少的邊。隨著迭代次數(shù)的增加,可得到全部連線,并且區(qū)分左右,即人的骨架圖,完成了骨架的組裝。如果某個特征點在過程中缺失,則不計算該點的置信度且不連接放置它們所在的骨骼線。
總之,該系統(tǒng)通過兩分支多階段CNN對圖像進行處理,其中第一分支是每個階段預(yù)測置信圖,第二分支是每個階段預(yù)測部分親和域。前饋網(wǎng)絡(luò)推測出一組人體部位的2D置信圖和一組反映局部關(guān)系度的2D向量場,對關(guān)節(jié)之間的關(guān)聯(lián)程度進行編碼。最后,通過推測解析置信度映射親和域,OpenPose輸出圖像中所有人的二維關(guān)鍵點。
圖6 法向向量圖中的連線
最后本文以 JSON 格式獲取了包含人體位置和檢測置信度的12個關(guān)節(jié)坐標(biāo),這些數(shù)據(jù)能夠以完整和獨特的方式表示每個姿勢。本文直接采用OpenPose使用小型數(shù)據(jù)集,可降低計算復(fù)雜性。
由于視頻幀中關(guān)節(jié)位置不連續(xù)是影響結(jié)果的主要因素,系統(tǒng)將對比標(biāo)準(zhǔn)定義為某些幀之間的關(guān)節(jié)骨骼之間的角度。關(guān)節(jié)骨骼之間的角度可以清楚地反映一個人整體的位置和移動方向,并且人的體型、身高、膚色、年齡等差別都不會影響計算機判斷的結(jié)果。系統(tǒng)設(shè)定的骨骼點包括頭(包含眼鼻耳,但不分配權(quán)重)、脊柱中心、右手、左手等。
圖7 關(guān)節(jié)分組示意
根據(jù)視覺效果如圖7 ,對所有關(guān)節(jié)進行分組,分組為:1)主體軀干:0,1,2,5,8,11。2)四肢:2,3,4,8,9,10(左);5,6,7,11,12,13(右)。
關(guān)節(jié)與關(guān)節(jié)之間的距離可用式(1)表示
(1)
式中dx,y,z為兩關(guān)節(jié)之間的距離,(xi,xj),(yi,yj),(zi,zj)為關(guān)鍵點坐標(biāo),cm。由于OpenPose將圖像中每個人的關(guān)節(jié)點生成2D位置作為輸出,將式(1)修改為式(2),(xi,xj),(yi,yj)為二維像素坐標(biāo)系上的關(guān)鍵點坐標(biāo),cm
(2)
根據(jù)此公式計算出一組內(nèi)的兩個關(guān)節(jié)之間的距離,再計算出角度。角度計算如圖8。
圖8 角度計算示意
圖中d1,d2是一個組內(nèi)相鄰點的距離,對于主體軀干還需要計算它們與豎直方向的偏移角φ
(3)
(4)
式中θ為一組中任一關(guān)節(jié)點與編號相鄰的兩個關(guān)節(jié)點連線間的夾角,d1,d2,d3分別為這三個關(guān)節(jié)點間的距離,cm;φ為主干與垂線的偏移角,(°)。使用式(5)可以計算某個實際動作與標(biāo)準(zhǔn)動作之間的角度偏差百分比P
(5)
式中θN為實際角度,θstandrd為標(biāo)準(zhǔn)角度,(°)。本系統(tǒng)根據(jù)不同身體關(guān)節(jié)的視覺效應(yīng)分配不同的權(quán)重給每個身體關(guān)節(jié),選取頭、軀干關(guān)節(jié),臀部中心、右手腕等為主要的關(guān)節(jié)。計算角度偏差百分比時默認(rèn)這些骨骼角度的權(quán)重相同。式(6)可以算出Ptotal總體人體的動作擬合百分比
(6)
式中n為某一指定健身動作中的骨骼角度的個數(shù)。規(guī)定當(dāng)偏差百分比大于30 %時,用文字提示給出偏差較大的部位。最后測試結(jié)果如表1所示,能與人眼判斷基本吻合。
表1 測試結(jié)果
該系統(tǒng)實驗環(huán)境為戴爾Inspiron 15—7560筆記本電腦,當(dāng)某個偏差大于規(guī)定值時,界面將顯示此偏差計算公式中的關(guān)鍵點編號。交互性表現(xiàn)在:如果電腦判斷結(jié)果與實驗者的判斷不吻合,可以調(diào)整兩個參數(shù)—最大偏差比和不同關(guān)節(jié)的權(quán)重來調(diào)試系統(tǒng)以達(dá)到理想的結(jié)果。最終系統(tǒng)根據(jù)提示調(diào)整實際中具體關(guān)鍵點的動作,使之更加符合標(biāo)準(zhǔn)動作,達(dá)到正確健身提高身體素質(zhì)的目的。經(jīng)過測試證明該系統(tǒng)安裝簡單設(shè)備少,交互性較強。
系統(tǒng)也可以給不同的骨骼分配不同的權(quán)重,比如,在太極拳等下半身比較平穩(wěn)的運動中,可以調(diào)整上半身的權(quán)重值為下半身的2倍。此時公式調(diào)整為式(7)和式(8)
(7)
(8)
式中Pupper,Plower分別為上、下半身的偏差比,%。
基于OpenPose的單目圖像動作識別對比指導(dǎo)系統(tǒng)可以通過調(diào)整最大偏差比和不同關(guān)節(jié)的權(quán)重來調(diào)試系統(tǒng),穩(wěn)定性好。系統(tǒng)在現(xiàn)有的方法和技術(shù)基礎(chǔ)上進行分析研究,提出了一個二維人體基于OpenPose的單目圖像動作識別對比指導(dǎo)系統(tǒng)。實驗結(jié)果表明:系統(tǒng)判斷結(jié)果與人眼識別相吻合,安裝簡單設(shè)備較少、交互性較強、設(shè)備成本低、數(shù)據(jù)較少并且對噪聲干擾有較強的魯棒性。