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