劉 偉
(徐州醫(yī)科大學(xué)醫(yī)學(xué)信息與工程學(xué)院,江蘇 徐州 221000)
通過使機(jī)器對人體行為、動作進(jìn)行模擬學(xué)習(xí),完成很多相對較為危險或者繁瑣的工作,可以解放人力、保障人類安全、減少經(jīng)濟(jì)開銷,提高工作效率等。但是該項技術(shù)正處于起步階段,機(jī)器人不能對人體動作進(jìn)行完全模擬,出現(xiàn)執(zhí)行偏差,不能獨(dú)立、智能地完成全部工作,因此人們開始對基于機(jī)器人學(xué)習(xí)的人類動作識別方法進(jìn)行深入的研究。
文獻(xiàn)[1]針對傳統(tǒng)機(jī)器學(xué)習(xí)方法在通過運(yùn)動傳感器對人體的運(yùn)動進(jìn)行識別時,嚴(yán)重依賴人工的不足,且識別正確率較低等問題,提出一種改進(jìn)卷積網(wǎng)絡(luò)和雙層長短期記憶網(wǎng)絡(luò)混合模型,以此實現(xiàn)對人體動作的自動提取識別。但是此模型在與時序結(jié)構(gòu)、傳感器數(shù)據(jù)層狀等特點(diǎn)相結(jié)合時,需要把多維傳感器的數(shù)據(jù)信息轉(zhuǎn)化成圖像RGB矩陣,才能進(jìn)行適應(yīng)性處理,使處理過程更加復(fù)雜,由數(shù)據(jù)到矩陣的轉(zhuǎn)換,會出現(xiàn)結(jié)果不精準(zhǔn)且轉(zhuǎn)換數(shù)據(jù)不完全的問題,導(dǎo)致識別產(chǎn)生誤差。
文獻(xiàn)[2]中的研究是為了實現(xiàn)人機(jī)協(xié)作的靈活性,提出機(jī)器人需要具備一定的合作經(jīng)驗的要求,以此完成對人體進(jìn)行有意識識別的方法和流程。通過構(gòu)建BP神經(jīng)網(wǎng)絡(luò)模型,對機(jī)器人進(jìn)行離線訓(xùn)練,使其具有一定的合作性技能。但是上述方法只能應(yīng)用在特定領(lǐng)域內(nèi),不具備廣泛的適用性,難以滿足社會現(xiàn)實需求。
為了解決上述問題,本文提出一種基于機(jī)器學(xué)習(xí)的人體動作局部特征點(diǎn)識別方法。通過分析人體行為動作推斷肢體在時空領(lǐng)域中的運(yùn)動效率,對特征進(jìn)行提取,然后通過卡爾曼濾波法對人體關(guān)節(jié)坐標(biāo)信息評估,其本質(zhì)上是一種最優(yōu)化回歸數(shù)據(jù)處理算法。以此構(gòu)建數(shù)學(xué)模型和BP神經(jīng)網(wǎng)絡(luò)進(jìn)行定量識別,對人體局部動作進(jìn)行分類識別。
人體運(yùn)動屬于非剛體運(yùn)動,它在時空中的狀態(tài)差別很大,運(yùn)動執(zhí)行效率變化較大,導(dǎo)致人體運(yùn)動在時間尺度上可能存在很大的差異,為了解決這種差異,本文構(gòu)建了多尺度局部時空領(lǐng)域特征[3]。即對所有局部時空特征擬定多種不同的最近鄰特征數(shù)量,形成尺寸各不相同的局部時空領(lǐng)域。小尺度的局部領(lǐng)域可以抓取人體運(yùn)動的所有細(xì)節(jié)信息,而大尺度的局部領(lǐng)域負(fù)責(zé)描述運(yùn)動的宏觀統(tǒng)計量[4]。
通過以下步驟實現(xiàn)多尺度局部時空領(lǐng)域特征的構(gòu)建:
1)時空興趣點(diǎn)的局部特征和檢測描述,擬定di代表局部特征與人體動作視頻V的時空興趣點(diǎn);
3)對所有尺度中的領(lǐng)域特征構(gòu)建各自碼本,再分別編碼,取得編碼系數(shù)c;
5)最后級聯(lián)全部尺寸下的池化向量,取得HV。
表示人體動作視頻V下的池向量。將依據(jù)HV核的支持向量機(jī)(Support vector machine, SVM)作為動作分類器,對人體動作特征進(jìn)行提取,其提取過程為
(1)
式中,Hm與Hn為兩種特征向量,Hm(i)與Hn(j)分別為Hm與Hn的第i與j種特征分量[5]。
通過上述步驟完成人體動作特征的提取。要進(jìn)一步實現(xiàn)特征點(diǎn)識別,需根據(jù)提取結(jié)果構(gòu)建人體行為動作模型。
本文采用卡爾曼濾波法對人體關(guān)節(jié)坐標(biāo)信息數(shù)據(jù)進(jìn)行評估。卡爾曼濾波器是一個線性遞歸的濾波器,以目標(biāo)以前的狀態(tài)序列為基礎(chǔ),然后對以后的狀態(tài)做無偏差最優(yōu)評估[6-8]。該方法本質(zhì)上為一種最優(yōu)化的自回歸數(shù)據(jù)信息處理算法,主要利用遞推方式預(yù)測,具體的算法公式為
xk=Fgk-1+Buk+Wk
(2)
式中,xk∈Rn為人體動作狀態(tài)變量,gk-1為前一個人體動作狀態(tài)向量,F(xiàn)即傳遞矩陣,B代表控制矩陣,uk表示控制輸入,Wk叫做過程噪聲。通常擬定服從高斯分布N(0,Qk),Qk代表過程噪聲協(xié)方差矩陣,則遞推算法的測量值為
zk=Hxk+vk
(3)
式中,zk∈Rm是觀測變量,H代表測量矩陣,vk代表測量噪聲。
利用卡爾曼濾波原理進(jìn)行計算。預(yù)報階段,由前一時刻狀態(tài)生成當(dāng)前時刻狀態(tài)作為預(yù)報值。進(jìn)入分析階段后,利用最小方差估計方法,將觀測數(shù)據(jù)進(jìn)行狀態(tài)重新分析。隨著狀態(tài)預(yù)報的持續(xù)進(jìn)行和新的觀測數(shù)據(jù)的不斷輸入,整個過程不斷向前推進(jìn)。
但在使用卡爾曼濾波法時,需要采用合適的數(shù)學(xué)模型,對濾波公式中的系統(tǒng)參數(shù)、傳遞矩陣以及測量矩陣進(jìn)行確認(rèn)。本文則以泰勒展開來代表關(guān)節(jié)動作。某一個關(guān)節(jié)點(diǎn)用i表示,而該點(diǎn)在X軸移動速度泰勒展開式如式(4)所示
(4)
式中,xi表示某關(guān)節(jié)點(diǎn)處的狀態(tài)向量,k代表離散時間點(diǎn),ΔT代表采樣的時間。
同理,在Y軸與Z軸位置方向,人體局部動作速度也能夠運(yùn)行相同方式進(jìn)行泰勒展開。因為Kinect傳感器取得深度信息效率是30幀/秒,以此速度進(jìn)行采集時,在人體相鄰最近兩幀位置上的變化并不明顯。因此,本文在建立數(shù)學(xué)模型時,需要將人體的關(guān)節(jié)點(diǎn)以均速動作為目標(biāo)進(jìn)行采樣。通過式(4)建立卡爾曼濾波數(shù)學(xué)模型公式為
K(k)=Fxi(k)+W(k)
(5)
式中,W(k)代表協(xié)方差矩陣。
Kinect傳感器所獲取的所有關(guān)節(jié)點(diǎn)坐標(biāo)數(shù)據(jù)信息,行為動作的測量矩陣數(shù)學(xué)模型如式(6)所示
Zi(k+1)=HXi(k+1)+V(k+1)
(6)
在測量噪聲V(k+1)中所建立的測量噪聲協(xié)方差矩陣W(k),幾乎都是對角矩陣。
通過多次測試以后,最終確定xi(k+1)的對角線上值為0.05,對角線上的數(shù)值是3,且確定起始狀態(tài)向量是零矩陣,起始誤差協(xié)方差矩陣是單位矩陣。憑借式(6)計算出Zi(k+1),并計算出關(guān)節(jié)點(diǎn)i在k時的位置[9]?;谏鲜?,實現(xiàn)人體行為動作模型的構(gòu)建,利用該模型可進(jìn)行人體局部動作識別。
人體的局部動作是一種非平穩(wěn)的信號,在進(jìn)行特征統(tǒng)計時會隨著時間的改變而改變,而傳統(tǒng)特征點(diǎn)提取,幾乎是通過時頻域方面進(jìn)行計算的,然后提取動作信號數(shù)據(jù)的時域特征,即指均值、最大幅值以及標(biāo)準(zhǔn)差進(jìn)行識別或者通過頻域?qū)ζ溥M(jìn)行考慮,分析其功率譜能量和頻率絕對值等。而本文所利用的是小波變換針對所有的低頻信號分解,能夠很好的對非平穩(wěn)信號進(jìn)行處理,但各種小波在對信號作分析時,所得到的數(shù)據(jù)結(jié)果也不相同,因此,在利用小波轉(zhuǎn)換函數(shù)分解時,可以獲得小波系數(shù)的向量,最終把局部動作信號合并成一個特征向量值,且同時選取短時的傅里葉變換以后質(zhì)心頻率、振鈴計數(shù)、上升時間、持續(xù)時間、窗口頻域特征峰值以及能量[10]。
構(gòu)建神經(jīng)網(wǎng)絡(luò)模型識別分類步驟如下所示:
1)把從傳感器上所傳輸?shù)膭幼餍盘柪眉哟疤幚恚?/p>
2)在時間窗中計算下列人體動作向量:包含質(zhì)心頻率、振鈴計數(shù)、上升時間、小波系數(shù)特征、持續(xù)時間、窗口頻域特征峰值以及能量;
3)構(gòu)建一個初始神經(jīng)網(wǎng)絡(luò)模型;
4)把特征參數(shù)視為輸入神經(jīng)元,輸入進(jìn)神經(jīng)網(wǎng)絡(luò)內(nèi)進(jìn)行訓(xùn)練;
5)利用訓(xùn)練完畢的神經(jīng)網(wǎng)絡(luò)對測試集分類進(jìn)行定量識別,并且計算運(yùn)動識別正確率。
本文所采用的神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)關(guān)系表達(dá)式為
(7)
式中,yj代表隱層輸出狀態(tài)向量,xi代表輸入狀態(tài)向量,whij代表輸入層至隱層的連接值,bj代表隱層神經(jīng)元的閾值,fy代表激勵函數(shù)。由yj得出輸出狀態(tài)向量zk
(8)
式中,wojk代表至輸出層的連接權(quán)值,ck代表輸出層閾值。利用構(gòu)建的神經(jīng)網(wǎng)絡(luò)對人體局部行為進(jìn)行定量識別。
把16個特征向量用于神經(jīng)網(wǎng)絡(luò)的輸入,而網(wǎng)絡(luò)輸入神經(jīng)元有16個,其隱藏性格神經(jīng)元為8個,其6中動作狀態(tài)是網(wǎng)絡(luò)輸出,輸出神經(jīng)元有6個。對樣本數(shù)據(jù)進(jìn)行隨機(jī)標(biāo)簽,然后分成兩部分運(yùn)轉(zhuǎn),而其中的一部分即為訓(xùn)練集,其它則為測試集。接著利用訓(xùn)練集數(shù)據(jù)信息訓(xùn)練神經(jīng)網(wǎng)絡(luò),接著對測試集數(shù)據(jù)進(jìn)行測試[11]。
其隱層神經(jīng)元會選取f(x)=1/(1+e-x)來作為傳遞函數(shù),輸出層則是通過輸出量的范圍選擇S型的傳遞函數(shù)或者是線性函數(shù)。然后采用樣本網(wǎng)絡(luò)進(jìn)行訓(xùn)練,可以采用萊文貝格-馬夸特(Levenberg-Marquardt,LM)方法,性能指數(shù)公式為
(9)
式中,P代表樣本個數(shù),K代表輸出個數(shù),dsk代表第s個樣本所輸入時的第k個量期望輸出,zsk代表對應(yīng)的現(xiàn)實輸出。W=[w1,w2,…,wN]T代表網(wǎng)絡(luò)內(nèi)的權(quán)值和閾值所構(gòu)成的向量,因此,能夠?qū)⑹?9)改成
(10)
式中,E代表累積誤差向量,向量元素esk=zsk-dsk。能夠利用式(10)可以得到Jacobian矩陣公式:
(11)
將WN設(shè)定成第N次迭代的權(quán)值構(gòu)成的向量,即指新的權(quán)值公式為
(12)
式(12)中,I代表單位矩陣,μ代表大于0的學(xué)習(xí)參數(shù)。然后把式(11)以及式(12)合并成公式
(13)
在利用式(13)所獲取權(quán)值計算出對應(yīng)的流量,在將計算結(jié)果與實際結(jié)果進(jìn)行對比,如果效果較好。則說明式(13)可以收斂,以此可以對人體局部動作進(jìn)行識別[12]。為檢驗本文方法的有效性及可行性,需進(jìn)行仿真。
本文選用Matlab進(jìn)行驗證,測試環(huán)境為windows2000,4核處理器,2.4GHz,內(nèi)存為128GB,如圖1所示。
圖1 Matlab操作界面
利用該軟件進(jìn)行人體局部動作識別,得到人體特征點(diǎn),本文將通過提取到的特征點(diǎn)進(jìn)行仿真。其中,人體動作圖像是通過Weizmann數(shù)據(jù)集中獲取得到,如圖2(a)所示,利用本文方法獲取特征點(diǎn),如圖2(b)所示。
圖2 人體動作局部特征提取
在上述提取結(jié)果中任意選取7個局部動作作為分類原始指標(biāo)。所有動作的序列幀速都不一樣,想要保證一致,就需要將所有的動作幀數(shù)設(shè)定在25~30之間,可以保證所有動作的流暢性,同時設(shè)置迭代次數(shù)為50。
對人體動作提取數(shù)量的差異是決定識別方法效果的一個指標(biāo),提取數(shù)據(jù)集中的數(shù)據(jù),根據(jù)數(shù)據(jù)提取數(shù)量多少來判斷識別效果,提取數(shù)據(jù)數(shù)量多,識別效果在一定程度上表現(xiàn)為良好。為驗證本文方法的有效性及可行性,本文將通過對比文獻(xiàn)[1]方法、文獻(xiàn)[2]方法以及本文方法得到實驗結(jié)果,并分析。實驗結(jié)果如表1所示。
表1 人體動作提取數(shù)量/個
在對人體局部動作進(jìn)行提取時,本文方法所提取的局部動作數(shù)量明顯高于兩種傳統(tǒng)方法。
本文考慮了人體動作在時空中的狀態(tài)差別及運(yùn)動執(zhí)行效率變化較大的問題構(gòu)建了多尺度局部時空領(lǐng)域特征,采用卡爾曼濾波法做了無偏差最有評估,將臨近領(lǐng)域局部特征盡可能多的提取,并排除了差異較大的數(shù)據(jù),因此提取數(shù)量大,且數(shù)據(jù)準(zhǔn)確率高。
在提取出的數(shù)據(jù)的基礎(chǔ)上,對人體動作進(jìn)行分類。將上述數(shù)據(jù)集在文獻(xiàn)[1]、文獻(xiàn)[2]及本文方法下進(jìn)行驗證,引入分類精確度判斷三種方法的識別效果,分類精度計算如式(14)下:
(14)
式(14),vi表示分類精準(zhǔn)度,Yi表示分類數(shù)量,U表示人體動作類別總數(shù)量。
通過式(14)得出識別方法的分類精度,精度高,識別效果好。
表2 分類精度對比/%
上述實驗中,文獻(xiàn)[1]和文獻(xiàn)[2]方法在數(shù)據(jù)分類時,對于一些局部動作有數(shù)據(jù)缺失,證明本文方法分類更加精準(zhǔn)。本文方法利用小波轉(zhuǎn)換函數(shù)分解時,可以獲得小波系數(shù)的向量,最終把局部動作信號合并成一個特征向量值的特點(diǎn),將相似度高的數(shù)據(jù)歸為一類,從而提高了分類精度。
本文方法在人體動作數(shù)量提取和動作分類方面具有顯著的優(yōu)勢,證明了本文識別方法的有效性。
本文考慮了人體動作在較大的時空中的狀態(tài)和運(yùn)動執(zhí)行效率差異性較大,會導(dǎo)致人體運(yùn)動在時間尺度上的變化因素,利用卡爾曼濾波法及Haar小波轉(zhuǎn)換函數(shù),提高了對人體動作的提取數(shù)量,將分類更加精準(zhǔn)化,實現(xiàn)了對人體局部動作的精準(zhǔn)識別。
為以后的人體動作識別研究打開了新的思路,提供了理論基礎(chǔ),推進(jìn)機(jī)器人代替人工的進(jìn)程,使社會向更加智能化的方向發(fā)展。