魏玉婷,王森,逄德明,陳穎文
(1.國防科技大學計算機學院,湖南 長沙 410015;2.國家信息中心,北京 100038)
2000 年以來,無線技術快速發展,Wi-Fi 覆蓋越來越廣,幾乎家家戶戶、各大活動場所都有部署,因此使用無線CSI(Channel State Information,信道狀態信息)來感知人類活動成為可能,不需要部署專用的設備傳感器就能感知人類活動,可以使用CSI 來持續檢測無線信道的變化。基于無線CSI 感知人類活動的主要工作原理為:通過發射器產生的無線電波在傳播過程中會發生直射、反射和散射等物理現象,從而形成多個傳播路徑,這使得在信號接收機處形成的多徑疊加信號攜帶了反映信號傳播空間的信息[1]。比如,當人在室內活動時,如圖1 所示,有一對收發機,當人移動時,人體反射的Wi-Fi信號會隨之發生變化,除此之外,家具、墻壁等也會反射信號一起疊加到接收機處,從而可以根據信號的變化,再結合人工智能的方法感知以達到識別人類活動的目的。因為人是活動的,家具墻壁等物體是靜止的,所以人體產生的反射路徑稱為動態路徑,家具、墻壁等產生的反射路徑稱為靜態路徑。現如今,智能無線感知已被廣泛應用到多個領域,比如感知人類的日常行為[2-3]、檢測人們的健康[4-5]和手勢識別[6-7]等。

圖1 人體移動造成的多徑傳播變化
目前使用無線CSI 來感知人類活動主要分為四個步驟:數據采集、數據預處理、特征提取和建模分類[8]。通常采用一個發送機和一個或多個接收機采集數據,發送機一般為路由器,接收機一般為裝有Intel 5300 網卡的筆記本電腦,且每個接收機會配備三個全向天線,分別對應三個CSI 流。
由于原始數據往往會不完整并且可能包含許多錯誤和噪音,所以在特征提取之前,首先要進行數據預處理,通常這個過程會采用線性插值、帶通濾波器去除噪聲和主成分分析選取子載波的方法。但是,帶通濾波器通過平滑濾波去噪,在這過程中不僅會消除噪聲,也會去除原始信號中的高頻部分,且直接對CSI 原始信息進行去噪,往往不能消除原始CSI 振幅中的高脈沖噪聲和突發噪聲。然后進行特征提取,這個環節的重點是建立信號與人類活動之間的對應關系,現有系統一般是在時域中提取振幅和相位作為分類的特征,但是同種活動在不同的位置或方向進行時可能會產生不同的CSI 信號。最后對提取的特征進行分類識別,傳統的方法會采用支持向量機或K近鄰算法,但前者解決多分類問題較為困難,常用于解決二分類問題且難以訓練大規模樣本;后者的預測結果容易受噪聲數據影響并且K值的選擇不固定。使用智能無線感知做手勢識別,既沒有傳統攝像頭對光線的要求,也不存在可穿戴傳感器給人們帶來的不便,且在智能家居、人機交互等方面廣泛被應用,所以國內外許多研究學者對基于智能無線感知的手勢識別進行了許多研究,已經取得了很大的進展,識別準確率在90%左右且應用前景也很樂觀。但是,目前對該領域的研究存在的主要問題是有效特征缺失和分類模型精度低,由于大部分提取的特征都依賴于所部署的環境,所以當環境發生變化時感知性能就會較低。對于分類模型,無線信號在實際傳播過程中會有衍射、散射等情況,導致無線感知的實際結果和模型的預測結果之間存在差異,造成識別精度低。
鑒于此,本文基于小波分析和遷移學習的方法,提出了一個智能無線感知識別手勢的方法,在數據預處理部分,考慮到無線信號實際傳播與理想有差異,所以采用CSI 比值和小波去噪消除原始信息中的噪聲,再在主成分分析的基礎上,采用最大比合并法將子載波合成一個信噪比最大的波;隨后再將預處理好后的時序數據轉化為圖像特征,在時頻域中分析信號并增加分類的可解釋性;最后采用預訓練好的卷積神經網絡分類識別,提高識別準確率和可遷移性。
方法設計主要分為三個部分:數據預處理、特征提取和分類。在Widar 數據集中選取了6 個手勢并獲取了它們的原始信號。在數據預處理部分,先進行線性插值統一所有記錄通道的采樣率,再使用CSI 比值和離散小波變換消除信號里的高脈沖噪聲和突發噪聲;在特征提取部分,采用連續小波變換生成譜圖;最后在分類部分,采用預訓練好的卷積神經網絡對手勢進行分類。
CSI[9-10]是一種描述信道的數據,可以表示通信鏈路之間的傳播特性,攜帶了在某時間測量的載波頻率的信道頻率響應。令發射機信號為X(f,t),接收機信號為Y(f,t),其中f表示載波頻率,它們之間的關系如式(1)所示:

H(f,t)即在時間t下測量的載波頻率為f的信道頻率響應,它是一個復值;ak(f,t)表示第k條路徑衰減和初始相位偏移;表示第k條路徑上有一個傳播延遲為τk(t)的相位偏移;表示第k條路徑上收發機之間載波頻率差為Δf造成的相位偏移。則H(f,t)可以由式(2)表示:

CSI 可以通過Intel 5300 和Atheros 無線網卡獲取,采用OFDM 調制方式,每個CSI 的測量都包含30 個子載波,每個子載波的維度和收發機的天線數有關,將給定天線對和子載波頻率得到的一系列信道頻率響應值稱為CSI 流。
由于收集到的原始CSI 數據包含了大量的噪聲而不能直接使用,所以先對其進行預處理,消除載波偏差和去除噪聲。先通過線性插值的方法使所有記錄通道具有相同的采樣率,這樣可以解決因非視線鏈接和穿墻等因素造成某些鏈路信號較弱從而導致的丟包問題。然后,將同一接收機的兩個天線的振幅求比值,這樣可以消除原始CSI 振幅中難以消除的高脈沖噪聲和突發噪聲。因為脈沖噪聲在同一接收機上是用相同的電平放大每個天線的功率,雖然功率會隨著時間的推移變化,但是在同一接收器上的不同天線之間的功率是一致的,這樣處理后還可以顯著擴大傳感范圍和傳感精度[11]。這里會計算天線的離散系數,再選取最大的兩個天線的CSI 求比值,進行CSI 比值后的結果明顯更清晰、噪聲更少,如圖2所示。最后,因為每個CSI 都有30 個子載波,根據每個子載波的信噪比做加權平均合成一個子載波,這樣可以獲得一個具有更高信噪比的波形[12]。因為手勢活動和噪聲難以直接分離,所以先采用手勢活動頻率范圍內的功率譜密度與手勢活動頻率范圍外的功率譜密度的比值去估計每個子載波的信噪比。接下來將每個子載波乘上對應的信噪比并采用離散小波變換去噪再做主成分分析,離散小波變換可以將信號分解成幾個頻率級別,這樣可以得到需要的頻級并去除噪聲。因為第一主成分的方差是最大的,所以以第一主成分來調整每個子載波,并將其符號添加到每個子載波的信噪比中,再做加權平均得到一個合并的信號。這樣可以使所有子載波融合在一起,得到的子載波信噪比最大,而高的信噪比可以使得噪聲更低,有利于得到清晰的波形并分析波形與不同手勢之間的關系。
將時間序列轉換為圖像,可以將信號的全局和局部特征都加以考慮,并增加可解釋性。基于此原理,采用連續小波變換將時序數據轉化為圖像特征再進行圖像分類。連續小波變換公式如式(3) 所示:

其中,x(t)是原時域信號,ψ(t)是小波基,τ、s分別是平移變換和尺度變換參數。從式子可以看出,連續小波變換就是原時域信號與選定的小波基在不同尺度下變換或者平移變換下的正交值,正交值越大,說明在這個尺度和平移變換的小波基下原信號占得比重也越大。因為連續小波變換是選取一個中心頻率,使用尺度變換得到其他的中心頻率,再使用平移變換得到其他區間的小波基函數,然后與原時域信號中對應基函數區間的一段相乘再積分,得到原時域信號這一段含有的頻率,所以使用連續小波變換生成譜圖后,可以在圖上清楚地辨認出原時域信號的頻率組成成分以及它們各自對應的時間區間。這里采用連續小波變換生成譜圖而不使用短時傅里葉變換,是因為短時傅里葉變換的窗口大小不易設置,窗口太小會導致窗內信號太短、頻率分辨率差,窗口太大會導致時間分辨率差,所以這里采用連續小波變換來生成譜圖作為分類特征。
根據信號做連續小波變換后得到的小波系數生成譜圖,如圖3 所示。左邊是一個推拉的手勢動作,右邊是一個滑的手勢動作。從圖中可以看出兩個動作的不同,左邊明顯由推和拉兩個手勢片段構成,因為有兩個手勢頻段,所以單個片段的持續時間并不長且頻率段較集中,跨度不大;右邊的手勢動作只有一個手勢片段,所以條紋較長,時間跨越較大,并且跨越的頻段較大,頻率集中的范圍也比推拉動作的低。因此,對信號做連續小波變換生成圖像特征后,可以在時頻域上分析手勢動作,并增加了特征的可解釋性。
近年來,深度卷積神經網絡在圖像分類中的表現比之前基于手工特征的圖像分類方法性能更優越[13]。因此,利用預訓練好的卷積神經網絡對手勢進行識別分類,這樣可以增強系統的性能,還可以應對一些訓練測試環境不完全相同的情形。雖然深度學習的神經網絡模型在智能無線傳感中已被廣泛應用,但仍然存在很難找到足夠訓練數據的問題。因此,可使用從其他數據集訓練的模型,再根據具體的問題進行參數修改和完善,這樣就可以解決數據量不足且具有一定的普適性。

圖2 CSI比值前后對比

圖3 推拉動作生成譜圖(左)和滑動動作生成譜圖(右)
這里,采用SqueezeNet[14]網絡進行手勢分類。SqueezeNet是一個輕量化的網絡,它在CNN(Convolutional Neural Networks,卷積神經網絡)的基礎上構建了一個新的模塊,這樣可以使其參數比CNN 的參數量減少9 倍,還可以在神經網絡中延遲下采樣。前者有利于在保證模型精度的情況下減少參數數量,并提高計算速度;后者有利于在有限的參數數量下最大化模型精度。在使用SqueezeNet 時,因為要將網絡提取的特征合并為類別概率、損失值和預測標簽的信息,所以要將根據數據集修改參數后的新層替換原來網絡中的一些層。基于此原理,利用預訓練好的卷積神經網絡對圖像進行分類以達到識別手勢的目的,在提高了分類準確率的基礎上,使得手勢識別系統也具有一定的普適性。
本文在Widar3.0 數據集中選取了6 個基本手勢動作,分別是推拉、從上到下掃過、鼓掌、從下到上滑過、畫字母“Z”和畫字母“N”。選取的數據是在一個空蕩的教室中采集,有兩個志愿者分別做每個動作20 次和一個志愿者做每個動作10 次,6 個動作一共300 個樣本。數據都是在5.825 Hz 的165 頻道上工作,每秒發送1 000 個數據包,再使用配備Intel 5300 無線網卡的接收機和CSI工具獲取原始CSI。
為了驗證上述手勢智能無線感知方法的準確率,使用了2.1 節中采集的數據測試,收集的數據90%用于訓練,10% 用于測試,手勢識別的準確率平均在94% 以上。本文采用了Widar3.0 中6 個手勢動作的數據集,驗證上述方法對手勢識別的準確率,并與Widar3.0[15]、CARM[16]的實驗結果進行對比,表1 是這幾種方法實驗后的平均準確率:

表1 多種方法的準確率
Widar3.0 中采用了六個接收機的數據,提取多個角度的多普勒速度,然后從中提取了身體坐標系下手勢的速度剖面,最后使用GRU 深度學習模型對手勢進行分類,復現后相同的數據集手勢識別準確率平均在90% 左右。CARM 提出了CSI 速度模型,建立CSI 值與人類不同活動速度之間的關系,再量化不同活動的速度與活動之間的關系以達到識別的目的,采用了主成分分析去噪并使用離散小波變換提取特征,最后使用隱馬爾科夫模型識別活動,復現后相同的數據集手勢識別準確率在83% 左右。本文基于小波分析和遷移學習的原理設計的無線感知手勢識別方法,準確率比Widar3.0 提高了4% 左右,比CARM 提高了10% 左右。
在本文所提的智能無線感知手勢識別方法中,從特征提取方面,提取了不同于其他手勢識別的系統的特征,將時序數據轉化為圖像特征,增加了特征的維度和可解釋性。從準確率方面上看,該方法對手勢的準確率平均在94%左右,觀察到第五個畫“Z”字和第六個畫“N”字這兩個手勢的識別容易混淆,可能是這兩個手勢在手勢片段、頻段范圍以及持續時間上都比較相似,所以導致識別精度降低。從普適性方面,該方法只能適用于環境不變或環境有稍微改變的情形下,在跨域的情形下,還需要進一步研究并改善該方法,比如使用多個接收機獲取多個截面的譜圖,并使用自適應加權圖融合多視圖的聚類方法[17]對譜圖進行處理和融合,最后再進行手勢識別。
本文基于小波分析和遷移學習的方法原理,使用無線信道狀態信息設計了一個手勢識別的系統,其中包括線性插值、CSI 求比值、使用信噪比合成子載波的數據預處理和使用連續小波變換生成圖像作為特征,以及使用預訓練好的卷積神經網絡做手勢分類。同時,基于現有的手勢數據集對上述系統進行實現與驗證,平均識別準確率在94% 左右。接下來,會更關注目標在不同的位置做相同手勢的問題,可以使用多個接收器獲得多個角度的譜圖視角對此問題進行更深入的研究。