丁文超,張俊寶,陰庚雷
(中原工學(xué)院 計(jì)算機(jī)學(xué)院,河南 鄭州 450007)
隨著Wi-Fi技術(shù)的發(fā)展以及相關(guān)硬件價(jià)格的下降,生活中各種場(chǎng)所幾乎均有Wi-Fi信號(hào)的存在。Wi-Fi信號(hào)不僅能傳輸數(shù)據(jù),利用其信道狀態(tài)信息還能進(jìn)行人體動(dòng)作識(shí)別[1]。
傳統(tǒng)的動(dòng)作識(shí)別需要借助如加速度計(jì)、陀螺儀等接觸式傳感設(shè)備[2]對(duì)用戶進(jìn)行監(jiān)測(cè)來(lái)識(shí)別用戶的動(dòng)作,又或者是借助攝像頭等非接觸設(shè)備的基于視覺(jué)[3]的動(dòng)作識(shí)別。相較于傳統(tǒng)的識(shí)別方式,基于CSI的動(dòng)作識(shí)別利用的是環(huán)境中廣泛存在的Wi-Fi信號(hào),具有不依賴特殊傳感器、成本低、易擴(kuò)展、不存在隱私泄露等優(yōu)點(diǎn)。
但是當(dāng)前應(yīng)用大部分都依賴于手工選擇子載波,構(gòu)建分類(lèi)特征。因此,該文提出一種基于學(xué)習(xí)的識(shí)別方法,無(wú)需專(zhuān)業(yè)知識(shí)構(gòu)建Wi-Fi傳播模型,即可進(jìn)行訓(xùn)練識(shí)別。
由于采集數(shù)據(jù)時(shí)網(wǎng)卡報(bào)告了多組子載波的CSI,且不同的子載波對(duì)于環(huán)境變化的敏感度不同,所以要選取合適的子載波來(lái)提取CSI數(shù)據(jù)。WiFall[4]將30組子載波上的CSI取平均值作為訓(xùn)練數(shù)據(jù)來(lái)檢測(cè)摔倒動(dòng)作的發(fā)生。LBR[5]選取CSI方差第二大的子載波作為有效子載波來(lái)提取CSI。上述方法均根據(jù)某個(gè)統(tǒng)計(jì)值來(lái)選擇子載波,需要大量的時(shí)間研究數(shù)據(jù)從而選擇合適的統(tǒng)計(jì)特征。該文提出一種基于SOM[6]聚類(lèi)的子載波選擇方法。相同的動(dòng)作,某個(gè)子載波上的CSI數(shù)據(jù)聚類(lèi)生成多個(gè)簇,則說(shuō)明CSI存在多種變化模式數(shù)據(jù)間差異較大,數(shù)據(jù)采集過(guò)程中該子載波易受環(huán)境干擾。因此對(duì)于每個(gè)動(dòng)作,該文選取所有子載波聚類(lèi)后生成簇較少的子載波作為有效子載波。
在訓(xùn)練特征的選擇上,CARM[7]使用離散小波變換從不同時(shí)間尺度的不同活動(dòng)中提取頻率分量作為特征。WiSee[8]從手勢(shì)動(dòng)作中提取對(duì)應(yīng)的多普勒頻移特征來(lái)識(shí)別手勢(shì)。兩種方法均需手動(dòng)設(shè)計(jì)特征。該文提出使用GASF[9]方法將CSI轉(zhuǎn)換成圖像從而利用CNN強(qiáng)大的特征提取能力自動(dòng)提取特征。
由于實(shí)驗(yàn)對(duì)象的運(yùn)動(dòng)速度以及采樣頻率的差異,相同動(dòng)作所收集到的CSI數(shù)據(jù)長(zhǎng)度可能不同,但神經(jīng)網(wǎng)絡(luò)輸入數(shù)據(jù)的長(zhǎng)度需要保持一致。所以要對(duì)收集到的CSI數(shù)據(jù)進(jìn)行截取,以保證數(shù)據(jù)長(zhǎng)度相同,并且截取到的部分需要包含動(dòng)作發(fā)生的整個(gè)過(guò)程。WiFinger[10]根據(jù)統(tǒng)計(jì)特征來(lái)檢測(cè)手勢(shì)動(dòng)作的起始點(diǎn)和結(jié)束點(diǎn)。文獻(xiàn)[11]直接采用了人工截取的方式。上述方法需要大量的人力與計(jì)算資源來(lái)截取數(shù)據(jù)。文中的CRNN網(wǎng)絡(luò)使用CTC[12]作為損失函數(shù),能夠使網(wǎng)絡(luò)自動(dòng)對(duì)齊輸入數(shù)據(jù)中發(fā)生動(dòng)作的部分,無(wú)需對(duì)數(shù)據(jù)進(jìn)行截取。
深度學(xué)習(xí)網(wǎng)絡(luò)需要大量的數(shù)據(jù)來(lái)進(jìn)行訓(xùn)練從而防止模型過(guò)擬合,但是人工采集大量的數(shù)據(jù)往往是不容易的。因此,該文通過(guò)添加噪音、縮放、滑動(dòng)平均等方法增加數(shù)據(jù)量,從而提高模型的魯棒性。
CSI代表了信號(hào)在傳輸過(guò)程中所產(chǎn)生的時(shí)延、幅度衰減以及相位偏移等變化。換句話說(shuō),CSI表征了附近環(huán)境的無(wú)線特性。假設(shè)發(fā)送端信號(hào)為X(f,t),接收端信號(hào)為Y(f,t),那么有[1]:
Y(f,t)=H(f,t)·X(f,t)+n
(1)
其中,H(f,t)為信道頻率響應(yīng)矩陣,CSI就是對(duì)H(f,t)的估計(jì)。n為高斯白噪聲。對(duì)于單個(gè)子載波,CSI的形式如下:
Hi=|Hi|ej·sinθ
(2)
其中,|Hi|和θ分別表示CSI的幅度和相位。由于商用網(wǎng)卡接收到的兩個(gè)連續(xù)的CSI間相位差可能很大,因此該文只使用CSI的振幅進(jìn)行動(dòng)作識(shí)別。
圖1所示為方法流程,由信號(hào)采集、數(shù)據(jù)處理、訓(xùn)練預(yù)測(cè)三個(gè)階段組成。其中信號(hào)采集階段將在第3章詳細(xì)闡述。
圖1 方法流程
3.1.1 濾波去噪
由于人體動(dòng)作的頻率較低以及環(huán)境中高頻噪音存在,所以原始CSI需要濾除高頻分量,這里使用常用的巴特沃斯低通濾波器進(jìn)行濾波[1]。巴特沃斯低通濾波器的增益G2(ω)為:
(3)
其中,n表示濾波器的階數(shù),ωc表示截止頻率即功率下降為-3分貝時(shí)的頻率,G0是直流增益。頻率低于ωc的部分會(huì)以G0的增益通過(guò),而頻率高于ωc的就會(huì)被抑制。由于手部動(dòng)作頻率范圍在0.3 Hz到4.5 Hz之間[13],因此設(shè)置截止頻率為5 Hz,考慮到濾波效果與計(jì)算成本濾波器階數(shù)設(shè)置為5。圖2所示為濾波前后對(duì)比,可以看出濾波后曲線變得平滑高頻噪聲被抑制。
圖2 低通濾波前后CSI幅值對(duì)比
3.1.2 子載波選擇
SOM[6]是一種無(wú)監(jiān)督聚類(lèi)的神經(jīng)網(wǎng)絡(luò),通過(guò)學(xué)習(xí)自動(dòng)對(duì)輸入進(jìn)行聚類(lèi),且能保持?jǐn)?shù)據(jù)的拓?fù)浣Y(jié)構(gòu)不變。SOM由輸入和輸出(競(jìng)爭(zhēng)兩層)構(gòu)成,采用競(jìng)爭(zhēng)學(xué)習(xí)的方式進(jìn)行訓(xùn)練。首先將網(wǎng)絡(luò)權(quán)重初始化,接著每個(gè)輸入的樣本遍歷競(jìng)爭(zhēng)層中的每個(gè)節(jié)點(diǎn),計(jì)算兩者之間的距離(通常為歐式距離),選取距離最小的節(jié)點(diǎn)作為獲勝節(jié)點(diǎn)。
接著用隨機(jī)梯度下降法更新獲勝節(jié)點(diǎn)及其鄰近節(jié)點(diǎn)的權(quán)重向量使它們向輸入向量移動(dòng)。輸出節(jié)點(diǎn)v的權(quán)值更新公式為:
Wv(s+1)=Wv(s)+θ(u,v,s)·α(s)·(D(t)-Wv(s))
(4)
其中,Wv為權(quán)重向量,s為迭代次數(shù),D(t)為當(dāng)前輸入向量,u為獲勝節(jié)點(diǎn),θ(u,v,s)為s下給出u和v之間距離的鄰近函數(shù),用來(lái)確定獲勝節(jié)點(diǎn)對(duì)其近鄰節(jié)點(diǎn)的影響強(qiáng)弱。α(s)是一個(gè)單調(diào)遞減的學(xué)習(xí)率。對(duì)每個(gè)輸入向量這個(gè)過(guò)程會(huì)重復(fù)進(jìn)行直到達(dá)到提前設(shè)置的循環(huán)次數(shù)λ。
該文設(shè)置輸出層SOM神經(jīng)元的數(shù)量為3進(jìn)行聚類(lèi),圖3所示為上下?lián)]手時(shí)不同的四個(gè)子載波上的CSI聚類(lèi)后的結(jié)果。樣本數(shù)量為50,可以看到子載波3聚類(lèi)后只有一個(gè)簇,說(shuō)明數(shù)據(jù)內(nèi)在的分布較一致,受環(huán)境干擾較小。子載波1、2、4聚類(lèi)后均生成多個(gè)簇,說(shuō)明同一個(gè)子載波上的CSI間差異較大。因此對(duì)于上下?lián)]手動(dòng)作,選擇提取子載波3上的CSI作為訓(xùn)練數(shù)據(jù)。
圖3 上下?lián)]手的四個(gè)子載波聚類(lèi)結(jié)果
3.1.3 數(shù)據(jù)擴(kuò)增
相較傳統(tǒng)模型,深度學(xué)習(xí)的參數(shù)非常多,故有很強(qiáng)的擬合能力,從而也就需要更多的數(shù)據(jù)來(lái)避免過(guò)擬合的發(fā)生。但收集和標(biāo)記大量的數(shù)據(jù)是耗時(shí)耗力的。通過(guò)現(xiàn)有的樣本進(jìn)行數(shù)據(jù)擴(kuò)增創(chuàng)建新的樣本,能夠利用有限的數(shù)據(jù)有效地提高分類(lèi)性能[14]。該文采取了多種數(shù)據(jù)擴(kuò)增方法包括:
(a)添加噪聲,CSI序列加上高斯隨機(jī)噪聲序列n。
(b)縮放,CSI序列乘以縮放系數(shù)s。
(c)降采樣,設(shè)置降采樣因子m,保留CSI序列中間隔為m的采樣點(diǎn),其余采樣點(diǎn)舍棄。
(d)滑動(dòng)平均,采樣點(diǎn)i的值由滑動(dòng)窗口w內(nèi)CSI數(shù)據(jù)的平均值代替。
(e)截取,使用長(zhǎng)度為l的窗口在CSI序列上截取數(shù)據(jù)。
圖4所示為使用不同方法所產(chǎn)生的新樣本。可以看到一個(gè)樣本能生成多個(gè)虛擬樣本。且所生成的樣本保留了CSI的變化模式。
圖4 應(yīng)用不同數(shù)據(jù)擴(kuò)增方法得到的新樣本
3.1.4 CSI轉(zhuǎn)換為圖像
CNN能夠自動(dòng)高效地從圖像中提取特征。因此該文沒(méi)有手工設(shè)計(jì)特征,而是使用GASF[9]方法將接收到的CSI編碼為圖像,使用CNN提取特征。設(shè)X={x1,x2,…,xn}為濾波后的CSI序列,先通過(guò)
(5)
GASF=[cos(φi+φj)]1≤i,j≤n
(6)
于是有:
GASF= [cos(φi)·cos(φj)-sin(φi)·
sin(φj)]n×n
(7)
(8)
圖5所示為6種手勢(shì)動(dòng)作的CSI,通過(guò)轉(zhuǎn)換得到的GASF圖像,可以看到不同的動(dòng)作生成的圖像有不同的紋理特征。
圖5 不同手勢(shì)的CSI轉(zhuǎn)化得到的圖像
文中的CRNN由CNN、RNN構(gòu)成,訓(xùn)練時(shí)使用CTC作為損失函數(shù)。網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。
圖6 網(wǎng)絡(luò)結(jié)構(gòu)
3.2.1 卷積神經(jīng)網(wǎng)絡(luò)
首先使用卷積神經(jīng)網(wǎng)絡(luò)[15]來(lái)對(duì)圖像提取特征,卷積網(wǎng)絡(luò)部分由四個(gè)卷積模塊組成,每個(gè)卷積模塊由兩個(gè)二維卷積層加上一個(gè)池化層構(gòu)成。卷積層l的卷積計(jì)算公式為:
(9)
池卷積層的池化操作能夠減少模型的計(jì)算量和參數(shù)個(gè)數(shù),防止過(guò)擬合。該文使用了最大池化,其公式為:
fpool=Max(si,j,si+l,j,si,j+1,si+l,j+1)
(10)
其中,fpool是池化后的結(jié)果。si,j是特征圖張量上位置(i,j)上的元素。該文使用的池化核大小為2×2。
3.2.2 長(zhǎng)短期記憶網(wǎng)絡(luò)
由于CSI是時(shí)間序列數(shù)據(jù),所以接下來(lái)使用兩個(gè)長(zhǎng)短期記憶(long short-term memory,LSTM)層對(duì)CSI序列時(shí)間上的變化進(jìn)行建模。LSTM[16]是一種擁有三個(gè)“門(mén)”的特殊網(wǎng)絡(luò)結(jié)構(gòu),包括遺忘門(mén)、輸入門(mén)、輸出門(mén)。輸入門(mén)選擇保留的信息,遺忘門(mén)選擇被遺忘的信息,輸出門(mén)決定哪些狀態(tài)信息需要輸出,如公式(11)所示。
(11)
其中,i,f,o,g分別表示輸入門(mén)、遺忘門(mén)、輸出門(mén)的輸出以及輸入的單元狀態(tài)。σ,φ分別為sigmoid、tanh激活函數(shù),ht-1,xt分別為上一時(shí)刻的輸出和當(dāng)前時(shí)刻的輸入。當(dāng)前時(shí)刻的單元狀態(tài)ct為:
ct=f⊙ct-1+i⊙g
(12)
其中,ct-1為上一時(shí)刻的單元狀態(tài),⊙表示元素乘。由當(dāng)前時(shí)刻的輸出門(mén)輸出ot和單元狀態(tài)可得當(dāng)前時(shí)刻的輸出ht為:
ht=ot⊙tanh(ct)
(13)
3.2.3 CTC損失函數(shù)
由于CSI序列長(zhǎng)度不一致,那么訓(xùn)練前每個(gè)樣本都需要標(biāo)記出發(fā)生動(dòng)作的片段在整個(gè)CSI序列中的位置,從而截取得到長(zhǎng)度一致的輸入數(shù)據(jù),該文使用CTC[12]損失函數(shù)不需要對(duì)數(shù)據(jù)進(jìn)行截取。LSTM提取完特征后由兩個(gè)全連接層和Softmax層進(jìn)行分類(lèi),分類(lèi)結(jié)果作為CTC損失函數(shù)的輸入,此外還需要提供輸入長(zhǎng)度、標(biāo)簽、標(biāo)簽長(zhǎng)度。
(14)
用B表示映射函數(shù),消除重復(fù)的標(biāo)簽和空白標(biāo)簽,例如:
B(_,a,a,b,b,c,c,_)=(a,b,c)
(15)
因此輸出序列路徑為μ的概率可以表示為經(jīng)過(guò)映射后為μ的所有π的概率之和,即:
(16)
CTC損失函數(shù)定義如下:
CTC(X)=-logP(μ|X)
(17)
CTC算法通過(guò)最大路徑解碼所解得的概率最大的輸出序列路徑為:
(18)
其中,π*為T(mén)幀輸入序列的后驗(yàn)概率最大的CTC輸出序列路徑。
將一臺(tái)裝有英特爾5300網(wǎng)卡,系統(tǒng)內(nèi)核版本為4.1.10的HP Pavilion15筆記本電腦作為接收端接收信號(hào)。一個(gè)支持802.11n 協(xié)議的MERCURY MW305R路由器為發(fā)射端發(fā)送信號(hào)。使用Halperin[17]發(fā)布的CSI工具包來(lái)修改網(wǎng)卡驅(qū)動(dòng)。設(shè)置路由器的工作頻率為2.4 G,發(fā)包頻率為20 Hz。由于發(fā)射端有兩根天線,接收端有三根天線,每個(gè)天線對(duì)上有30個(gè)子載波。因此接收到的CSI數(shù)據(jù)為2*3*30的復(fù)數(shù)矩陣。
圖7(a)所示為實(shí)驗(yàn)環(huán)境。實(shí)驗(yàn)對(duì)象站在筆記本和路由器之間的桌子前做如圖7(b)所示的6種手勢(shì)動(dòng)作,每個(gè)手勢(shì)采集50組數(shù)據(jù),共計(jì)300組數(shù)據(jù)。使用240組數(shù)據(jù)訓(xùn)練模型,剩余60組數(shù)據(jù)對(duì)訓(xùn)練好的模型進(jìn)行測(cè)試。
(a)實(shí)驗(yàn)環(huán)境平面圖
(b)6種手勢(shì)
該文做了一系列對(duì)照實(shí)驗(yàn)來(lái)對(duì)比分析提出的方法的有效性。
4.2.1 不同的子載波選擇方法
為了驗(yàn)證提出的基于SOM聚類(lèi)的子載波選擇方法的有效性,對(duì)照實(shí)驗(yàn)使用了WiFall[4]的所有子載波求平均、LBR[5]的選擇CSI方差第二大的子載波進(jìn)行對(duì)比。僅改變子載波選擇方法,其他步驟相同,實(shí)驗(yàn)結(jié)果如表1所示。
表1 不同的子載波選擇方法結(jié)果對(duì)比
結(jié)果表明直接對(duì)所有子載波上的CSI求平均,結(jié)果準(zhǔn)確率較低,原因可能是不同的子載波對(duì)動(dòng)作和環(huán)境的敏感度不同,直接求平均值將各種環(huán)境因素的影響疊加到一起,使得CSI中的有效信息被掩蓋。選取方差第二大的子載波,準(zhǔn)確率雖然有所提高,但是由于CSI易受環(huán)境噪音影響,較大的方差可能是由于環(huán)境噪音變化引起的,而且不能保證相同動(dòng)作的CSI變化模式的一致性。通過(guò)聚類(lèi)選擇子載波能夠保證相同動(dòng)作的CSI數(shù)據(jù)內(nèi)部的一致性,不會(huì)出現(xiàn)異常數(shù)據(jù),準(zhǔn)確率較高。
4.2.2 不同的網(wǎng)絡(luò)結(jié)構(gòu)
將SignFi[18]使用的CNN及文獻(xiàn)[19]所使用的LSTM作為對(duì)照,并把使用交叉熵?fù)p失函數(shù)的CRNN也作為一種不同的網(wǎng)絡(luò)進(jìn)行對(duì)比,結(jié)果如表2所示。
表2 不同的網(wǎng)絡(luò)結(jié)構(gòu)結(jié)果對(duì)比
可以看到僅使用LSTM由于模型參數(shù)數(shù)量較少因此擬合能力較弱。使用CNN能夠達(dá)到相對(duì)較高的準(zhǔn)確率。相較于僅使用CNN或LSTM,同時(shí)使用CNN、LSTM能綜合利用兩種網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)勢(shì),準(zhǔn)確率較高。使用CTC損失函數(shù)不僅不需要對(duì)CSI進(jìn)行截取,而且能夠有效地識(shí)別發(fā)生動(dòng)作的CSI序列片段,從而提高模型的分類(lèi)準(zhǔn)確率。
4.2.3 不同數(shù)量的訓(xùn)練數(shù)據(jù)
基于學(xué)習(xí)的識(shí)別方法要求有大量的數(shù)據(jù)訓(xùn)練模型,本小節(jié)通過(guò)對(duì)比實(shí)驗(yàn)探究不同數(shù)量的訓(xùn)練數(shù)據(jù)對(duì)于識(shí)別準(zhǔn)確率的影響。分別使用120組數(shù)據(jù),240組數(shù)據(jù),與文中使用的240組數(shù)據(jù)并對(duì)數(shù)據(jù)擴(kuò)增的方法作對(duì)比,結(jié)果如表3所示。
表3 不同數(shù)量的訓(xùn)練數(shù)據(jù)結(jié)果對(duì)比
可以看到隨著訓(xùn)練數(shù)據(jù)的增加模型的分類(lèi)準(zhǔn)確率也隨之增加,模型對(duì)訓(xùn)練數(shù)據(jù)的數(shù)量有較高的要求。雖然大規(guī)模采集數(shù)據(jù)是不容易的,但是通過(guò)數(shù)據(jù)擴(kuò)增的方法,能夠在原有數(shù)據(jù)的基礎(chǔ)上增加數(shù)據(jù)的多樣性,有效提升模型的準(zhǔn)確率。使得基于學(xué)習(xí)的方法也能夠以較低的數(shù)據(jù)成本達(dá)到較高的識(shí)別效果。
提出了一種基于SOM聚類(lèi)的子載波選擇方法,并將CSI數(shù)據(jù)序列轉(zhuǎn)換為圖像,通過(guò)CNN、LSTM構(gòu)成的網(wǎng)絡(luò)使用CTC損失函數(shù)進(jìn)行訓(xùn)練分類(lèi)。在數(shù)據(jù)預(yù)處理和模型訓(xùn)練中,采用聚類(lèi)和深度學(xué)習(xí)的方法代替?zhèn)鹘y(tǒng)的基于手工設(shè)計(jì)特征的方法,并利用現(xiàn)有樣本進(jìn)行了數(shù)據(jù)擴(kuò)增。實(shí)驗(yàn)結(jié)果表明,該方法能夠在數(shù)據(jù)量較小的情況下達(dá)到較高的識(shí)別準(zhǔn)確率,且無(wú)需手工設(shè)計(jì)特征。下一步將會(huì)致力于研究提高模型的泛化能力。