黨小超,,,
(1.西北師范大學 計算機科學與工程學院,蘭州 730070; 2.甘肅省物聯網工程研究中心,蘭州 730070)
隨著無線傳感器網絡(Wireless Sensor Networks,WSN)的不斷進步與發展,人們已經不局限于只對傳統室內定位與位置感知進行研究。近年來,智能家居、軍事、工業等領域均開始利用無線電進行位置感知,如典型的基于UWB(Ultra Wideband)的雷達系統[1]。而目前較新穎的基于商用Wi-Fi設備的室內定位技術,在室內入侵檢測、校園安全、商場人員檢測、病人監護、家中老人小孩的實時檢測等多個領域中[2],均有較好的發展優勢。
傳統的室內定位技術進行位置服務與環境感知時,主要依據接收信號強度(Received Signal Strength Indication,RSSI)[3]技術。但從實驗結果中可以發現,這類室內定位技術的精度較低,造成該現象的主要原因是RSSI的穩定性較低,其定位結果會受時間影響。相比RSSI技術,信道狀態信息(Channel State Information,CSI)在時間分辨率、頻率分辨率、穩定性等方面都具有優勢[4]。
文獻[5]提出基于CSI模型的低成本高精度被動式目標定位方法LIFS,其將CSI的特點有效地應用于目標定位中,但該方法未考慮檢測區域與檢測率的關系。文獻[6]將相位信息應用在唇語檢測系統中,能夠達到更細粒度的定位效果,但是其相位信息不易獲取,并且在檢測過程中要利用專用設備USPR,導致方法穩定性和實用性不高。文獻[7]的FIMD系統利用CSI的穩定性,在靜態環境下實現了更細粒度的人員檢測,但其未取得高檢測率,且系統性能會受實驗環境的影響。文獻[8]的BFP系統利用CSI進行行為無關移動檢測,其整體性能較好,但算法的效率較低。文獻[9]將SVM應用在基于RSSI的室內人員定位中,但基于RSSI的室內人員檢測精度較低。
針對以上方法存在的不足,本文提出一種基于CSI的室內人員行為檢測方法Wi-SK。首先采集CSI數據,利用振幅信息作為特征值,選擇Kalman濾波算法對原始的CSI數據進行過濾,剔除異常值;然后使用SVM對濾波后的數據作分類處理,并使用PSO修正SVM中的參數后建立指紋庫;最后在真實環境中的檢測區域內實時采集數據,并利用SVM處理實時提取的特征值,將在真實環境下采集的實時數據與指紋庫的數據進行匹配,在此基礎上,進行人員行為的檢測。
隨著無線網絡的普及和正交頻分復用(Orthogonal Frequency Division Multiplexing,OFDM)技術的發展,傳統的信號傳播格局被改變。在802.11/g/n標準下,通道響應可以從商用Wi-Fi設備中提取出CSI,其以子載波的振幅和相位信息揭示了信號從發送端到接收端的通信鏈路間的信道狀態[10]。由于RSSI不能逐一區分多條信號傳播路徑,為了更好地表示多徑傳播,無線信道通常用信道脈沖響應(Channel Impulse Response,CIR)來進行建模[11]。在線性時間不變的情況下,CIR可表示為:
其中,ai、θi和τi分別表示第i條路徑的振幅衰減、相位偏移和時間延遲,N表示傳播路徑總數,δ(τ)是狄拉克脈沖函數。
由于在多徑傳播過程中會造成頻率選擇性衰落,為了更好地刻畫多徑傳播,可以選擇信道頻率響應(Channel Frequency Response,CFR)進行建模。CFR是CIR的傅里葉變換[12],CIR和CFR可以描繪小規模的多徑效應并且廣泛應用于通道測量。通過Wi-Fi設備可以CSI的形式獲取CFR的一個樣本[13],即利用兼容IEEE 802.11a/g/n的無線網卡可從每個接收數據包中獲取一組CSI,每組CSI代表一個OFDM子載波的幅度和相位,其表示為:
H(k)=‖H(k)‖ej∠H(k)
(2)
其中,H(k)為第k個子載波的CSI,‖H(k)‖和j∠H(k)分別表示第k個子載波的振幅與相位。由于振幅信息較穩定可提高算法的效率,因此本文選用振幅作為特征值。
提取第1.1節所述的振幅數據后,利用Kalman濾波算法將異常值剔除。該過程主要步驟為:
步驟1設Xk為k時刻的狀態向量,將系統向量轉換為線性方程的形式,則系統的狀態轉移方程[14]如下:
Xk=FkXk-1+BkUk+Wk
(3)
其中,Fk是狀態轉移矩陣,Bk是控制矩陣,Uk是控制向量,Wk是轉移過程中的噪聲矩陣。
步驟2若Zk為k時刻系統的觀測向量,則觀測方程為:
Zk=HkXk+Vk
(4)
其中,Hk是觀測矩陣,Vk是觀測噪聲。假設噪聲服從高斯分布,即:
Wk~N(0,Qk),Vk~N(0,Rk)
(5)
其中,Qk和Rk分別為Wk和Vk的協方差矩陣。
步驟3利用Kalman濾波估算k時刻系統的狀態量[15]。
1)計算系統k時刻狀態的預測值:
2)計算預測值的協方差矩陣:
其中,Pk-1為協方差矩陣。
3)計算Kalman增益矩陣:
4)根據觀測值來修正預測值,得到系統狀態量的最優估計:
5)更新協方差矩陣:
在已知初始狀態量和協方差矩陣的前提下,重復以上步驟,最后得到任意時刻系統的最優值。圖1所示為CSI信號在濾波前后的對比示意圖,圖1(a)中方框標識的是被剔除的異常值。

圖1 CSI信號濾波前后對比
在機器學習中,SVM是一種與學習算法有關的監督學習模型,它可以進行數據分析、模式識別以及分類和回歸分析[16]。給定一組訓練樣本,每個標記屬于兩類,一個SVM訓練算法建立一個模型,將一個新實例分配給一個類或其他類,使它成為一個非概率的二元線性分類[17]。該特征可以有效結合CSI數據,從而降低算法時間復雜度,提高算法整體性能。第1.2節得到濾波后的振幅信息,本節利用SVM將濾波后的數據進行分類。
初始化階段,將檢測區域分為20個方格作為參考點,并按升序進行編號。然后,測試人員逐個遍歷參考點,在每個參考點都進行站立、跳躍、半蹲、坐下4個動作。將此時所獲得的CSI數據以及振幅、相位的變化傳輸到服務器。具體步驟如下:
步驟1設T為數據采樣的周期,且T為1 s。在測試位置進行站立、跳躍、半蹲、坐下4個動作。假設接收端依次采樣的樣本訓練集為:{(xi,yi)},i=1,2,…,n,則SVM的回歸函數為:
f(x)=w·x+b
(11)
其中,x為從CSI振幅或相位數據中提取的特征,w為權向量,b為偏置向量。
步驟2求解式(11)中的w和b,可得最小化目標函數[18]:
其中,C為懲罰系數,Remp(f)為損失函數。
步驟3引入松弛因子,式(12)的優化目標函數轉換為:

其中,ε為松弛變量。
步驟5新的特征空間映射了原始數據,引入映射函數φ[19],則SVM回歸函數為[18]:
f(x)=w·φ(x)+b
(15)
步驟6式(15)的優化目標函數轉化為:
(16)
步驟7引入核函數k(xi,xj)代替(φ(xi),φ(xj)),式(16)轉化為如下的優化目標函數:
(17)
步驟8最終SVM的預測函數為:

傳統SVM算法求解效率低,算法實時性較差[20],考慮到PSO算法具有易搜索、收斂速度快、整體復雜度較低等優點。因此,本文選擇PSO對SVM的參數和核函數進行修正,以提高算法的整體性能。當進行復雜搜索時,這一改進措施能夠避免陷入局部最優解的情況[19]。PSO對SVM的參數和核函數進行修正的主要步驟如下:
步驟1設D維搜索空間中有n個粒子。向量Li=(xi1,xi2,…,xiD)表示i粒子的位置空間[19],最優解為Pi=(pi1,pi2,…,piD)。
步驟2設第g個粒子的歷史位置為局部最優解Pi(i=1,2,…,n)。
步驟3第i個粒子的速度用向量Vi=(vi1,vi2,…,viD)表示。
步驟4按照如下公式進行每個粒子的位置變化:
Vid(t+1)=w×Vid(t)+c1×rand()×
[Pid(t)-Lid(t)]+c2×rand()×
[Pgd(t)-Lid(t)]
(19)
Lid(t+1)=Lid(t)+Vid(t+1)
1≤i≤n,1≤d≤D
(20)
其中,速度變化區間為[-Vmax,Vmax],當第d(1≤d≤D)維的速度超過閾值或位置發生改變時,速度將取邊界值,c1、c2為加速因子,rand()是[0,1]區間內的隨機數。
步驟5由于PSO算法隨機產生位置與速度,因此通過式(19)、式(20)迭代,可以找到最優解。
本文Wi-SK方法主要包括4個模塊:數據采集,數據處理,指紋庫建立,特征信息匹配。Wi-SK方法總體流程如圖2所示。

圖2 Wi-SK方法總體流程
在采集完CSI原始數據包后,進入離線訓練階段。在該階段,首先收集各測試點的位置坐標,并對接收到的CSI原始數據進行處理,處理過程中先使用Kalman算法對原始數據進行濾波,再使用SVM算法對處理過的CSI數據實現分類;接著,將處理過的數據存到指紋庫,并根據環境的變化情況實時更新指紋庫。離線訓練階段具體步驟為:
步驟1對CSI數據進行預處理,求出單個信道狀態的頻域模型,公式如下:
Y=HX+N
(21)
其中,Y為接收信號向量,X為發射信號向量,H為信道矩陣,N為高斯白噪聲向量[18]。
步驟2根據步驟1將所有子載波的CSI表示為:
步驟3將單個子載波的CSI表示為:
csi=|csi|ejsin∠csi
(23)
其中,|csi|和csi分別表示對應于該子載波的幅度和相位。
步驟4用Kalman濾波算法對步驟3中的振幅信息進行濾波處理。
步驟5假設接收端依次采樣的樣本訓練集為:{(xi,yi)},i=1,2,…,n,則SVM的回歸函數為:
f(x)=w·x+b
(24)
最小化目標函數為:
式(25)的優化目標函數可以轉換為[18]:
則SVM回歸函數可表示為:
f(x)=w·φ(x)+b
(28)
式(25)的優化目標函數轉化為:
(29)
引入核函數k(xi,xj)代替(φ(xi),φ(xj)),則式(29)轉化為如下的優化目標函數:
則最終的SVM預測函數為:
步驟6利用第1.4節所述的PSO算法求得最優參數,再根據式(30)、式(31)結合幅度樣本數據,從而構建SVM的分類模型。
在線行為檢測階段,發送端負責采集每個測試方格的實時CSI數據以及測試人員發生行為變化時的數據,再將采集到的數據發送給接收端。在線行為檢測階段主要步驟如下:
步驟1在真實環境下采集實時數據。
步驟2選擇振幅作為特征值。
步驟3設Xk表示k時刻系統的狀態向量,則系統的狀態轉移方程如下[16]:
Xk=FkXk-1+BkUk+Wk
(32)
設Zk為k時刻的觀測向量,則觀測方程為:
Zk=HkXk+Vk
(33)
假設噪聲服從高斯分布,即:
Wk~N(0,Qk),Vk~N(0,Rk)
(34)
利用Kalman算法估算k時刻系統的狀態量,步驟如下:
1)計算系統k時刻狀態的預測值:
2)計算預測值的協方差矩陣:
3)計算Kalman增益矩陣:
4)根據觀測值來修正預測值,得到系統狀態量的最優估計:
5)更新系統狀態量的協方差矩陣:
步驟4利用PSO算法修正SVM算法中的參數C,構建SVM分類模型對檢測數據進行預測。
步驟5將實時采集的振幅數據與指紋庫進行匹配。
步驟6設通過以上步驟得出的當前振幅的特征值為A,離線階段的閾值為B。若A>B,則可判斷當前為非靜止狀態,此時再次根據振幅的幅度變化進行匹配。圖3所示為實驗室環境下人員行為狀態檢測信號。從圖3(d)可以看出,此時的幅度波動較大,說明動作幅度較大,則可判斷此時的行為是跳躍。圖3(b)、圖3(c)的信號波動較小,即動作較緩慢,則可判斷此時的行為是站立或半蹲。

圖3 實驗室環境下人員行為狀態檢測信號
本次實驗所用的發射器和接收器均安裝有支持IEEE 802.11n協議的Atheros AR9580 NIC,且安裝了長度約為1.5 m的外部天線。所有發射器配備Ubuntu 14.04 LTS,32 bit系統和4.1.10 Linux內核版本。驅動程序模塊可以在接收到信號并將其保存為其他進程時從Linux內核獲取CSI。2臺英特爾酷睿i3-4150 CPU臺式機,一臺作為發送端,另一臺作為接收端。所獲得的數據在C程序中使用本文提出的Wi-SK算法進行處理。
本次實驗分為2個場景:實驗室和大廳,分別對應NLOS場景與LOS場景。實驗室大小為7 m×5 m,空曠大廳大小為10 m×8 m。實驗場景平面結構如圖4所示。

圖4 實驗場景與平面部署
當監測區域中有人出現時,利用部署好的實驗設備接收數據包并發送給閱讀器,然后再轉發到服務器。在本次實驗中,服務器端得到方向信息后,目標將被檢測。在檢測過程中,選用振幅信號作為特征值,原因是振幅信號敏感度較高,且容易獲取。為證明振幅信號的這一特性,本文分別在多徑干擾較多的實驗室內和較為空曠的大廳內進行對比測試,結果如圖5所示。從圖5可以看出,在實驗室和大廳內測得的無人時CSI振幅變化存在明顯區別,圖5(b)的信號波動較小,整體趨勢較平穩,原因是空曠大廳內無過多的電磁干擾和多徑干擾。因此,本文實驗選擇振幅作為特征值是可行的。

圖5 實驗室與空曠大廳無人時振幅信息對比
為驗證本文Wi-SK方法的檢測性能,本次實驗將Wi-SK方法分別與LIFS、FIMD、BFP以及傳統的基于RSSI的系統模型,在靜態環境檢測概率與動態環境檢測概率、窗口大小、特征數、檢測區域等方面,進行比較分析。
1)靜態環境下的檢測概率
檢測概率即為正確分類概率,在靜態環境下稱為TN率,圖6所示為不同位置和不同時間點的TN率檢測結果。從圖6可以看出,經過多次測試,各方法的TN率均可達到90%以上。但是,RSSI方法與LIFS方法的TN率值會受時間的影響,因此,會造成其性能不穩定的情況。而Wi-SK方法檢測結果較平穩,整體性能優于其他2種方法。

圖6 靜態環境下3種方法TN率對比
2)動態環境下的檢測概率
檢測概率在動態環境下稱為TP率,圖7所示為不同位置和不同時間點的TP率檢測結果。從圖7可以看出,相比RSSI方法與LIFS方法,Wi-SK方法可以更精確地檢測人員的行為,即Wi-SK方法的效率更高。

圖7 動態環境下3種方法TP率對比
3)窗口大小的影響
由于窗口大小能夠代表延遲的大小,且其對于檢測率的整體性能起著重要作用。因此,本次實驗選擇窗口大小作為指標對不同方法的檢測率進行評估。
從圖8可以看出,3種方法的檢測率均隨窗口大小的增加而增加,但是當窗口大小超過某個閾值時,CSI數據將通過人員的不同行為狀態而產生差異,即對人員不同狀態的檢測率產生影響。當窗口較小時,系統很難檢測到人員的存在,原因是方差的大小會降低系統的靈敏度,且系統對靜態環境的區別度不高。從圖中可以看出,Wi-SK方法將滑動窗口大小設為80時可達到較佳檢測性能,且檢測率較穩定。

圖8 檢測率與窗口大小的關系
4)特征數的影響
由于使用較多的特征數可能會導致較高的檢測率,因此本文對傳統的基于RSSI的方法和FIMD方法進行改進。FIMD方法中使用相關矩陣的特征值,其最優值集中在前2個特征數。基于RSSI的方法不能在一段時間內保持穩定,其自身變化多端,對檢測率造成相應的影響。而本文Wi-SK方法利用CSI穩定性高的特點,且實驗的特征值使用的協方差矩陣更分散,因此檢測率較高。
圖9所示為檢測率與特征數的關系。從圖9可以看出,隨著特征數的增加,Wi-SK方法的檢測率隨之增加,且當特征數達到5時,其基本能夠保持穩定狀態。相比之下,FIMD方法在特征數達到4之后,檢測率有所下降,且不夠穩定。

圖9 檢測率與特征數的關系
5)測試區域的影響
為測試人員在不同位置下的行為狀態對檢測率的影響,將實驗區域劃分成20個方格,并進行升序編號。在本次實驗中,選擇編號為1~9的格子進行測試。
如圖10所示,在4、5、6、7號格子區域內系統檢測率較高,原因是這4個區域距離發送端與接收端較近,且無過多信號干擾。1~3格子的檢測率都較低,原因是這3個區域距離接收端與發送端較遠,且受到桌子、墻壁等多徑效應的干擾。從圖10還可以看出,Wi-SK方法的檢測率高于其他2個方法。

圖10 檢測率與測試區域的關系
本文提出一種基于CSI的室內人員行為檢測方法Wi-SK。在數據處理方面,首先通過商用Wi-Fi設備采集CSI原始數據,將CSI中的振幅信息作為特征值,對其使用Kalman濾波、SVM算法、PSO算法進行相應處理,并建立指紋庫;然后,在實驗場景下采集實時數據,并將指紋庫中的數據與實時采集的數據進行匹配,從而實現室內人員行為檢測的目的。實驗結果表明,Wi-SK方法在靈敏度、魯棒性、檢測率等方面均有較好表現,實用性較強。