張峻豪,吳 飛,朱 海
1.上海工程技術大學 電子電氣工程學院,上海201620
2.上海華測導航技術股份有限公司,上海201702
基于WiFi 的感知具有無源、易部署、不受光照限制、部署范圍廣、成本低等優(yōu)點[1],因為這些優(yōu)點使得研究人員對基于WiFi 的無源感知技術的興趣日益增多。近幾年衍生出了基于WiFi的行為感知[2]、身份認證[3]、手勢識別[4]、定位[5-6]、入侵檢測[7]、呼吸檢測[8]等一系列相關研究。基于WiFi的感知技術的基本原理是人和物體的運動或者存在會對WiFi信號的傳播產生反射、散射、衰減等一系列影響,而這些影響會反映在WiFi 信號的相關指示量中,比如接收信號強度(Received Signal Strength,RSS)和信道狀態(tài)信息(CSI)。RSS只能反映總體信號強度的變化,而CSI可以記錄30條頻率不同的子載波的幅度相位信息,其相比于RSS,其可以提供更加精細的多徑信息。
文獻[9]采用SVM(Support Vector Machine)對不同手勢進行分類并達到了90%的準確率,這種方法需要手工選擇分類特征,這無疑是十分麻煩的。文獻[10]的核心思想是在較低的信號級條件下推導和估計手勢的速度分布,這些速度分布代表了手勢的獨特的動力學特性,且與域無關。在此基礎上,開發(fā)了只需要一次訓練就能適應不同數據領域的手勢識別模型,在域內識別精度達到了92.7%,跨域識別精度在82.6%~92.4%之間。文獻[11]開發(fā)了一個基于元學習的無設備手勢識別系統來解決當測試條件與訓練條件不同時,識別性能會顯著下降的問題。該系統使用很少的新樣本在新的條件下執(zhí)行的手勢,準確率達到90%以上。文獻[12]設計了一種無監(jiān)督聯合對抗域適應方案,該方案無需在新環(huán)境中收集和標記訓練數據,即可實現精確且有彈性的無設備的手勢識別,此外在原始環(huán)境下,該系統能夠達到98.75%的手勢識別精度。在文獻[13]中設計了一個專用的卷積神經網絡來揭示由幅值和相位差為特征構造CSI 幀的判別局部特征,并構造了一個魯棒的手勢識別分類器,實驗結果驗證了該系統能夠達到95.8%的手勢識別精度。
在無源的手勢識別任務中,利用從普通的WiFi 設備中獲取得到的CSI 數據能在保證信息充足的前提下大幅降低設備成本。由于手勢的幅度并不大,其對于WiFi傳播的影響也是有限的,研究利用菲涅爾衍射理論對監(jiān)控的敏感區(qū)域進行計算,以幫助方法構建。同時,在實際應用過程中,一種自動判斷手勢是否發(fā)生以及發(fā)生時間段的方法是不可缺的。本文利用方差對動作是否發(fā)生進行判斷,并提出輕量級的基于高斯分布-Kmeans聚類的算法對手勢進行定位。在獲取到手勢波形后,采用基于DTW 的模板匹配算法進行手勢識別工作。實驗結果表明,該方法可以有效地對五種手勢進行識別,識別準確率達到了93%。
目前基于WiFi的感知系統基本都是基于接收信號強度RSS和信道狀態(tài)信息CSI。RSS表示所有路徑的總體接收能量強度[11],其可以表示為:

其中,Hk和θk分別表示第k條多徑的幅度和相位。從上式可以看出,RSS 表征比較粗略的總體能量強度,其不能反映多徑信息。
在IEE802.11n/ac 標準中,WiFi 設備支持多輸入多輸出MIMO,這些支持最新標準的設備通過信道狀態(tài)信息CSI 來量化通信信道狀態(tài)。在接收端接收到的信號可以表示為:


其中X表示發(fā)送信號,N為噪聲,H即代表信道狀態(tài)信息矩陣。對于載波頻率為f,時刻t的子載波,可以用信道頻率響應H(f,t)來表征CSI[12]:其中,hk(f,t)為第k條多徑的幅度衰減,e-jθk(f,t)為由于傳播延遲造成的相位偏移。CSI 可以反映空間中的多徑信息,其相比于RSS所反映的信息更加充足精細。
如圖1所示,菲涅爾區(qū)域被定義為一系列的同軸橢圓[13],橢圓的焦點分別為發(fā)送天線和接收天線的位置。用Tx和Rx表示發(fā)射接收天線,用λ表示信號的波長,則可以用下式來表示菲涅爾區(qū)域:

其中,Qn為第n菲涅爾區(qū)域的邊界點,即第n個菲涅爾區(qū)域的位置。

圖1 菲涅爾區(qū)域示意圖
信號在傳播過程中會產生多條傳播路徑,將這些路徑分為靜態(tài)路徑和動態(tài)路徑,則接收信號的可以表示為:

其中,Hs(f)是靜態(tài)路徑的和,Hd(f,t)為由于動作引起的動態(tài)路徑信號和。a(f,t)為動態(tài)路徑的幅值和初始相位偏移的復數表示,e-j2πd(t)/λ為由動態(tài)路徑長度d(t)導致的相位偏移。當接收信號的路徑長度改變λ2,信號相位改變π,接收信號的幅度可以下式表示:

當一個物體持續(xù)穿過多個菲涅爾區(qū)域時,其反映在CSI波形上為一個類正弦波,穿過不同菲涅爾區(qū)域邊界時,波形出現波峰或波谷。從公式(5)可以看出,越靠后的菲涅爾區(qū)域單徑越小,并不斷趨近于λ2,故在理論上,相同幅度的動作在靠后的菲涅爾區(qū)域內能反映的更加明顯。但實際上,由于傳播能量的影響,太靠后的菲涅爾區(qū)域內信號能量較小,并不利于動作檢測。故選擇第4 到第8 菲涅爾區(qū)域作為監(jiān)測敏感區(qū)域最佳,更容易捕捉到動作。
本系統的整體框架如圖2所示,在接收器采集到包含手勢動作的CSI數據之后,相關數據被送入數據處理系統進行處理,系統的數據處理部分主要分為三塊,數據首先通過子載波選擇、低通濾波和離散小波變換(DWT)組成的預處理模塊濾除與動作無關的噪聲,通過GD-Kmeans 算法對手勢進行定位和切割,處理后的數據輸入動態(tài)時間規(guī)整(DTW)模塊與預先采集的五種手勢的模板進行匹配來判定其屬于哪一種手勢。

圖2 系統框架圖
從普通的商用WiFi 設備中獲取CSI 數據是手勢識別的第一步,能夠有效地采集包含完整動作信息的信號影響著動作識別的性能。目前可從Intel5300 或Atheros9390網絡接口卡中獲取CSI數據,設發(fā)射天線和接收天線的數量分別為Lt、Lr,子載波數量為m,則可以獲取到的CSI 矩陣的維數為Lt×Lr×m,這個CSI 矩陣完整的表示了收發(fā)鏈路中的信道狀態(tài)信息。在20 MHz頻寬條件下,采用CSI-tool 工具包和Intel 5300 網卡可以采集到包含30 個子載波的CSI 數據:H=[H1,H2,…,Hm,…,H30],式中Hi代表每一個子載波上的CSI。
從理論而言,CSI相位信息只與信號初始相位以及傳播路徑的長度有關,相位相比于幅度信息應該更加穩(wěn)健,變化更小,與傳播路徑之間相關的特性讓它更適合用于無源感知任務。但是在實際環(huán)境中,由于環(huán)境噪聲和設備內電子噪聲的影響,以及發(fā)送延遲等原因,在接收端CSI 中獲取到的相位信息極其不穩(wěn)定。直接獲取CSI 數據的相位信息很容易,但是在5 GHz 的WiFi 頻段,載波頻率的偏移有時會高達100 kHz。在實際應用中,相位信息極其不穩(wěn)定,而且糾正過程很復雜,而且目前已有的方案糾正相位偏移的效果并不好。因此,實際實現方法時采用CSI數據的幅度信息完成系統設計。
3.2.1 子載波選擇
不同的子載波具有不同的中心頻率和波長,即不同子載波的菲涅爾模型會不一樣,這會使得不同的子載波對于相同的手勢動作的敏感度不一樣,反映在CSI波形上就是有些子載波對于手勢動作比較敏感,而有些子載波則不能反映有效信息。選擇合適的子載波能夠捕獲更有效的動作信息,這對于提升手勢識別準確率是很重要的。通常來說,子載波越敏感,其CSI 波形在動作發(fā)生時波動會越劇烈,直觀表示為方差會較大,在本文中,選擇方差最大的子載波作為處理數據,方差越大CSI數據的波動越劇烈,對于相同的手勢動作,方差最大的子載波信道響應更明顯。
3.2.2 數據降噪
由于復雜的無線傳播和周圍環(huán)境的影響,接收端得到的CSI數據包含很多高頻噪聲,噪聲的存在會造成分類器的誤判并影響系統的識別準確率,在對原始數據進行手勢定位和模板匹配之前需對CSI 值進行降噪預處理,目的就是去除CSI 值中的高頻噪聲,首先采用了巴特沃斯低通濾波器對數據進行了初步濾波。選擇濾波器參數時利用菲涅爾衍射模型理論進行了指導。一般來說,正常的手勢的動作幅度大約在4~25 cm 之內,在第4 到第8 菲涅爾區(qū)域內進行識別時,菲涅爾區(qū)域的最小單徑為3.91 cm,也就是說手勢最多會穿過6個菲涅爾區(qū)域。反應在CSI 幅度波形上是3 個正弦波周期,即包含手勢動作信息的波形頻率f在3 Hz 之內,在系統搭建時選擇的采樣率Fs為100 Hz,故使用的巴特沃斯低通濾波器的截止頻率ω可按下式設置:

巴特沃斯低通濾波器的特性決定了它不能完全濾除不相干噪聲,經過巴特沃斯低通濾波器處理后的數據仍然會存在著一些噪聲,為了進一步濾除不相干噪聲,我們選擇使用離散小波變換(DWT)來進一步進行降噪處理,小波變換通過包含尺度參數和平移參數b的基本函數得到不同的變換形式[14]:

對于CSI時序信號s(t)的小波系數可以表示為:

其中,*為復數共軛符號,在本文中選擇Symlet作為基本函數ψ,在利用離散小波變換進行去除噪聲時,可以調節(jié)尺度參數和平移參數實現對CSI時序信號的局部化處理[15]。數據噪聲去除前和去除后的比較如圖3 所示,通過數據噪聲去除之后的信號更適合進行動作識別。

圖3 降噪效果圖
在實際應用過程中,尤其是實時監(jiān)測時,人工去檢測手勢是否發(fā)生以及標記手勢發(fā)生時間段無疑是不可能的,因此需要一種能夠檢測手勢是否發(fā)生并標定手勢發(fā)生時間段的算法,同時這種算法應當比較輕量級不至于影響系統總體的時間性能。
當環(huán)境處于平靜狀態(tài)時,CSI數據僅僅受到環(huán)境噪聲的影響,這種噪聲通常為白噪聲,換言之,平靜狀態(tài)下的CSI幅值分布應該服從高斯分布。對圖3所示的濾波后的波形平靜段的數據進行了高斯擬合,結果如圖4所示,可以看到,平靜時的CSI 波形幅值服從高斯分布


圖4 平靜時CSI波形的分布擬合
當手勢動作發(fā)生時,如圖3所示,CSI的幅值信息發(fā)生了明顯的變化,這也意味著有手勢發(fā)生時利用幅值擬合的高斯分布一定會差異于平靜時所擬合的高斯模型,將圖3 所示波形從包序號70 到370 的數據均勻分成6段,擬合的高斯分布如圖5 所示,第四段動作發(fā)生處高斯分布明顯不同與未發(fā)生手勢的位置。GD-Kmeans(Gaussian Distribution-Kmeans Clustering)算法基于此發(fā)現進行手勢定位工作。前文提到過,有手勢發(fā)生時CSI 波形會產生相應的波動,這就導致了有手勢發(fā)生時CSI 波形的方差會明顯大于平靜段。在這里,設定了一個閾值為5,當某時刻計算得到的波形方差大于平靜段方差的5 倍時判定有手勢發(fā)生,之后采用GDKmeans 算法來進行手勢定位來精確的確定手勢動作發(fā)生時間段。GD-Kmenas 的基本思路為將數據以0.5 s為間隔分成若干段,對每一段的CSI 幅值數據進行高斯分布擬合得到分布參數。對于得到的一組高斯分布參數采用Kmeans 聚類算法將其分為兩類,第二類中包含的數據段即為手勢發(fā)生的數據段。具體的算法步驟如下:

圖5 不同數據段高斯擬合結果

對圖3所示波形從包序號70到370的數據應用GDKmeans 算法,所得結果如圖6 所示,類別2 的時間段即為手勢發(fā)生時間段,可以看出本文的算法很精確的定位了手勢發(fā)生時間段。

圖6 GD-Kmeans算法定位效果
在預處理和手勢定位完成后,通過模板匹配的方法判斷需要分類的手勢屬于何種手勢。對于不同的手勢動作,由于手臂和手掌的運動軌跡不一樣,也導致了相應的CSI波形會不一樣,而相同的手勢動作之間的差距則比較小,如圖7所示。人工選擇分類特征然后利用機器學習的方法進行分類不容易找到合適的特征且處理過程繁瑣,因此在此方法中,直接選擇使用波形形狀作為特征來對不同動作進行匹配分類。

圖7 不同手勢所對應的CSI波形
使用者在做手勢時,不同個體的手勢動作持續(xù)時間有較大差異,即使是同一個使用者在不同的時間進行相同的手勢動作所持續(xù)的時間也有所不同,這會導致CSI波形長度也相應的有不同長度。如果不經過任何處理直接匹配兩個原始數據,會得到很差的匹配結果,需要解決不同數據長度以及數據在時間上差異性的問題。在本文中,使用動態(tài)時間規(guī)整DTW算法解決這個問題,該算法基于動態(tài)規(guī)劃思想,最初是為了解決語音識別中發(fā)音長短不一的模板匹配問題,和語音信號類似,CSI也是時序信號,解決不同CSI 數據長度以及CSI 數據在時間上差異性的問題正好與發(fā)音長短不一的模板匹配問題相似。

實驗地點為一個7 m×7 m的會議室,室內布置有會議桌、椅子等家具。實驗設備按上章所述,依照菲涅爾衍射理論進行指導部署。采用一臺路由器作為發(fā)送設備,一臺配備有Intel 5300網卡的電腦作為接收設備,發(fā)包率為100 Hz,發(fā)送天線和接收天線的距離為80 cm,實驗者在距離天線對30~50 cm的正上方的識別敏感區(qū)域內進行手勢動作。
測試的手勢為畫圈、向左滑動、向右滑動、向上劃手和向下劃手五種。在測試數據收集之前,采集了每種手勢的幾個標準數據作為樣本數據。在實驗測試階段有兩位參與者進行了實驗,每人每種手勢進行了30 次實驗,最終獲取到了總共300個數據。
將取得的300 個數據按上章所述進行了數據預處理后經過手勢定位,然后通過動態(tài)時間規(guī)整算法(DTW)進行模板匹配,最終的識別準確率達到了88%,不同手勢的識別準確率如圖8所示。

圖8 手勢識別準確率
其中畫圈和下劃的手勢識別準確率最高,達到了96%,上劃的準確率為89%,左右滑的準確率最低,均為79.5%。這種現象可以利用菲涅爾衍射理論進行解釋,由于手勢發(fā)生區(qū)域是在天線對的正上方,在實驗中實驗者執(zhí)行手勢時幅度不會相差太多。當進行上劃、下劃操作時手臂分別遠離,靠近天線對,而越遠離天線對菲涅爾區(qū)域的單徑越小,第一個菲涅爾區(qū)域的單徑在實驗中為15.78 cm,而距離天線對50 cm 左右處的菲涅爾區(qū)域單徑約為3.8 cm。這就使得同等幅度的動作在上劃和下劃時在波形上會有明顯的差別,而左右滑動時兩種操作穿過的菲涅爾區(qū)域并無明顯區(qū)別,這就導致了左右滑動在波形上有時會相互混淆,導致準確率下降。
為了驗證本文提出的WiFi 手勢識別方法的有效性,將與傳統的機器學習算法進行對比,包括支持向量機(SVM)[17]、隨機森林(Randon Forest,RF)[18]、樸素貝葉斯(Naive Bayes,NB)[19]、決策樹(Decision Tree,DT)[20]。其中SVM 使用的核函數為線性,基尼系數作為決策樹的特征選擇,隨機森林的樹個數設置為100[21]。在傳統的機器學習算法中,一般需要獨立的特征提取過程,這樣才能更好驗證本文提出的方法的有效性,因此,切割出手勢動作后,提取出一些統計特征作為機器學習算法的輸入特征,包括最大值、最小值、方差、均值、信號能量,對比結果如圖9所示。

圖9 GD-Kmeans與傳統機器學習算法結果對比
基于菲涅爾衍射理論來對手勢識別時的實驗硬件設置和數據處理算法的參數進行大致計算,節(jié)省了調整實驗天線設置和數據處理時參數的時間,從而達到更好的實驗性能。利用DWT進一步濾除數據中的不相干噪聲,提出GD-Kmeans 算法實現了對手勢發(fā)生時間的精確定位,通過基于DTW 的模板匹配實現了對五種手勢的識別研究,并達到了平均93%的準確率。在后續(xù)的工作中,將進一步探索菲涅爾衍射理論對無源感知的指導作用,使方法更加完善。