徐寅鵬 臧嚴 李秋潔

摘要:借助MSRC-12人體動作數據集中的動作樣本數據,選取80個不同人體的相同動作序列作為訓練數據,構建動作模板,選取除上述80個樣本外的400個動作序列作為測試數據,分別提取兩者骨骼向量的角度特征,運用動態時間規整算法(DTW)進行模板匹配,從而識別出人體典型動作。實驗結果表明,不同人體執行的同一動作的多個樣本作為訓練模板時能夠有效識別人體動作,但是在輸入的動作序列與模板在時間上有一定差距時、次要部位的角度特征的變化占主要地位時會影響識別效果。
關鍵詞:關節數據;動作識別;特征提取;DTW
中圖分類號:TP3? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)27-0200-04
1 引言
人體行為識別是一個多學科交叉的研究方向,涉及圖像處理、計算機視覺、模式識別、機器學習和人工智能等多個學科, 是計算機視覺領域的重要研究課題之一。隨著數字圖像處理和智能硬件制造技術的飛速發展, 人體行為識別在智能視頻監控、自然人機交互、智能家居和虛擬現實等領域具有廣泛的應用前景[1]。
手勢識別主要包括靜態手勢識別和動態手勢識別。靜態手勢是指靜止不動的手的狀態,其識別方法主要包括模板匹配等。模板匹配是通過計算待識別的手勢和手勢模板庫中的手勢模板的相似度進行識別的,當相似度達到設定值時,則認為待識別手勢就是該模板手勢。Hernandez等人采用模板匹配的方法,采集了176個手語詞匯集,對美國手語進行動作識別。動態手勢是由一幀一幀的手勢序列組成的,主要的識別算法有動態時間規整(DTW)、隱馬爾科夫模型(HMM)、支持向量機(SVM)、AdaBoost算法、人工神經網絡(ANNs)等。王兵等人采用基于像素分類的指尖檢測算法找到指尖的個數,對人手的運動軌跡進行分析,并針對運動軌跡中運動方向的變化,提取了動態手勢的運動方向變化角度作為特征,采用隱馬爾科夫模型進行訓練和識別各個手勢[2]。
本課題主要研究基于關節數據的人體動作識別,提取多個具有典型區分度的角度特征,運用動態時間規整算法(DTW)進行模板匹配識別典型人體動作。
2 人體關節數據集
2.1 MSRC-12動作數據集
本課題采用的是MSRC-12(Microsoft Research Cambridge-12)人體動作數據集。MSRC-12動作數據集由人體各個部位的骨骼數據序列組成,是由微軟研究院劍橋大學計算機實驗室制作的,是由Kohli[3]等通過Kinect體感設備訓練采集的。
Kinect是一款融合了許多先進視覺技術的新一代體感交互設備,它的硬件集合了聲、電、光以及機械學等多個領域的先進技術,其主要的零部件有將近上百個,是目前電子產品中工藝極為復雜的一款[4]。
2.2 數據集內容
MSRC-12動作數據集是由30個人執行12類動作而采集的人體坐標數據。在不同的引導機制下,不同的人執行同一個動作,每個動作重復了多次,包括594個動作序列,總計6244個動作實例。數據集的每一幀數據都是由Kinect采集的人體20個骨骼關節點的坐標組成的,動作實例就是由這20個骨骼關節點的坐標隨時間變化的序列組成[5]。20個骨骼關節點如圖1所示。
MSRC-12動作數據集包含594個動作序列(存儲在594個csv文件中)和594個動作標簽文件(存儲在594個tagstream文件中)。其中csv和tagstream文件的命名方式統一為:P[1]_[2]_[3]_P[4].[csv][tagstream],其中[1]和[2]表示存儲的動作序列的引導機制,[3]表示存儲的動作序列的類別,[4]表示執行動作的人的編號。
2.3 典型動作介紹
數據集總共有12類動作,本課題的實驗就是基于其中4個動作的樣本數據進行模板匹配,從而識別出人體典型動作的。定義的典型動作分別為蹲下、投擲、舉起并伸展雙臂和彎腰,如圖2所示。
3 基于關節數據的人體動作識別
3.1 基本流程
動作識別的基本思路為借助MSRC-12動作數據集中的樣本數據,采用DTW算法將樣本訓練集提取的角度特征和測試集中的角度特征進行模板匹配,從而識別出人體動作,具體流程見下圖3。
3.2 特征提取
人體身高、胖瘦、形體各不相同,如果以選取的特征與上述特征有關,必然會使匹配率降低,所以選取的特征應與上述特征無關。當不同的人執行同一個動作時,需要通過相似的特征來解析出這個動作。
以“蹲下”這個動作為例,不同的人做出的動作都具有一定的差異性,骨骼與骨骼之間位置、長度、姿態等不盡相同,但是都表達了同一個動作,如圖4所示,所以必須找到一個共同的表達方式來表達同一個動作。
由此可以用骨骼間的夾角來代替骨骼的變化即動作的變化,從而識別出動作。動作數據集中的20個關節點數據并不是全部都用得到,所以可以通過篩選剔除不需要的關節點,實現數據的降維處理,使數據更具可靠性和普適性[6]。
利用人體的四肢及其與脊椎的夾角就可以基本確定人體的動作。本課題采用了15個關節點,如圖1所示,將WristRight簡記為WR,所以15個關節點分別為WR、ER、SR、SC、SL、EL、WL、S、HC、HR、KR、AR、HL、KL、AL,這些關節點組成了13根骨骼,以右腕、右肘和右肩組成的夾角為例,記為WR-ER-SR,有WR-ER-SR,ER-SR-SC,SC-SL-EL,SL-EL-HL,HC-HR-KR,HR-KR-AR,HC-HL-KL,HL-KL-AL這8個夾角,還有SR-SC、SL-SC、HR-HC和HL-HC與S-HC組成的4個夾角。
本課題的模板訓練集使用了MSRC-12數據集,其中不同的動作序列簡化了樣本采集過程。訓練集中的關節點坐標數據是三維坐標,先利用坐標數據得出骨骼向量,由于骨骼向量是矢量,骨骼長度和方向也可得出;再通過空間向量夾角公式計算出骨骼間的夾角,見式(1)。
3.3 動作識別算法
本課題主要通過提取人體動作的關節角度特征并運用動態時間規整算法(DTW)識別出人體典型動作。該算法最初應用在語音識別領域,它通過動態規劃思想去解決發音長短不同的兩條音頻曲線的語義識別。DTW算法就是使用warping扭曲的方式對時間軸進行拉伸或收縮,從而計算兩條曲線的相似性。假設有兩個時間序列A和B,分別為模板序列和測試序列,他們的長度分別用m和n來表示,序列中每個時間點對應一個特征值,見式(2)和(3)。
其中,A為樣本空間模板,B為測試模板。具體方法是把短的曲線序列延伸到和長的曲線相同長度進行計算,或者把長的時間軸收縮到和短的曲線相同長度。所以,使用[DTW]算法匹配兩條曲線的最短距離總和前,需要先構造一個[n×m]的矩陣,如圖6所示。
其中,元素[(i,j)]表示其中一條曲線上的點Ai到另一條曲線上的點Ai的距離d(Ai,Bj),一般使用歐氏距離進行計算,計算公式為[dAi,Bj=(Ai-Bj)2],表示矩陣中路線途經的點。W的第k個元素定義為[Wk=(i,j)k],表示A和B兩條時間序列的映射關系。K表示規整路徑的終點標號,其值應不小于測試序列與模板序列中的最大長度,不大于兩者的序列長度和,數學公式可以表示為式(4)[8]。
矩陣中的每一個點只有三個方向可以選擇,如圖7所示。如果規整路徑W已經經過(i,j)點,下一個方向只能是以下三種情況之一,分別是(i+1,j)、(i,j+1)、(i+1,j+1)。
定義累加距離D(i,j),從起點開始,每選擇出兩條序列(i,j)點之間的一條最短距離,就進行累加。累加距離D(i,j)表示當前格點的距離d(i,j),即Ai和Bj兩點間的歐氏距離,與該點前一點的累加距離之和,見式(5)。
4 實驗結果和結論
4.1 實驗結果及分析
通過對骨骼關節點數據的特征提取,運用動態時間規整算法(DTW)將經過特征提取的兩個集合進行模板匹配,實現對人體典型動作的識別。
在不同動作序列條件下,隨著幀數的增加,角度特征具有明顯差異,以蹲下和舉起雙臂這兩個動作為例,所提取的角度特征如圖8所示;在同一人執行相同動作序列條件下,隨著幀數的增加,所提取的角度特征具有相似性,以舉起雙臂這個動作為例,所提取的角度特征如圖9所示;在不同人執行相同動作序列條件下,隨著幀數的增加,所提取的角度特征雖然有所差別,但是也具有一定的相似性,以舉起雙臂這個動作為例,所提取的角度特征如圖10所示。
選取左臂和左腿上共4個角度特征,其中紅色實線表示左臂的兩個角度特征,藍色實線表示左腿的兩個角度特征。
經過上述對提取角度特征的分析,下面進行同一動作的識別。每個動作樣本實際上是由同一個人重復多次組成的,所以單個數據文件中就有多個樣本。先選取動作數據集中的80個樣本作為模板,然后選取除上述樣本外的400個相同動作序列作為輸入數據,設置累計歐式距離的閾值為20,動作識別率如表1所示。
通過模板匹配,舉起雙臂和投擲這兩個動作的識別率很高,而蹲下和彎腰這兩個動作的識別率較高。以蹲下這個動作為例,匹配的主要部位在腿部,沒有大幅度的變化,如圖10所示。而手臂部位的角度隨著幀數的增加出現毛刺現象,兩者完成的時間長度有較大差距,在DTW進行幀數的匹配時差距就會放大,累計歐式距離變大,致使識別失敗。
4.2 總結與展望
基于MSRC-12數據集的關節點數據,選取多個樣本作為模板,輸入測試數據,提取能夠表征基本動作的角度特征進行模板匹配,從而識別出人體動作。
由于MSRC-12動作數據集中樣本較多,所以進行模板匹配時更易找出相似度最高的動作序列。仍然存在的問題是如果輸入的動作序列與模板在時間上有一定差距時,會影響識別效果;當次要部位的角度特征的變化占主要地位時也會影響識別效果。這與算法本身、特征提取的方式等有關。所用數據集是由Kinect采集的,其中也包含一些不屬于動作序列的幀數據,例如人體靜止時的數據。所以我們將會從這些方面繼續改進。
參考文獻:
[1] 朱紅蕾,朱昶勝,徐志剛.人體行為識別數據集研究進展[J].自動化學報,2018,44(06):978-1004.
[2] 王健.基于Kinect的手勢識別及人機互動[D].南京郵電大學,2018.
[3] S.Fothergill, H.M.Mentis, P.Kohli, and S.Nowozin.? Instructing people for training gestural interactive systems[J]. In ACM annual conference on Human Factors in Computing System(CHI), 2012:1737-1746.
[4] 姜延豐.基于Kinect的動作評價方法研究[D].沈陽工業大學,2017.
[5] 刁俊方.基于Kinect的人體動作識別技術研究[D].重慶大學,2015.
[6] 胡青松,張亮.人體行為序列化識別算法研究[J].電子技術應用,2018,44(04):122-125+129.
[7] 顧軍華,李碩,劉洪普,等.基于骨骼向量夾角的人體動作識別算法[J].傳感器與微系統,2018,37(02):120-123.
[8] 邢志飛.基于Kinect的人體姿態檢測與動作識別技術的研究[D].沈陽工業大學,2015.
【通聯編輯:代影】