引言
隨著科技的發(fā)展和進步,計算機已經漸漸適應人的需求。人類在利用計算機解決問題時,并沒有將主觀能動性和計算機的高效性有機地結合起來。研究新型的人機交互工具能夠打破這一障礙。當虛擬現(xiàn)實越來越被人熟知時,可以使用手勢作為載體進行人機交互。目前,手勢輸入的種類有基于圖像的和基于加速度傳感器的。由于圖像的手勢識別對外部環(huán)境的依賴比較大,而加速度傳感器識別就不受外部條件的限制,甚至可以依靠單手完成操作,因此,基于加速度傳感器的方法能有效地識別手勢動作,完成人機交互。本文采用ADXL335三軸加速度傳感器分別采集五個手指和手背上的加速度信息,實現(xiàn)手勢的輸入。
1手勢識別方法
手勢的執(zhí)行是一個動態(tài)的過程,主要表現(xiàn)在手指彎曲引起的手的形狀和手在空間的位置和方位的變化,需要從時間和空間兩方面來描述。根據(jù)手勢的時變特征,可將手勢分為靜態(tài)手勢和動態(tài)手勢。從測量的角度看,靜態(tài)手勢可用某一時刻手的空間特征的測量值來表示,而動態(tài)手勢是指需要使用隨時間變化的空間特征來描述的手勢。靜態(tài)手勢可以用各個關節(jié)測得的特征值來表示,而動態(tài)手勢需用一段時間內手的空間特征的一組測量序列值來表示叫人的手有多個自由度,運動十分靈活、復雜,而且不同的人,手的大小不同。因此,同樣的手勢,不同的人作出時手的運動會存在差別;同一個人在不同的時間、地點作出手勢也不一樣叫所以,本文主要針對靜態(tài)手勢的數(shù)據(jù)手套進行分析研究。
2手勢的識別技術
目前,比較流行的手勢識別技術有模板匹配法、特征提取和BP算法等。
模板匹配法:主要是將傳感器輸入的原始數(shù)據(jù)與預先存儲的模板進行匹配,通過測量兩者之間的相似度來完成識別任務叫由于需要大量的基礎數(shù)據(jù)作為匹配對象,所以受到噪聲、光照、復雜環(huán)境影響較大,并且匹配速度慢。但是,模板匹配法簡單、易掌握,普及程度高。
特征提?。涸谔卣魈崛∵^程中,輸入數(shù)據(jù)中的低層特征被提取出來,經過分析而轉化成包含手形語義的高層特征,然后用高層特征進行手形識別。
BP算法:是一種按誤差逆?zhèn)鞑ニ惴ㄓ柧毜亩鄬忧梆伨W絡。BP網絡的學習規(guī)則是使用最速下降法,通過反向傳播來不斷調整網絡的權值和閾值,使網絡的誤差平方和最小。
3BP算法
BP神經網絡是一種前向傳播的多層網絡,網絡除了輸入節(jié)點以外,還有一層或多層隱含節(jié)點。其訓練方法被稱為誤差反傳播算法,它利用實際輸出和期望輸出之差對網絡的多層連接權由后向前逐層進行校正叫BP網絡的最大缺點是樣本訓練的收斂速度慢。為提高網絡的收斂速度,同時防止網絡的振蕩發(fā)散,本次選取的BP神經網絡是1個3層BP網絡結構(含1個隱層),隱單元及輸出單元用sigmoid函數(shù)輸出,輸出共分為10類,即輸出神經元個數(shù)為10。由于輸入矢量為處理后的手部加速度傳感器(用18X10的數(shù)字矩陣表示),因此第一層為240個神經元,第二層為隱含層。根據(jù)經驗,其神經元數(shù)目一般為輸入矢量維數(shù)的10%,為26個神經元,采用改進的BP算法。將每個樣本對應的矩陣元素值輸入神經網絡的各個輸入單元,并為每個輸出單元指定期望輸出,計算每個輸出單元的實際輸出與期望輸出的誤差以及隱含層誤差。計算實際輸出與期望輸出的誤差公式為:
dk=(Ek-Ok)XOkX(1—Ok)
式中,互為期望輸出,。上為實際輸出,k=0,1,2,…,9。
將誤差定義式展開到隱含層的公式為:
網絡輸入誤差是各層權值%Vj,即:
式中的負號表示梯度下降,常數(shù)nG(0,1)代表學習速率。
由于BP神經網絡算法的收斂速度慢,優(yōu)化的目標函數(shù)非常復雜,所以需要優(yōu)化學習速率。三層感知器的BP學習算法權值調整計算公式為:
將每個加速度傳感器中每個軸的數(shù)據(jù)特征向量作為神經網絡的輸入,所以神經的輸入層神經元個數(shù)等于特征向量的維數(shù),即9X18=162個輸入神經元。輸出層神經元個數(shù)的確定因為要識別10個數(shù)字,因此輸出選擇為10X1的矩陣,即輸出節(jié)點數(shù)為10。當0?9輸入神經網絡后在輸出神經元對應的位置上為1,其他的位置為0。輸入數(shù)字0,第1個輸出神經元為1,其他為0;輸入數(shù)字1,第2個輸出神經元為1,其他為0;依此類推。
隱含層數(shù)越多,神經網絡學習速度就越慢。根據(jù)Kosmogorov定理,在合理的結構和恰當?shù)臋嘀禇l件下,3層BP網絡可以逼近任意的連續(xù)函數(shù)。因此,我們選取結構相對簡單的3層BP網絡。
一般情況下,神經元個數(shù)與函數(shù)收斂程度有關。根據(jù)經驗公式s=sqrt(nXm),其中,m為輸入神經元個數(shù),n為輸出神經元個數(shù),得出隱含層神經元個數(shù)為40個。
采用定義學習速率和采用帶動量因子算法兩種改進方法。識別內容為數(shù)字0?9,利用手勢特征,提取每個加速度傳感器中每個軸的數(shù)據(jù)作為BP的數(shù)據(jù)輸入?yún)?shù),為BP進行初始化及參數(shù)訓練,可以提高數(shù)據(jù)的識別率。在學習收斂的情況下,增大n,以縮短學習時間;當n偏大致使不能收斂時,要及時減小n,直到收斂為止[7]o將上一次權值調整量的一部分迭加到按本次誤差計算所得的權值調整量上,作為本次的實際權值調整量,即:
DW(n)=—hvE(n)+aDW(n—1)
4實驗結果分析
通過Matlab計算所得出得神經網絡學習誤差曲線和數(shù)字識別結果如圖1所示。
圖1神經網絡學習誤差曲線
本文將0?9共10類數(shù)據(jù)中的每類取20個做測試樣本,共200個測試樣本對系統(tǒng)進行性能測試。測試結果如表1所歹U。由表1中的數(shù)據(jù)可知,數(shù)字識別的正確率為98.5%,正確率較高,拒識率為6.5%,也比較高??傮w數(shù)字識別有效率為94.5%。Kadous用PowerGloves作為手語輸入設備,這樣的識別率僅為80%[8-9]。
表1測試結果列表
手勢 |
樣本個數(shù) |
識別個數(shù) |
錯誤識別 |
正確率 |
拒絕識別個數(shù) |
拒絕率 |
有效率 |
手勢0 |
20 |
18 |
0 |
100% |
2 |
10% |
90% |
手勢1 |
20 |
19 |
0 |
100% |
1 |
5% |
95% |
手勢2 |
20 |
17 |
0 |
100% |
3 |
15% |
85% |
手勢3 |
20 |
18 |
0 |
100% |
2 |
10% |
90% |
手勢4 |
20 |
18 |
0 |
100% |
2 |
10% |
90% |
手勢5 |
20 |
20 |
0 |
100% |
0 |
0 |
100% |
手勢6 |
20 |
18 |
1 |
95% |
1 |
5% |
95% |
手勢7 |
20 |
19 |
1 |
95% |
0 |
0 |
100% |
手勢8 |
20 |
18 |
1 |
95% |
1 |
5% |
95% |
手勢9 |
20 |
19 |
0 |
100% |
1 |
5% |
95% |
總計 |
200 |
184 |
3 |
98.5% |
13 |
6.5% |
94.5% |
5結語
實際上,數(shù)字識別的正確率和拒識率與數(shù)字識別的判斷值有關,本文的判斷值設置為0.7。判斷值設置得高,數(shù)字識別的正確率就高,同時數(shù)字的拒識率也相應地就高,反之亦然。判斷值的選擇需要根據(jù)實際情況來定。