田 勇,郭 瑩,崔家棟,李思柔,陳 晨,丁學君
(1.遼寧師范大學 物理與電子技術學院,遼寧 大連 116029; 2.東北財經大學 管理科學與工程學院,遼寧 大連 116025)
近年來,由于無線網絡技術的不斷發展,商用WiFi設備幾乎無處不在。由于出現了能夠記錄Intel 5300無線網卡信道狀態信息(channel state information,CSI)的記錄工具,所以通過商用WiFi設備獲得CSI數據變得十分方便。因此,基于WiFi信號的無線被動感知技術應運而生,該項技術可廣泛應用于安全監控、緊急救援、智能家居、醫療監護等社會生產、生活的各個領域。與接收信號強度(received signal strength,RSS)相比,CSI包含更多關于無線信道的細粒度信息,具有更強的時間穩定性,能夠有效地降低環境多徑衰落效應的影響,從而可以提高目標行為識別的精度和穩定性。文獻[1]展示了WiFi商用設備之間傳輸的信號也可以用來識別駕駛員的活動。文獻[2]提出了一種Wi-Dog攻擊監控系統,有效監控了暴力行為的發生。文獻[3]提出的Wima系統可以識別在空中手寫的字母,且對于26個大寫英文字母有較高的平均識別準確率。
雖然上述研究在各自應用中取得了一定效果,但是研究側重點均為如何識別人體動作,而忽略了最優子載波選擇和動作區間精確截取的深入研究。本文針對上述問題,提出了一種基于近似熵子載波選擇的人體手勢識別方法,稱為AEGR(approximate entropy based gesture recognition)。通過大量的實驗,分析了本文提出的最小近似熵法和極差法的有效性,驗證了提出的AEGR方法的良好性能。
在信道中傳播時,WiFi信號會受到障礙物的反射、散射或繞射作用,所以一般情況下信號發射端與接收端之間的距離越遠,接收端采集的信號強度越弱。接收端采集的CSI主要用于描述無線信道的屬性,是細粒度的物理信息,具有更強的時間穩定性,能夠有效地降低環境多徑衰落效應的影響。為了表征CSI,可以將CSI建模為
Y(f,t)=H(f,t)X(f,t)+N(t)
(1)
其中,H(f,t) 表示CSI矩陣,Y(f,t) 和X(f,t) 分別表示接收信號和發射信號,N(t) 表示加性高斯白噪聲。
利用無線網卡的CSI數據獲取工具,可以獲得WiFi信號的CSI所有子載波數據[4],表示如下
H(f,t)=[H(f1,t),…,H(fi,t),…,H(fn,t)]T
(2)
其中,n表示子載波數(本文實驗過程中,n為30);fi表示子載波i的載波頻率;T表示矩陣的轉置。
某個子載波的CSI可以表示為
H(fi,tj)=|H(fi,tj)|e-jφ(fi,tj)
(3)
其中, |H(fi,tj)| 和φ(fi,tj) 分別表示第i個子載波的tj時刻的CSI的幅值和相位[5]。
近似熵是衡量時間序列復雜性的指標,較小的近似熵值代表時間序列的復雜性也較小[6]。近似熵不僅適用于隨機信號,而且還適用于確定性信號和數據點較少的信號,并且具有良好的抗噪聲干擾能力。
20世紀90年代初,Pincus提出了近似熵的概念,即一種用于動力系統的復雜性度量[7]。近似熵的計算過程如下:
步驟1 設采集的信號是一個等時間間隔的M維時間序列,可以將該時間序列分割成M-m+1個m維的向量U(i), 具體表示如下
U(i)=[u(i),u(i+1),…,u(i+m-1)]
(4)
其中,i=1,…,M-m+1。
步驟2 針對每一個U(i), 計算U(i) 和U(j) 之間的距離如下

(5)
其中,j=1,…,M-m+1。
步驟3 為每一個U(i) 統計d[U(i),U(j)] (6) 其中,r是給定的一個閾值,是一個實數; NUM(d[U(i),U(j)] (7) 步驟5 將維數m變為m+1,重復步驟1~步驟4,計算出Cm+1(r), 然后可計算近似熵如下 ApEn(m,r)=Cm(r)-Cm+1(r) (8) 上述經典的近似熵計算步驟中,存在重復的計算,使得計算效率較低。文獻[8]給出的快速近似熵算法可將計算速度提高到經典計算方法的5倍左右,具體介紹如下: 步驟1 根據等時間間隔的M維時間序列,構建一個M×M維的距離矩陣D,D的第i行第j列元素dij可計算如下 (9) 其中,i=1,…,M,j=1,…,M。 (10) 步驟3 按照式(7)計算Cm(r) 和Cm+1(r), 然后按照式(8)計算近似熵。 近似熵的值與m和r的取值有關,一般情況下,取m為2或3,取r為0.1×std(u(h)) 到0.25×std(u(h)), 其中h=1,…,M; std(u(h)) 表示序列u(h) 的標準差。本文計算近似熵采用m=2,r=0.2×std(u(h))。 本文提出的AEGR方法架構如圖1所示,主要由采集數據、最小近似熵法選子載波、濾波、截取動作區間、提取特征和分類6部分組成。首先采集手勢動作的CSI數據;其次采用所提出的最小近似熵法從第二對天線的30個子載波中選出最優子載波;然后使用小波去噪和中值濾波法對CSI幅值數據進行去噪并平滑;接著運用極差法截取動作區間,并提取用于分類的8個特征量;最后利用 RF算法進行人體手勢識別。 圖1 AEGR方法架構 本文在進行數據采集時,發射機端采用一根天線發送的TP-Link無線路由器,接收機端采用一臺插有Intel 5300無線網卡(帶有3根接收天線)的臺式電腦,該電腦安裝了Ubuntu10.04操作系統。WiFi信號傳輸頻率為2.4 GHz,每根天線接收30個子載波的CSI數據。收發設備之間的距離是3 m,且處于同一水平高度。在實驗時,被測試人員處于收發設備中間位置。 本文將CSI數據的幅值信息作為手勢識別的依據,為此我們對比了同一動作3根天線接收的CSI數據的幅值,如圖2所示,其中圖2(a)、圖2(b)、圖2(c)分別表示第一根、第二根、第三根天線接收的CSI幅值的不同子載波的變化情況。由圖2可以看出,對于同一個動作,3根天線接收的CSI幅值相差較大,所以在進行手勢識別時,需要根據不同天線接收的CSI幅值對動作的敏感程度選擇采用哪根天線的CSI數據。經過實驗比較,發現圖2(b)中每條子載波的幅值跨度均較大,說明第二根天線接收的CSI幅值的敏感程度較大,所以在后續實驗中,本文選擇第二根天線接收的CSI數據。 圖2 3根天線接收CSI的30個子載波的幅值對比 本文將近似熵應用于選擇具有較理想CSI數據的子載波,所以需要計算所有30個子載波CSI幅值的近似熵。每個子載波受到環境噪聲的干擾都不同,受環境噪聲干擾較大的子載波,其CSI幅值序列變化較大、平穩性較差。因此,在進行子載波選擇時,我們希望選擇受動作影響最大、受噪聲影響最小的子載波,所以需要選擇波形變化規律性較強、波動較平穩的子載波,即需要選擇近似熵最小的子載波。基于上述分析,我們選擇每30個子載波中近似熵最小的子載波作為后續待處理的CSI幅值數據。圖3(a)顯示了同一天線30個子載波的近似熵計算結果,可見不同子載波的近似熵差別較大,在對比了每個子載波的波形變化和其近似熵值后,我們得出如下結論:近似熵越小,波形越穩定,時間序列的規律性越強。圖3(b)顯示了同一動作中近似熵最大值所對應的動作波形,圖3(c)顯示了近似熵最小值所對應的動作波形,兩圖對比可看出圖3(c)中動作波形的規律性更強、平穩性更好。本文將其稱為“最小近似熵法”。 從圖3可以看出,通過最小近似熵法獲得的CSI幅值數據仍然存在較大噪聲。為了降低噪聲的影響,本文采用了小波去噪結合中值濾波的方法對CSI幅值進行濾波。 (1)小波去噪 在將CSI幅值數據通過小波變換轉換為頻域后,受人體動作影響的CSI幅值變化將轉換為頻譜中的低頻部分,CSI幅值中的環境噪聲將轉換為頻譜中的高頻部分,因此采用小波去噪的方法可以有效去除CSI幅值中高頻噪聲的干擾,保持CSI幅值中受人體活動影響的部分完好無損[4]。將圖3(c)所示的通過最小近似熵法獲得的CSI幅值數據進行小波去噪,去噪后的波形如圖4(a)所示。 圖3 最小近似熵法效果比較 圖4 CSI幅值濾波及動作區間截取圖 (2)中值濾波 中值濾波是將時間序列中某一點的值設置為該點的某鄰域窗口內所有點的中值,從而過濾掉序列中的孤立噪聲點[5]的方法。本文在利用小波去噪去除了高頻噪聲后,再利用中值濾波方法消除CSI幅值中的孤立噪聲點和低頻干擾。圖4(b)顯示了圖4(a)曲線經過中值濾波平滑后的CSI幅值。 通過觀察受人體動作影響的CSI幅值,我們發現由于人體動作較慢,每個人體動作之間均有較明顯的平穩期,即每個人體動作都對應一個明顯的CSI幅值動作區間,但是每個動作的持續時間不同,導致每個動作對應的CSI幅值動作區間的起點和終點也不同,因此需要對CSI幅值動作區間進行截取。設時間滑動窗長度為a,令該滑動窗在CSI幅值的時間序列上,以步長a進行滑動,分別計算每個滑動窗的極差,然后選出極差最大的A個連續時間序列作為動作區間。其中滑動窗長度a與CSI幅值的采樣頻率有關,選取的最大連續時間序列的個數A與CSI幅值的采樣頻率和動作時長有關,在實際應用過程中,上述兩個參數需要通過實驗進行確定。利用本文的動作區間截取方法對圖4(b)曲線進行截取,參數a和A分別取50和10,得到的結果如圖4(c)所示。 為了對人體手勢動作進行精確分類,我們從CSI幅值中提取8個能夠反映CSI幅值變化的統計量作為分類特征。本文提取的特征包括標準差(STD)、平均絕對偏差(MAD)、平均值(MEAN)、最大值(MAX)、最小值(MIN)、中位數(MEDIAN)、極差(RANGE)和均方根(RMS),共8個統計量構成人體手勢識別的特征向量,見表1。 隨機森林是一種集成學習算法,可用于分類和回歸,它的所有基分類器都由決策樹構成。其基本流程如下:使用Bootstrapping抽樣方法獲得多個訓練子集,從所有樣本特征維度中隨機選取一小部分特征,并基于每一個訓練子集構造出一棵決策樹,將所有的決策樹的輸出進行投票,最后得到整個組合分類器的分類決策結果。隨機森林引入很多隨機性來抑制過擬合現象,提高了系統的泛化能力,所以它是一種非常優秀的組合分類器算法[9]。 表1 動作識別的特征 我們在面積為10 m×3 m的實驗室內進行了實驗,實驗室內包含桌子、椅子和柜子等物品,實驗場景平面如圖5所示,實驗采用的發射機和接收機設置如2.1節所述。一名志愿者在發射機和接收機中間分別做胸前交叉、右手劃圈、雙手下劃和右手劃對號4個手勢動作,每個動作采集40個樣本,采樣頻率為1000 Hz。在實驗過程中,我們選擇1/2的樣本進行訓練,選擇剩余1/2的樣本進行測試。為了驗證本文AEGR方法的有效性,我們選擇了RF分類算法、SVM(support vector machines)[10]分類算法和DTW-KNN(dynamic time warping,k nearest neighbors)分類算法[11],對手勢動作進行識別對比。 圖5 實驗場景平面 為了驗證本文提出的最小近似熵法對子載波選擇的效果,我們在AEGR方法中分別采用4種子載波選擇方法進行實驗,然后再將AEGR方法中的分類方法替換為SVM分類算法,重復上述實驗,實驗結果如圖6所示。其中4種子載波選擇方法分別為:選擇第一個子載波;基于方差選擇子載波;30條子載波均值法[12];選擇最小近似熵的子載波。上述4種子載波選擇方法在圖6中分別用A、B、C、D表示。從圖6可以看出,方差選子載波法和最小近似熵法對應的實驗結果,具有較高的識別準確率,此兩種子載波選擇方法與RF分類算法的組合方法的識別準確率分別為97.5%和98.75%,與SVM分類算法的組合方法的識別準確率分別為96.25%和97.5%。因此,通過比較可知,采用最小近似熵法進行子載波選擇的手勢識別方法具有最好的識別效果。 圖6 4種子載波選擇方法的對比 上述4種子載波選擇方法中,最小近似熵法與方差選子載波法的準確率相近,且國內外學者們最常用的選子載波法就是方差法,所以我們對這兩種方法進行了比較。文獻[6]對比分析了近似熵與方差的性能優劣,得出了近似熵比方差抗瞬態大干擾能力強的特點。在我們采集的CSI數據中,不確定的尖端噪聲會經常出現,所以對比分析原始子載波與增加尖端噪聲子載波的近似熵和方差的變化是非常必要的。設加入的隨機尖端噪聲的個數分別為3、7、10、14、17、21、24和28,噪聲幅度為10,由于加入的尖端噪聲是隨機的,所以我們取5次實驗的平均值作為最終結果。近似熵和方差的變化趨勢如圖7所示。可見當加入不同的隨機尖端噪聲時,近似熵的變化趨于穩定,方差則呈上升的變化趨勢。也就是說,近似熵抗隨機尖端噪聲的能力較強,方差則較弱。 圖7 近似熵與方差的穩定性對比 本文實驗中,CSI數據的采樣頻率為1000 Hz,由于人體動作速度較慢,所以我們選擇時間滑動窗長度a為50,即50個采樣點。由于本文識別的人體手勢動作的時長大概為0.5 s~1 s,所以我們設置連續時間序列個數A分別為8、9、10、11和12[13],對比RF、SVM和DTW-KNN分類算法的識別準確率,實驗結果如圖8所示。從圖8可以看出,RF和SVM分類算法在A為10時,DTW-KNN分類算法在A為9時,能夠獲得最高的識別準確率;3種分類算法相比,RF分類算法具有最好的性能。 圖8 連續時間序列個數A的分析 本文采用反映CSI幅值變化的8個統計量作為分類特征,為了驗證其合理性,我們對比了不同數量特征對手勢識別方法準確率的影響[14]。我們分別取表1的前5、6、7、8個特征,并分別結合RF和SVM分類算法,對比動作識別準確率,實驗結果如圖9所示。從圖9可以看出,隨著特征數量的增多,RF分類算法的準確率不變,一直為98.75%,而SVM分類算法的準確率呈上升趨勢。當特征數量為8個時,RF和SVM分類算法的準確率均為最高,分別可達98.75%和97.5%,所以本文的AEGR方法選擇了表1中的8個特征。 圖9 特征數量的對比分析 為了選出較優的分類算法,我們將本文采用的RF分類算法與SVM和DTW-KNN兩種分類算法進行了對比分析,實驗結果如圖10所示。從圖10可以看出,RF分類算法對4個動作的識別準確率均最高,且對每個動作的分類準確率均保持在95%以上。因此,通過對比可以看出,RF分類算法的性能優于SVM和DTW-KNN這兩種分類算法。 圖10 3種分類算法對比分析 應用上述分析的最優方法和參數,我們對AEGR方法的性能進行了實驗,實驗結果見表2。在表2中,對角線上的數據為每一種手勢動作的識別準確率,除了對角線上數據的每一行數據為該行手勢動作的錯誤識別率。如3.1節所述,實驗樣本共160個,測試樣本共80個,采用AEGR方法正確識別了79個樣本,識別準確率達到98.75%,其中‘胸前交叉、右手劃圈和右手劃對號’手勢動作的識別準確率最高,均為100%,剩余一個動作的識別準確率為95%。由表2可見,本文提出的AEGR方法獲得了較好的手勢動作識別性能。 表2 AEGR方法的實驗結果/% 現有基于CSI的人體手勢識別方法往往忽略了對子載波選擇和動作區間截取的深入研究,使得動作識別精度仍有較大的提高空間。針對上述問題,本文提出了一種新穎的人體手勢動作識別(AEGR)方法,該方法采用提出的最小近似熵法對子載波進行選擇,采用提出的滑動窗極差法對動作區間進行截取。大量的實驗和分析結果表明,當使用最小近似熵法,并采用本文的8個特征量時,AEGR方法的識別準確率可達98.75%。在未來的工作中,我們將增加數據樣本量,進一步驗證AEGR方法的性能;還將測試更多更復雜的手勢動作,不斷擴大AEGR方法的適用范圍。



2 AEGR方法

2.1 數據采集

2.2 基于近似熵的子載波選擇
2.3 CSI幅值濾波


2.4 動作區間截取
2.5 特征提取
2.6 分類算法

3 實驗結果及分析
3.1 實驗環境及設置

3.2 子載波選擇方法分析

3.3 近似熵與方差選子載波方法的穩定性分析

3.4 動作區間截取參數分析

3.5 特征數量對比分析

3.6 分類算法對比分析

3.7 AEGR方法性能分析

4 結束語