薛源,殷鋒,袁平
(1.四川大學計算機學院,成都 610065;2.西南大學計算機科學與技術學院,成都 610041;3.重慶大學數學與信息工程學院,重慶 400044)
近年來,隨著人們對健康的重視,室內人體運動識別受到了越來越多的關注,各種識別方式層出不窮。在人體動作識別的發展過程中,識別技術不斷創新。基于圖像的識別技術對光線的要求較高,同時也需要被識別對象在視覺范圍內才可以進行準確識別;基于傳感器的可穿戴設備會在一定程度上對用戶的生活造成影響,而且其識別的準確率也不能很好地保證。
隨著Wi-Fi技術的發展,普通商用Wi-Fi設備開始被人們所重視,一般的Wi-Fi設備就可以對人體動作進行研究。2013年,Pu等人提出了WiSee[4]系統,用來對房間內的人體手勢行為進行識別,其準確度達到了94%。
2014年,B.Kellogg等人提出了AllSee[3],通過分析RSS信號對手勢動作進行識別,該系統取得了97%的識別精度。2015年,Abdelnasser等人提出了WiGest[1]。它通過利用通用Wi-Fi設備的RSSI信號對上下變動的七種手勢進行分析,達到了87.5%(單AP)和96%(三AP)的精確度。該系統通過分析信號的上升沿、下降沿以及其停頓來描述復雜的手勢。2016年,Tan.S等人提出WiFinger[2]在處理環境影響方面有了較大的改進。將頻域CSI信號轉換為時域功率時延譜,可以去除延遲較長的信號分量,從而減輕多經效應的影響。2018年,Fan.T等人提出了WiCatch[5],與以往的識別系統不同,在該系統可以識別有限的雙手手勢動作。
系統分為發射器和接收器兩部分。發射器是一部2.4GHz的單天線路由器,接收器是經過改造的Wi-Fi雷達[8]。系統采集CSI信號,并依據其變化情況進而測定房間內人體運動情況。
在無線通信中,通常使用信道沖擊響應(Channel Impulse Response,CIR)對無線信道的多徑傳播進行建模,系統輸出可表達為:

其中,αi,θi和 τi分別表示多徑傳播下,第 i條傳播路徑的無線信號的幅度的衰減尺度、相位偏移的尺度以及時間延遲的大小。δ(τ)表示狄拉克脈沖函數。CIR和信道頻率響應(Channel Frequency Response,CFR)互為傅立葉變換,因而可以通過對CFR的測量間接獲得CIR。本文中通過采集CSI(CFR的間隔采樣)信號獲取信息。
CSI是物理層的信道信息,反映了無線信道的性能,它可以表示為:

其中,H(fk)表示中心頻率為 fk的子載波的CSI,||H(fk)||表示該子載波的幅頻響應,∠H(fk)表示該子載波的相頻響應。
由于環境無線信號的存在和設備內部的電流等因素,所獲取到的數據中包含著大量的噪聲,這些噪聲會嚴重影響數據分析。
對于原始數據,首先需要將個別離群點去除。因為設備原因,有時信號會出現明顯的突變。為此,本文采取了 Hampel濾波,將不在區間 [μ-γ×σ,μ+γ×σ]范圍內的點都定義為離群點。其中,μ為數據平均值,σ為數據標準差,σ為倍數,本文中將其定為3。樣本數據值與中值相差3倍的標準差,則用中值替換該樣本值。與中值濾波器簡單地使用窗口數據的中值作為過濾后的數據值相比,Hampel濾波器對于數據的處理更加細致,因此減小了過度過濾的可能。
由于人體動作的頻率都集中在中低頻區間,在進行過初步處理后,所取得的圖像中仍然具有很強的抖動性。這是因為所取得的數據是室內多條多徑信號和電磁噪聲等多種噪聲疊加后產生的采樣結果,有大量無關信息。為了取得更直觀且更精確的動作信息,我們需要將高頻分量和直流分量去除。對于不同的人體動作,頻率范圍如表1所示。

表1 常見行為頻率圖[6]
本文采用數字濾波的方式對數據進行再次處理。數字濾波器的系統函數可以表示如下:

與之相對應的表示濾波器輸入信號和輸出信號關系的常系數線性差分方程表示如下:

本文采用常見的巴特沃斯濾波器對數據進行處理。對于巴特沃斯濾波器,其幅度平方函數為:
其中,ω表示信號頻率,ωc表示濾波器的截止頻率,n表示濾波器的階數。巴特沃斯濾波器在過濾時能夠較好地保持通帶內信號的幅值。由于研究目標是人體動作,根據表1,選擇基本頻率為0-300Hz。
通過表中數據可以對濾波范圍進行一定的估計,濾波前后的圖形如圖1。可以看出,環境噪聲對接收端的CSI測量值產生了較大影響,經過濾波以后,情況得到了明顯改善。

圖1 濾波前后的對比情況
對信號進行預處理后的信息包含了有效的動作信息。但是在這些信息中,包含動作信息的同時,也包含了一些無動作時的信息。為了對動作進行提取,首先需要對信號進行分割。
在一個OFDM系統內,子載波之間的相關矩陣很容易求出,由此可以得到相關矩陣的特征向量和特征值。在安靜的環境下,第二個特征向量會在相鄰子載波之間隨機變化。在環境內出現動作時,子載波之間出現一定的相關性,它的第一個插值會變得更小,該值可以表示為:

其中,Nc是子載波的個數,|q2()l-q2(l-1)|是相鄰子載波的系數差,通過來判斷是否有動作出現。通過對數據段的切分,可以將每個動作所對應的時間域取出,方便進行進一步的分析。
在取得動作片段以后,需要對動作片段進行分類識別。由于不同的動作所導致的CSI信號變化不同,從整體變化的方式來看,在同一時間段內,子載波之間雖然存在有微小的差異,但是其基本的變化趨勢是相同的。為了獲得更加精確的運動情況,在處理中,本文充分利用了30個子載波的數據構造特征矩陣。
基于上述原因,本文選擇方差作為動作的特征值。對于任一CSI序列,其方差可以表示該段序列的離散程度和變化情況。根據所有子載波的這一特點,結合SRC分類算法,本文對t時間內的CSI序列求移動方差。
對于一個CSI序列H={H1(1),H2(2),H3(3)…Hk(t)},計算其在滑動窗口m內的CSI序列方差的公式為:

其中,Hk(t )代表在t時刻內,第k個子載波的CSI幅值,由該式可以計算得到一個特征方差矩陣,該矩陣包含了子載波的信號特征,同時也能反映出由于人體動作所引起的CSI變化情況。不同的人體動作(站起、行走)等動作所引起的移動方差有明顯的區別。
在上述過程中,我們得到了不同動作最具代表性的特征,需要一個正確的分類器來進行識別。本文采用支持向量機(SVM)對不同動作進行分類。由于原始數據當中的數據并不全部都是線性可分的,因此需要將其原始空間映射到高維空間,從而對數據集進行區分。本文采用LIBSVM[7]進行處理。
本文設計了一套基于Wi-Fi信號的人體動作識別系統。人體在Wi-Fi環境中運動時,會對信號波形產生一定的影響,系統首先對數據信號進行采集,然后對采集到的數據進行一系列的去噪操作,接著對其進行分割并計算其特征值,最終采用LIBSVM系統進行動作分類,從而可以對人體運動情況進行簡單的識別和判斷,具有一定的應用價值。