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