劉 恒, 黃曉鈺, 吳朝陽, 譚智強
(南京信息工程大學 電子與信息工程學院, 江蘇 南京 210044)
作為自然交互方式的重要組成部分,手勢交互在人機接口、聾啞人手語識別、虛擬現(xiàn)實、智能家電等領域都起著重要作用,它在表情識別、唇讀、步態(tài)識別、機器人視覺、圖像拼接和三維重建等方面都有直接推廣的意義[1-4]。目前主要的手勢識別方法有兩種:一種是基于圖像設備獲取人的手勢動作圖像,然后利用各種方法進行圖像分析和識別;另一種是基于微傳感器獲取手不同部位的動作信息,進而通過與模型的匹配得到動作者的實時手勢信息[5]。圖像設備獲取手勢動作要受采集環(huán)境影響,特別是環(huán)境光照影響,加之人手是復雜的變形體,手勢具有多樣性、多意性及空間上的差異性等特點,基于圖像設備的手勢識別技術在一定程度上存在局限性?;谖鞲衅鞯氖謩葑R別系統(tǒng)只需獲取人手各部位的動作數(shù)據(jù),通過算法便可還原動作者的意圖。該類系統(tǒng)在任何環(huán)境和空間里都能間接獲得動作者的手勢信息,基本能夠克服基于圖像設備識別的受環(huán)境和手勢形體影響,基于微傳感器的手勢識別研究逐漸得到重視。
目前,基于加速度傳感器的手勢識別方法主要有動態(tài)時間規(guī)整( DTW)和隱馬爾科夫模型( HMM)。然而由于個體差異,同一手勢的加速度數(shù)據(jù)( 如幅值、手勢長度等) 存在較大差異;即使同一個體,同一手勢的加速度數(shù)據(jù)也存在差異。因此上述方法難以建立準確的手勢模板和隱馬爾卡夫模型,識別準確率較低,個體適應性較差[6]。另外,DTW算法計算量大,隨著手勢數(shù)量的增加,算法實時性將大大降低;并且由于加速度傳感器無法獲取設備姿態(tài)信息[7],用戶只能嚴格地在給定的設備姿態(tài)下操作,這給用戶造成了極大的不便。
由于不同手勢對應的手指形態(tài)不一,有研究者開始關注采用電容式傳感器來敏感手部動作[8]。電容式傳感器對應的設備結構簡單、成本低、接口電路芯片靈活多樣,系統(tǒng)容易集成,但電容式傳感器噪聲較大,對位置變化較敏感[9]。本文設計了一種基于電容探頭的手勢識別裝置,探頭采用4通道,其中3個通道敏感靜態(tài)手指位置的變化,另1個通道敏感手掌接觸面積的變化;采用FDC2214芯片將檢測電容的變化轉換為振蕩頻率的變化,減少輸出信號的干擾。利用卡爾曼濾波方法提取了手勢變化產生的有效信號,通過神經網(wǎng)絡對待測者手勢特征進行訓練記憶,訓練好的網(wǎng)絡就可用于測試者手勢識別。
設計的手勢識別系統(tǒng)包括電容探頭、數(shù)字電容/頻率轉換模塊FDC2214、STM32F103ZET6單片機、TFT顯示屏、矩陣按鍵、藍牙收發(fā)模塊、電源模塊。整個系統(tǒng)硬件結構見圖1(電源模塊未給出)。
圖1 手勢識別裝置硬件結構
FDC2214數(shù)字電容轉換器具有內部LC振蕩電路,振蕩頻率被內部轉換成對應數(shù)字量,手勢改變檢測電容大小,電容再通過振蕩電路轉換為頻率,通過頻率不同就可識別不同的手勢。主控單片機STM32F103讀取對應的頻率數(shù)值并進行處理和分類,利用采集分類的數(shù)據(jù)訓練好神經網(wǎng)絡,再利用建立的網(wǎng)絡識別不同的手勢。其中TFT屏顯示手勢識別結果,矩陣按鍵設置交互參數(shù)和切換功能模式,TFT屏模塊擴展的SD卡記錄識別過人的網(wǎng)絡參數(shù)。由于按鍵、顯示屏及藍牙模塊均為成熟通用電路,本文主要討論探頭極板及接口傳感器設計。
識別系統(tǒng)將人手作為一個電容極板,另一個極板為固定面積的金屬。電容C的表達式:
(1)
式中,ε為空氣介電常數(shù),d為手和極板間距,在識別時保持d不變,S為手和金屬極板的正對面積,不同的手勢對應的正對面積S不一樣。
考慮加工尺寸精確和導電性,探頭采用了PCB的覆銅,為了保證手勢和覆銅極板間距不變,采用測試輔助設備,如圖2所示。測試輔助設備包括放置測試手的硬質亞克力板,覆銅電極附著在FR-4絕緣板上,亞克力板和FR-4絕緣板通過塑料螺柱連接固定。覆銅電極與FDC2214的接口通過射頻線連接,實驗裝置及顯示設備放置于測試區(qū)域外。測試時手緊貼亞克力板放置。
圖2 電容探頭及測試輔助裝置
由于單手手勢涉及到5個手指和手掌,正對的覆銅的設計就有多種方案,包括每個手指和手掌均對應一個區(qū)域覆銅,單手就需要檢測6個電容的變化量;5個手指共用一個覆銅區(qū)域,手掌單獨使用一個覆銅區(qū)域;整個手指和手掌共用一個覆銅區(qū)域等方案。
采用單通道整體矩形極板,極板面積大,雖然檢測靈敏度較高,結構簡單,占用通道數(shù)少;但對于不同手勢的電容數(shù)值變化特征不一樣,數(shù)據(jù)難以線性擬合,且受環(huán)境影響較大,不同手勢特征重疊,檢測誤判率高。
如圖3所示,采用兩通道圓弧形極板,極板區(qū)域的設計符合手指分布區(qū)域,圓形區(qū)域貼合手掌,靈敏度較高,但手掌大小以及擺放方式很大程度影響識別準確率。
圖3 二分式覆銅
如圖4所示,采用交叉4通道鋸齒狀極板,一片F(xiàn)DC2214傳感器包含4個電容檢測通道,極板各通道響應輸出曲線近似正態(tài)分布,同一手勢在觸摸極板不同位置時,其手指通道輸出的數(shù)值和近似相等,使用該極板僅需將各通道輸出求和,即可識別不同手勢,且不受接觸區(qū)域限制,魯棒性強。
圖4 4通道覆銅
FDC2214是低功耗、低成本且高分辨率的非接觸式電容傳感器芯片,適用于接近檢測、手勢識別等應用,有4個外接通道,每個通道內置有LC諧振電路。FDC2214電氣連接見圖5。
圖5 FDC2214傳感器電氣連接
內部電路將諧振頻率轉換為數(shù)字量存儲在存儲器中,外接MCU通過IIC協(xié)議配置存儲器的初值及讀取轉換的頻率量。使用時,人手作為一個極板,同時通過人體連接大地,另外一個極板為覆銅極板,不同手勢就形成可變電容。可變電容與內置的諧振LC元件相并聯(lián),改變諧振頻率。
第x個通道諧振頻率經過m分頻后進入內核轉換,頻率fINx設定為
(2)
式中:L0為內置諧振電感,其值為18 μH;C0為內置諧振電容,其值為33 pF;接口線的電容為20 pF,通道最大諧振頻率為5.15 MHz;Cx為第x個通道外接手勢變化電容,根據(jù)fINx就可以推導出Cx的大小。
FDC2214采用參考信號對轉換頻率fIN進行計數(shù)度量,參考信號可以來自內部也可來自外部晶振,外部晶振典型為40 MHz,外部振蕩電路比內部振蕩電路穩(wěn)定,一般配置外部晶振。FDC2214有高達28位的精度,轉換的數(shù)據(jù)Dx為
(3)
外部MCU通過IIC通信協(xié)議就可以獲得Dx,結合參考信號和轉換頻率的分頻比就可得手勢變化電容Cx。
FDC2214傳感器讀取頻率時數(shù)據(jù)有噪聲,包括50 Hz工頻干擾、中高頻隨機噪聲等。卡爾曼濾波用來處理含噪聲的頻率數(shù)據(jù)。算法原理是用上一個狀態(tài)和當前狀態(tài)的測量值來估計當前狀態(tài),因為上一個狀態(tài)估計此時狀態(tài)值會有誤差,而測量當前狀態(tài)時也有測量誤差,根據(jù)2個誤差重新估計一個最接近真實狀態(tài)的值[10]。
引入一個離散控制過程的系統(tǒng),系統(tǒng)用一個線性隨機微分方程來描述:
X(k)=A·X(k-1)+B·U(k)+W(k)
(4)
系統(tǒng)的測量值Z(k):
Z(k)=H·X(k)+V(k)
(5)
式(4)和式(5)中,X(k)是k時刻的系統(tǒng)狀態(tài),U(k)是k時刻系統(tǒng)的控制量,k-1表示前一時刻。A、B、H是系統(tǒng)的可調參數(shù),W(k)和V(k)分別表示過程噪聲和測量噪聲。假設它們是高斯白噪聲,對應的協(xié)方差分別是Q、R(假設Q和R)不隨系統(tǒng)狀態(tài)變化)。
利用系統(tǒng)的過程模型預測下一狀態(tài)的系統(tǒng)。假設現(xiàn)在的系統(tǒng)狀態(tài)是X(k),根據(jù)系統(tǒng)的模型,可以基于系統(tǒng)的上一狀態(tài)而預測出現(xiàn)在的狀態(tài);
X(k|k-1)=A·X(k-1|k-1)+B·U(k)
(6)
式(6)中,X(k|k-1)是用上一狀態(tài)預測的結果,X(k-1|k-1)是上一狀態(tài)最優(yōu)結果,U(k)為現(xiàn)在狀態(tài)的控制量。
用P表示協(xié)方差:
P(k|k-1)=A·P(k-1|k-1)·A′+Q(7)
式中,P(k|k-1)是X(k|k-1)對應的協(xié)方差,P(k-1|k-1)是X(k-1|k-1)對應的協(xié)方差,A′表示A的轉置矩陣,Q是系統(tǒng)過程的協(xié)方差。式(6)和式(7)也就是對系統(tǒng)的預測。
有了現(xiàn)在狀態(tài)的預測結果,結合現(xiàn)在狀態(tài)的測量值,可以得到現(xiàn)在狀態(tài)的最優(yōu)化估算值X(k|k):
X(k|k)=X(k-1|k-1)+Kg(k)·
(Z(k)-H·X(k|k-1))
(8)
式中,Kg為卡爾曼增益,表示為
Kg(k)=P(k|k-1)·H′/(H·
P(k|k-1)·H′+R)
(9)
P(k|k)=(I-Kg(k)·H)·P(k|k-1) (10)
式中,I為單位矩陣,對于單模型單測量,I=1。當系統(tǒng)進入k+1狀態(tài)時,P(k|k)就是式子(7)中的P(k-1|k-1),這樣算法就可以自回歸的運算下去。
圖6中藍色線為直接采集轉換后的原始電容值時域曲線,紅色為卡爾曼濾波后的電容值對應曲線,卡爾曼濾波后,靜態(tài)電容變化平穩(wěn),為后續(xù)的數(shù)據(jù)處理提供了穩(wěn)定的信號。
圖6 卡爾曼濾波前后的電容值
2.2.1 數(shù)據(jù)歸一化
不同手勢對應的檢測電容大小不一樣,差異較大,為了減小后續(xù)神經網(wǎng)絡由于權值的跳變引起的精度誤差,需對卡爾曼濾波后電容值進行歸一化。本文采用最大-最小值歸一化。對于濾波后的電容值x,歸一化后為X,即
(11)
式中,xmin為卡爾曼濾波后作為訓練的樣本中最小值,xmax為卡爾曼濾波后作為訓練的樣本中最大值,歸一化后數(shù)據(jù)值在0~1區(qū)間。
2.2.2 BP神經網(wǎng)絡
BP神經網(wǎng)絡是一種按誤差逆向傳播算法進行網(wǎng)絡訓練的多層前饋型神經網(wǎng)絡,是一種有效的分類和識別工具[11]??梢詫κ謩葑兓鸬碾娙葑兓M行分類,設計使用的BP神經網(wǎng)絡結構見圖7。
圖7 BP神經網(wǎng)絡結構
BP神經網(wǎng)絡包括3層:輸入層、隱含層、輸出層。根據(jù)圖7,隱含層第i個節(jié)點的輸入neti表示為
(12)
隱含層第i個節(jié)點的輸出yi:
(13)
輸出層第k個節(jié)點的輸入netk:
(14)
輸出層第k個節(jié)點的輸出ok為
(15)
式(12)—式(15)中:Xj表示輸入層第j個節(jié)點的輸入,j=1,…,M;wij表示隱含層第i個節(jié)點到輸入層第j個節(jié)點之間的權值;φ(x)表示隱含層的激勵函數(shù);wki表示輸出層第k個節(jié)點到隱含層第i個節(jié)點之間的權值,i=1,…,q;Ψ(x)表示輸出層的激勵函數(shù);Ok表示輸出層第k個節(jié)點的輸出。
系統(tǒng)對p個訓練樣本的總誤差準則函數(shù)E[12]為:
(16)
輸出層權值的修正量Δwki,隱含層權值的修正量Δwij表示為:
(17)
wki·φ′(neti)·Xj
(18)
wki=A·wki+B·Δwki
(19)
wij=a·wij+b·Δwij
(20)
式中,A、B、a、b為權值調整系數(shù)。
應用中輸入層含2個神經元,隱含層為20個神經元,輸出層1個神經元。手指部分對應的3個通道累加后求平均值,再歸一化作為一個輸入神經元,手掌部檢測電容作為另外一個輸入神經元。在網(wǎng)絡訓練中,采集8種手勢(猜拳和劃拳)對應的電容值,每個手勢采集5次。對于8種手勢,采用編碼形式來區(qū)分,在訓練網(wǎng)絡中,石頭、剪刀、布、“1”“2”“3”“4”“5”手勢依次對應輸出數(shù)值為10、20、30、40、50、60、70、80,這樣就構成40組訓練樣本。網(wǎng)絡訓練流程見圖8,開始利用傳感器探頭和硬件電路結合卡爾曼濾波獲得手勢對應的電容值并進行歸一化處理,利用編碼規(guī)則對不同手勢進行輸出數(shù)值編碼;神經網(wǎng)絡參數(shù)初始化,包括訓練次數(shù)、學習精度、隱含層節(jié)點數(shù)、權值的初值、調整系數(shù);計算隱含層和輸出層的輸入和輸出值;根據(jù)輸入樣本和對應的目標編碼值來計算誤差,并對訓練次數(shù)自增運算;網(wǎng)絡訓練過程中調整權值和閾值的規(guī)則是當訓練次數(shù)小于規(guī)定次數(shù)且網(wǎng)絡輸出相對誤差的絕對值大于某百分比,滿足規(guī)則則調整權值,否則網(wǎng)絡訓練結束,保存訓練好的權值。
圖8 BP神經網(wǎng)絡訓練流程圖
利用EDA軟件繪制探頭的PCB版圖,利用熱轉印機及化學腐蝕方法獲得電容探頭單面板。為了減小線纜和連接寄生電容的影響,采用射頻連接線及同軸射頻接插件。整個硬件樣機固定在亞克力板上,跟主控單片機相連TFT屏背面帶有SD卡,用來存儲已經訓練過測試者的網(wǎng)絡參數(shù)信息,便于下次直接調用測試,無需再訓練網(wǎng)絡參數(shù)。擴展的另一塊TFT屏與第2個單片機相連,通過藍牙模塊通信,顯示判定的手勢結果,測試系統(tǒng)硬件見圖9。
圖9 測試系統(tǒng)硬件
訓練時,每個手勢緊貼在探頭上方的亞克力板上,利用按鍵輸入不同手勢的編碼值,每個手勢記錄5次作為訓練樣本。全部樣本輸入完成后開始網(wǎng)絡訓練,訓練好的網(wǎng)絡參數(shù)存入SD卡中。測試時,直接調用SD卡中的網(wǎng)絡參數(shù)。
神經網(wǎng)絡在硬件上的運行速度影響手勢判定時間。STM32F103單片機主頻為72 MHz,電容傳感器每采集一次電容值,然后通過卡爾曼濾波方法得到平穩(wěn)的電容值,每個手勢對應的目標輸出編碼通過按鍵輸入。訓練設定的相對誤差為目標值減去網(wǎng)絡輸出值的絕對值,此絕對值然后與目標值的比為相對誤差。wij和wki在網(wǎng)絡訓練中設置的初值一樣,利用rand()函數(shù)產生20個隨機數(shù),并找出其中最大的數(shù)值,然后這些隨機數(shù)分別除以最大數(shù)值減1后的值,再依次分別賦給權值,權值變化量初始均為0。網(wǎng)絡權值調整系數(shù)A為0.2,B為0.4,a為0.2,b為0.3。
網(wǎng)絡訓練的判據(jù)相對誤差有1%、2%、5%、10%,同時約定訓練最大次數(shù)為200次、300次、500次,表1為對應條件下神經網(wǎng)絡訓練所需要的時間。在容許相對誤差為5%和10%時,少于200次調整權值可以滿足要求,網(wǎng)絡訓練時間少于30 s。當容許相對誤差為1%和2%時,由于權值調整系數(shù)的設置,容許調整的次數(shù)越多,需要的訓練時間越長,但均小于60 s,改變權值調整系數(shù),對應網(wǎng)絡訓練時間會發(fā)生變化,合適的系數(shù)可以縮短訓練時間。
表1不同訓練精度和訓練次數(shù)下的網(wǎng)絡訓練時間s
相對誤差/%次數(shù)20030050012333472203139522222210191919
對8種手勢,每個手勢20次,隨機順序測試同一測試者,表2給出了測試正確率。
表2 不同間距下的手勢識別精度 %
根據(jù)理想平板電容原理知,極板電容反比于間距大小。覆銅極板和亞克力板距離為1.1 cm,測試對應1根手指完全緊貼亞克力板帶來的電容是80 pF左右,內部等效電容為55 pF,極板間距越小,對應不同手勢電容區(qū)分度越大,誤判率越低。但極板間距過小時,手勢檢測電容越大,檢測靈敏度提高,抗干擾性降低,易產生誤判。
本文通過設計和制造電容式傳感器探頭,結合電容數(shù)字轉換傳感器來敏感手勢變化電容,利用卡爾曼濾波和歸一化對電容數(shù)據(jù)進行處理,結合BP神經網(wǎng)絡實現(xiàn)了手勢識別硬件系統(tǒng),在極板間距為1.1~1.5 cm范圍內,多次測試8種手勢正確識別率在95%以上,可作為手勢識別的一個參考方案。
致謝:感謝德州儀器 (TI) 公司對本實驗提供的免費傳感器芯片支持,本實驗設計獲得2018年江蘇省大學生電子設計競賽一等獎。