蘇志同,張小橋
(北方工業大學 信息學院,北京 100144)
隨著計算機在我們生活中發揮著越來越重要的作用,單目圖像估計三維人體姿態成為計算機視覺中的一個重要課題[1]。隨著深度學習的發展,用深度神經網絡解決三維人體姿態估計問題的技術也發展的越發成熟。
關于人體姿態的動作捕捉,存在很多種方法,第一種是帶有傳感器的關節、剛性連桿的及機械式運動捕捉;第二種是利用聲波發生和接受器的聲學式涌動捕捉;第三種是利用電磁發生和感應的電磁式運動捕捉;第四種是利用標記點和攝像機的光學是運動捕捉;第五種是基于視頻的運動捕捉[2]。本文利用的是第五種中基于單目攝像頭進行的動作捕捉,目前也有雙目攝像頭的研究[3],但有架設成本高、調試時間長的缺點。而單目攝像頭獲取容易,在筆記本電腦上的攝像頭就能輕松實現。
伴隨神經網絡技術的逐步發展和完善,利用深度學習來獲得人體骨骼姿態成為一種趨勢。本文在通過 Openpose獲得骨骼數據的基礎上進行姿態對比,能夠在為動作學習需求學員提供一定的動作方面的知道。在動作教學發展方面具有一定的意義。在二維數據對三維數據進行了轉化,隨后用卡爾曼濾波對數據進行降噪。通過預先輸入教練動作的數據,以此骨骼數據為標準動作數據,然后再輸入學員的動作數據,通過余弦相似度和歐式距離來判斷和標準動作的差距,并給出每個骨骼數據的分數。
近年來,通過深度卷積神經網絡識別人體姿態的相關研究取得了較大的進展。在 2012年,AlexNet[4]的出現,使神經網絡在識別圖像上達到了較高的準確率。

圖1 AlexNet的網絡結構Fig.1 The network structure of alexnet
2015年,把人體姿態估計當做檢測問題,輸出熱圖,這樣能進一步提高圖像識別的準確率。2016年,CPM采用了級聯網絡,從而能進行像素級別的圖像分割[5],這也是Openpose的前身。
Openpose是在CNN基礎上進行改進的,在監督學習的對人體姿態進行檢測,由圖可見,輸入一幅圖像,經過VGG19[6]卷積網絡提取特征,得到特征圖F,之后分成兩路,分別使用CNN網絡提取Part Confidence Maps和 Part Affinity Fields,采用大卷積核來獲得大的感受野,網絡架構如圖2。

圖2 Ope npose的網絡外部結構Fig.2 The external network structure of openpose
比較常見的骨骼數據格式有 BVH、BVA、HTR、ASF/AMC等,本文采用BVH作為動捕的數據。
BVH(Biovision Hierarchy)是由 Biovision公司開發,用以描述動作捕獲的數據文件格式[7]。這種文件是以文本形式存儲的,可以存儲骨骼的動作信息,便于開發。所以本文選擇這類格式作為載體來傳遞骨骼的信息[8]。從openpose中獲得的數據,獲取到的的數據轉化為BVH格式的文件[9]。
獲得的骨骼數據分別為[hips, head, neck, chest,rightCollar, leftCollar, rightUpArm, leftUpArm,rightLowArm, leftLowArm, rightUpLeg, leftUpLeg,rightLowLeg, leftLowLeg, rightFoot, leftFoot]openpose里沒有hips,取openpose數據里8和11兩點連線的中點為 hips的坐標數據[10]。圖3為BVH格式的示意圖。

圖3 BVH 骨骼示意圖Fig.3 BVH skeleton diagram

表1 BVH 結構示意圖Tab.1 BVH structure diagram
卡爾曼濾波(Kalman filter)是一種高效率的遞歸濾波器,能在一系列的不完全及包含噪聲的測量中,估計動態系統的狀態[11]。卡爾曼濾波是有著廣泛的應用,比如:自動駕駛儀,動態定位系統,經濟學,慣性導航系統,雷達跟蹤器,衛星導航系統。就連阿波羅飛船的導航電腦也是使用了這種濾波器。
卡爾曼濾波適合連續變化的系統,而且整個算法占用的系統內存較小,所以特別適用于實現現在的人體姿態識別。
卡爾曼濾波有兩種方法,分別是直接法濾波和間接法濾波,兩個各有優缺點。直接法的系統方程一般都是非線性方程,間接法的系統方程都是線性方程,可以采用基本濾波方程。人體的運動為非線性,這里采用直接法的非線性濾波法。下面是卡爾曼濾波公式。
后驗估計Pos3D和先驗估計Now3D的關系式如下:

Now3D-X為測量的殘差,為預測值和真實值的差異。
K為增益或融合因子,是后驗誤差協方差的最小化結果,K值的大小決定著最終的估計值是傾向于測量值,還是傾向于預測值,下面為K值的求法。

R和Q的基本是固定的,這里本文定的是Q=0.001R=0.0015

式中:disti,j代表兩個關鍵點在世界坐標系下的距離,xi、yi、zi分別表示教練動作的一個點的x軸、y軸、z軸坐標數據,xj、yj、zj分別表示學員動作的相對應點的x軸、y軸、z軸坐標數據。通過這兩個點坐標距離的計算,可以得知學員的動作和教練的動作相差多少。
但這種歐式距離的方法有局限性。首先,需要對齊坐標系,但人體與世界坐標的相對位置和旋轉角不同,需要進行對齊,移動學員的根骨骼使其三維坐標和教練的相同。人與人之間的骨骼有大小的差異,同時還需要先進行縮放,縮放的比例是根據 chest到hips的比值,縮放后使兩個根節點的hips相互重合,然后再一次對比其他骨骼節點。

式中:cosSimilarityi,j代表兩格向量的余弦值,其值范圍是[–1,1],所以用式(4)使其取值在[0,1]之間。vi表示教練骨骼的向量,vj表示學員骨骼的向量。通過這兩個點坐標距離的計算得出的結果,從得出的數值可以得知學員的動作和教練的動作相差多少。
式(7)是歸一化處理:

式(8)中:H代表最終得分,disti,j代表兩個關鍵點在世界坐標系下的距離,cosSimilarityi,j代表兩格向量的余弦值,W1表示歐式距離分數的權重,W2表示余弦向量分數的權重。通過分數大小可以得知學員的動作和教練的動作相差多少。
對實驗可變數據進行變更,觀察結果預期得出的結果和已有的數據相差多少準確率。
整體的實驗結果流程圖如表2所示。

表2 歐式距離與余弦向量方法不同權重下的準確率Tab.2 The accuracy of Euclidean distance and cosine vector method under different weights
從實驗結果可知,過于依賴歐氏距離方法獲得的分數,或者過于依賴余弦向量獲得的分數,都會使得結果的準確率有所下降。可以通過分析歐式距離和余弦向量方法的優缺點來驗證實驗結果的正確性。
通過歐式距離獲得的對比數據,是根據兩組骨骼數據每個點的對比。歐式距離方式的優點,能夠較為準確的對比出每個重要骨骼關節的位置,尤其的是末尾的關節點,當對比的關節點,說明學員的姿勢肯定存在不正確的地方,這會在之后的得分中體現。當出現一種這種情況時,學員的肘關節在教練,學員的手臂和教練的手臂姿勢呈X形狀。這時候手腕和手肘關節離教練的距離都不遠,但是動作卻相差很大,說明歐式距離方法不能有效檢測出特殊情況。
通過余弦向量分析的結果目的在于許愿,其優勢是彌補歐氏距離在特殊情況下檢測能力的不足。余弦向量能夠有效的檢測出,能夠有效的彌補歐氏距離方法所帶來的誤差。但余弦向量的缺點也很明顯,由于不能確定每個點,只能通過兩組骨骼方向朝向夾角來判定,當遇到上兩組骨骼所在的平面與下兩組骨骼所形成的平面成垂直時,就可能會出現這樣的情況,學員胳膊肘朝內,教練胳膊肘朝外,而余弦向量方法無法指出這樣的錯誤。而且,由于蝴蝶效應,每組關節都偏移一定的角度,會導致學員和教練在末尾關節點的有很大的偏差,這就需要歐式距離方法作為彌補。
所以得出的結論是:兩種方法忽悠優劣,互相彌補。從而得出較為準確的人體姿態對比。

圖4 實驗流程圖Fig.4 Experiment flow chart
通過以上公式,導入輸出的結果如圖5所示。

圖5 實驗結果圖Fig.5 Diagram of experimental results
圖6輸出的結果為


圖6 學員與專業運動員姿勢對比截圖Fig.6 The students and professional athletes are just screenshots
本文在已有openpose人體姿態識別網絡的基礎上,將獲得的二維關節點的骨骼數據的三維姿態的重建,利用卡爾曼濾波進行降噪,并利用余弦向量和歐式距離,對學員的動作與標準動作進行對比,根據所得到的分數判斷的該學員的準確率。現有的研究是通過視頻中的單幀圖像進行對比,后續可以通過硬件技術的發展,使此方法能在普通的設備下進行較為流暢的動作姿態比對。