劉 偉
(徐州醫科大學醫學信息與工程學院,江蘇 徐州 221000)
通過使機器對人體行為、動作進行模擬學習,完成很多相對較為危險或者繁瑣的工作,可以解放人力、保障人類安全、減少經濟開銷,提高工作效率等。但是該項技術正處于起步階段,機器人不能對人體動作進行完全模擬,出現執行偏差,不能獨立、智能地完成全部工作,因此人們開始對基于機器人學習的人類動作識別方法進行深入的研究。
文獻[1]針對傳統機器學習方法在通過運動傳感器對人體的運動進行識別時,嚴重依賴人工的不足,且識別正確率較低等問題,提出一種改進卷積網絡和雙層長短期記憶網絡混合模型,以此實現對人體動作的自動提取識別。但是此模型在與時序結構、傳感器數據層狀等特點相結合時,需要把多維傳感器的數據信息轉化成圖像RGB矩陣,才能進行適應性處理,使處理過程更加復雜,由數據到矩陣的轉換,會出現結果不精準且轉換數據不完全的問題,導致識別產生誤差。
文獻[2]中的研究是為了實現人機協作的靈活性,提出機器人需要具備一定的合作經驗的要求,以此完成對人體進行有意識識別的方法和流程。通過構建BP神經網絡模型,對機器人進行離線訓練,使其具有一定的合作性技能。但是上述方法只能應用在特定領域內,不具備廣泛的適用性,難以滿足社會現實需求。
為了解決上述問題,本文提出一種基于機器學習的人體動作局部特征點識別方法。通過分析人體行為動作推斷肢體在時空領域中的運動效率,對特征進行提取,然后通過卡爾曼濾波法對人體關節坐標信息評估,其本質上是一種最優化回歸數據處理算法。以此構建數學模型和BP神經網絡進行定量識別,對人體局部動作進行分類識別。
人體運動屬于非剛體運動,它在時空中的狀態差別很大,運動執行效率變化較大,導致人體運動在時間尺度上可能存在很大的差異,為了解決這種差異,本文構建了多尺度局部時空領域特征[3]。即對所有局部時空特征擬定多種不同的最近鄰特征數量,形成尺寸各不相同的局部時空領域。小尺度的局部領域可以抓取人體運動的所有細節信息,而大尺度的局部領域負責描述運動的宏觀統計量[4]。
通過以下步驟實現多尺度局部時空領域特征的構建:
1)時空興趣點的局部特征和檢測描述,擬定di代表局部特征與人體動作視頻V的時空興趣點;

3)對所有尺度中的領域特征構建各自碼本,再分別編碼,取得編碼系數c;
5)最后級聯全部尺寸下的池化向量,取得HV。
表示人體動作視頻V下的池向量。將依據HV核的支持向量機(Support vector machine, SVM)作為動作分類器,對人體動作特征進行提取,其提取過程為
(1)
式中,Hm與Hn為兩種特征向量,Hm(i)與Hn(j)分別為Hm與Hn的第i與j種特征分量[5]。
通過上述步驟完成人體動作特征的提取。要進一步實現特征點識別,需根據提取結果構建人體行為動作模型。
本文采用卡爾曼濾波法對人體關節坐標信息數據進行評估。卡爾曼濾波器是一個線性遞歸的濾波器,以目標以前的狀態序列為基礎,然后對以后的狀態做無偏差最優評估[6-8]。該方法本質上為一種最優化的自回歸數據信息處理算法,主要利用遞推方式預測,具體的算法公式為
xk=Fgk-1+Buk+Wk
(2)
式中,xk∈Rn為人體動作狀態變量,gk-1為前一個人體動作狀態向量,F即傳遞矩陣,B代表控制矩陣,uk表示控制輸入,Wk叫做過程噪聲。通常擬定服從高斯分布N(0,Qk),Qk代表過程噪聲協方差矩陣,則遞推算法的測量值為
zk=Hxk+vk
(3)
式中,zk∈Rm是觀測變量,H代表測量矩陣,vk代表測量噪聲。
利用卡爾曼濾波原理進行計算。預報階段,由前一時刻狀態生成當前時刻狀態作為預報值。進入分析階段后,利用最小方差估計方法,將觀測數據進行狀態重新分析。隨著狀態預報的持續進行和新的觀測數據的不斷輸入,整個過程不斷向前推進。
但在使用卡爾曼濾波法時,需要采用合適的數學模型,對濾波公式中的系統參數、傳遞矩陣以及測量矩陣進行確認。本文則以泰勒展開來代表關節動作。某一個關節點用i表示,而該點在X軸移動速度泰勒展開式如式(4)所示

(4)
式中,xi表示某關節點處的狀態向量,k代表離散時間點,ΔT代表采樣的時間。
同理,在Y軸與Z軸位置方向,人體局部動作速度也能夠運行相同方式進行泰勒展開。因為Kinect傳感器取得深度信息效率是30幀/秒,以此速度進行采集時,在人體相鄰最近兩幀位置上的變化并不明顯。因此,本文在建立數學模型時,需要將人體的關節點以均速動作為目標進行采樣。通過式(4)建立卡爾曼濾波數學模型公式為
K(k)=Fxi(k)+W(k)
(5)
式中,W(k)代表協方差矩陣。
Kinect傳感器所獲取的所有關節點坐標數據信息,行為動作的測量矩陣數學模型如式(6)所示
Zi(k+1)=HXi(k+1)+V(k+1)
(6)
在測量噪聲V(k+1)中所建立的測量噪聲協方差矩陣W(k),幾乎都是對角矩陣。
通過多次測試以后,最終確定xi(k+1)的對角線上值為0.05,對角線上的數值是3,且確定起始狀態向量是零矩陣,起始誤差協方差矩陣是單位矩陣。憑借式(6)計算出Zi(k+1),并計算出關節點i在k時的位置[9]。基于上述,實現人體行為動作模型的構建,利用該模型可進行人體局部動作識別。
人體的局部動作是一種非平穩的信號,在進行特征統計時會隨著時間的改變而改變,而傳統特征點提取,幾乎是通過時頻域方面進行計算的,然后提取動作信號數據的時域特征,即指均值、最大幅值以及標準差進行識別或者通過頻域對其進行考慮,分析其功率譜能量和頻率絕對值等。而本文所利用的是小波變換針對所有的低頻信號分解,能夠很好的對非平穩信號進行處理,但各種小波在對信號作分析時,所得到的數據結果也不相同,因此,在利用小波轉換函數分解時,可以獲得小波系數的向量,最終把局部動作信號合并成一個特征向量值,且同時選取短時的傅里葉變換以后質心頻率、振鈴計數、上升時間、持續時間、窗口頻域特征峰值以及能量[10]。
構建神經網絡模型識別分類步驟如下所示:
1)把從傳感器上所傳輸的動作信號利用加窗處理;
2)在時間窗中計算下列人體動作向量:包含質心頻率、振鈴計數、上升時間、小波系數特征、持續時間、窗口頻域特征峰值以及能量;
3)構建一個初始神經網絡模型;
4)把特征參數視為輸入神經元,輸入進神經網絡內進行訓練;
5)利用訓練完畢的神經網絡對測試集分類進行定量識別,并且計算運動識別正確率。
本文所采用的神經網絡的數學關系表達式為

(7)
式中,yj代表隱層輸出狀態向量,xi代表輸入狀態向量,whij代表輸入層至隱層的連接值,bj代表隱層神經元的閾值,fy代表激勵函數。由yj得出輸出狀態向量zk

(8)
式中,wojk代表至輸出層的連接權值,ck代表輸出層閾值。利用構建的神經網絡對人體局部行為進行定量識別。
把16個特征向量用于神經網絡的輸入,而網絡輸入神經元有16個,其隱藏性格神經元為8個,其6中動作狀態是網絡輸出,輸出神經元有6個。對樣本數據進行隨機標簽,然后分成兩部分運轉,而其中的一部分即為訓練集,其它則為測試集。接著利用訓練集數據信息訓練神經網絡,接著對測試集數據進行測試[11]。
其隱層神經元會選取f(x)=1/(1+e-x)來作為傳遞函數,輸出層則是通過輸出量的范圍選擇S型的傳遞函數或者是線性函數。然后采用樣本網絡進行訓練,可以采用萊文貝格-馬夸特(Levenberg-Marquardt,LM)方法,性能指數公式為
(9)
式中,P代表樣本個數,K代表輸出個數,dsk代表第s個樣本所輸入時的第k個量期望輸出,zsk代表對應的現實輸出。W=[w1,w2,…,wN]T代表網絡內的權值和閾值所構成的向量,因此,能夠將式(9)改成

(10)
式中,E代表累積誤差向量,向量元素esk=zsk-dsk。能夠利用式(10)可以得到Jacobian矩陣公式:
(11)
將WN設定成第N次迭代的權值構成的向量,即指新的權值公式為

(12)
式(12)中,I代表單位矩陣,μ代表大于0的學習參數。然后把式(11)以及式(12)合并成公式

(13)
在利用式(13)所獲取權值計算出對應的流量,在將計算結果與實際結果進行對比,如果效果較好。則說明式(13)可以收斂,以此可以對人體局部動作進行識別[12]。為檢驗本文方法的有效性及可行性,需進行仿真。
本文選用Matlab進行驗證,測試環境為windows2000,4核處理器,2.4GHz,內存為128GB,如圖1所示。

圖1 Matlab操作界面
利用該軟件進行人體局部動作識別,得到人體特征點,本文將通過提取到的特征點進行仿真。其中,人體動作圖像是通過Weizmann數據集中獲取得到,如圖2(a)所示,利用本文方法獲取特征點,如圖2(b)所示。

圖2 人體動作局部特征提取
在上述提取結果中任意選取7個局部動作作為分類原始指標。所有動作的序列幀速都不一樣,想要保證一致,就需要將所有的動作幀數設定在25~30之間,可以保證所有動作的流暢性,同時設置迭代次數為50。
對人體動作提取數量的差異是決定識別方法效果的一個指標,提取數據集中的數據,根據數據提取數量多少來判斷識別效果,提取數據數量多,識別效果在一定程度上表現為良好。為驗證本文方法的有效性及可行性,本文將通過對比文獻[1]方法、文獻[2]方法以及本文方法得到實驗結果,并分析。實驗結果如表1所示。

表1 人體動作提取數量/個
在對人體局部動作進行提取時,本文方法所提取的局部動作數量明顯高于兩種傳統方法。
本文考慮了人體動作在時空中的狀態差別及運動執行效率變化較大的問題構建了多尺度局部時空領域特征,采用卡爾曼濾波法做了無偏差最有評估,將臨近領域局部特征盡可能多的提取,并排除了差異較大的數據,因此提取數量大,且數據準確率高。
在提取出的數據的基礎上,對人體動作進行分類。將上述數據集在文獻[1]、文獻[2]及本文方法下進行驗證,引入分類精確度判斷三種方法的識別效果,分類精度計算如式(14)下:

(14)
式(14),vi表示分類精準度,Yi表示分類數量,U表示人體動作類別總數量。
通過式(14)得出識別方法的分類精度,精度高,識別效果好。

表2 分類精度對比/%
上述實驗中,文獻[1]和文獻[2]方法在數據分類時,對于一些局部動作有數據缺失,證明本文方法分類更加精準。本文方法利用小波轉換函數分解時,可以獲得小波系數的向量,最終把局部動作信號合并成一個特征向量值的特點,將相似度高的數據歸為一類,從而提高了分類精度。
本文方法在人體動作數量提取和動作分類方面具有顯著的優勢,證明了本文識別方法的有效性。
本文考慮了人體動作在較大的時空中的狀態和運動執行效率差異性較大,會導致人體運動在時間尺度上的變化因素,利用卡爾曼濾波法及Haar小波轉換函數,提高了對人體動作的提取數量,將分類更加精準化,實現了對人體局部動作的精準識別。
為以后的人體動作識別研究打開了新的思路,提供了理論基礎,推進機器人代替人工的進程,使社會向更加智能化的方向發展。