張?zhí)旆f,史明泉,崔麗珍,秦 嶺
(內(nèi)蒙古科技大學(xué)信息工程學(xué)院,內(nèi)蒙古 包頭 014010)
在科技引領(lǐng)的新時(shí)代中,基于位置的服務(wù)早已滲透到各行各業(yè)中,并不斷地影響著人們的生活。對(duì)于室內(nèi)定位,眾多的學(xué)者和研究人員從未停止對(duì)其探索,如基于藍(lán)牙、射頻識(shí)別、超寬帶無(wú)線電、Wi-Fi等室內(nèi)定位技術(shù)[1-7]。其中,基于Wi-Fi的室內(nèi)定位技術(shù)因Wi-Fi設(shè)備覆蓋廣泛,不需要花費(fèi)時(shí)間和成本建設(shè)而得到廣泛應(yīng)用。
在離線階段可選擇不同的物理量作為位置指紋[8-17]。如,基于接收信號(hào)強(qiáng)度指標(biāo)(received signal strength indicator, RSSI)、到達(dá)角、到達(dá)時(shí)間、到達(dá)時(shí)間差和信道狀態(tài)信息(channel state information, CSI)等基礎(chǔ)信號(hào),以及基于信噪比、AP之間的信號(hào)強(qiáng)度差等復(fù)雜的信號(hào)。在基礎(chǔ)信號(hào)中,CSI的波動(dòng)小,相對(duì)于其他信號(hào)更加穩(wěn)定,但CSI的采集需要專門的設(shè)備,不便于普及。研究表明[18],RSSI的空間分辨率更高,大部分位置指紋技術(shù)采用RSSI作為指紋。
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)可以通過(guò)一系列的卷積運(yùn)算和池化運(yùn)算提取數(shù)據(jù)中的高級(jí)特征,但其不能捕捉特征之間的關(guān)系,如相對(duì)位置關(guān)系、空間關(guān)系、尺度關(guān)系等。為了更好地表征這些特征信息,Hinton提出了“膠囊”的概念,膠囊網(wǎng)絡(luò)(capsule network,CapsNet)[19]選取活動(dòng)向量的長(zhǎng)度來(lái)表示實(shí)體存在的概率,并使用它的方向來(lái)表示實(shí)例化參數(shù)。這使CapsNet可以從輸入數(shù)據(jù)中提取更多細(xì)節(jié)特征,同時(shí)也減少了特征信息的丟失,增強(qiáng)了室內(nèi)定位的穩(wěn)健性和準(zhǔn)確性。
綜上所述,本文提出一種由CNN和CapsNet共同構(gòu)成的CNN-CapsNet網(wǎng)絡(luò)模型,以此對(duì)原始采集信息的特征進(jìn)行充分的提取。同時(shí),為了更好地利用采集數(shù)據(jù)中包含的信息,將采集到的RSSI數(shù)據(jù)按照一定的空間特征順序構(gòu)成二維位置指紋圖像,并使用滑動(dòng)窗口對(duì)數(shù)據(jù)集進(jìn)行擴(kuò)展,再使用CNN-CapsNet網(wǎng)絡(luò)提取和學(xué)習(xí)特征,以期得到準(zhǔn)確率更高的定位模型。
系統(tǒng)模型如圖1所示,包括:離線階段和在線階段兩個(gè)階段。離線階段是首先將采集到的數(shù)據(jù)進(jìn)行預(yù)處理得到訓(xùn)練數(shù)據(jù)集,通過(guò)CNN提取底層信息,然后將其輸入到CapsNet中進(jìn)行訓(xùn)練,得到最優(yōu)結(jié)構(gòu);而在線定位階段就是通過(guò)訓(xùn)練好的最優(yōu)結(jié)構(gòu)直接進(jìn)行測(cè)試數(shù)據(jù)的目標(biāo)區(qū)域估計(jì)。
圖1 基于CNN-CapsNet的Wi-Fi室內(nèi)定位系統(tǒng)
采集數(shù)據(jù)的試驗(yàn)區(qū)域是內(nèi)蒙古科技大學(xué)逸夫樓一個(gè)空曠的長(zhǎng)廊,如圖2所示。其中共有50個(gè)采集點(diǎn),每?jī)蓚€(gè)采集點(diǎn)之間間隔1.6 m。
圖2 數(shù)據(jù)采集區(qū)域平面圖
考慮人在行走站立的過(guò)程中,手持移動(dòng)終端的平均高度約為1.5 m,因此,將移動(dòng)終端放置高度為1.5 m的手機(jī)支架上,分別在各采集點(diǎn)處進(jìn)行采集。移動(dòng)終端約2 s可對(duì)所有檢測(cè)到的AP進(jìn)行一次RSSI數(shù)據(jù)的采集,故選擇在每個(gè)采集點(diǎn)處采集約90 min,可得到T=2700次數(shù)據(jù)。采集到的RSSI的取值分布在-100~-35 dbm范圍內(nèi)。
采集到的數(shù)據(jù)結(jié)構(gòu)如圖3所示,其中T為從AP接收到RSSI的次數(shù),M為AP的數(shù)量。對(duì)于每個(gè)采集點(diǎn)均可以得到一個(gè)數(shù)據(jù)結(jié)構(gòu),共50個(gè)采集點(diǎn)。
圖3 采集點(diǎn)數(shù)據(jù)結(jié)構(gòu)
在機(jī)器學(xué)習(xí)中,絕大部分圖像處理模型都需要很多數(shù)據(jù)進(jìn)行訓(xùn)練學(xué)習(xí)。當(dāng)訓(xùn)練數(shù)據(jù)不足時(shí),會(huì)對(duì)訓(xùn)練數(shù)據(jù)中的圖像做旋轉(zhuǎn)、平移、縮放、填充、左右反轉(zhuǎn)等變換。這些變化都是對(duì)同一個(gè)目標(biāo)在不同角度的觀察結(jié)果,但位置指紋圖像則通過(guò)RSSI值構(gòu)成,每個(gè)像素點(diǎn)都有著特定的含義。若使用上述方法對(duì)特征圖進(jìn)行變換,會(huì)破壞RSSI中包含的信息,因此,本文使用滑動(dòng)窗口法來(lái)擴(kuò)展訓(xùn)練集。
如圖4(a)所示,RSSI特征圖像的總測(cè)量次數(shù)為T,當(dāng)測(cè)量次數(shù)為t時(shí)對(duì)數(shù)據(jù)進(jìn)行分割,得到T/t個(gè)特征圖。如圖4(b)所示,當(dāng)對(duì)數(shù)據(jù)使用滑動(dòng)窗口進(jìn)行分割時(shí),每隔t/2次生成一個(gè)特征圖,因此每?jī)蓚€(gè)相鄰的特征圖之間會(huì)有t/2的RSSI數(shù)據(jù)重合。即允許相鄰的RSSI特征圖像在時(shí)域內(nèi)重疊,得到2(T/t)-1個(gè)特征圖,從而構(gòu)成離線數(shù)據(jù)庫(kù)。
圖4 滑動(dòng)窗口分割數(shù)據(jù)對(duì)比
通過(guò)滑動(dòng)窗口分割后,部分定位點(diǎn)的位置指紋特征圖如圖5所示。
圖5 部分位置指紋特征
模型訓(xùn)練是通過(guò)已得到的數(shù)據(jù)集及其對(duì)應(yīng)的數(shù)據(jù)標(biāo)簽,將其輸入到CNN-CapsNet網(wǎng)絡(luò)中,通過(guò)不斷提取特征、學(xué)習(xí)特征,從而尋找最優(yōu)的權(quán)重參數(shù),使得模型的準(zhǔn)確率最大化,訓(xùn)練好的模型在目標(biāo)定位區(qū)域即可得到定位點(diǎn)。尋找最佳模型通常需要多次試驗(yàn)得到最佳參數(shù),CNN-CapsNet網(wǎng)絡(luò)的訓(xùn)練過(guò)程是十分耗時(shí)的,每次迭代使用所有的樣本數(shù)據(jù)會(huì)使迭代速度變慢,且對(duì)計(jì)算設(shè)備的內(nèi)存要求較高。因此,每次迭代時(shí),僅使用一部分?jǐn)?shù)據(jù)進(jìn)行,以使學(xué)習(xí)訓(xùn)練過(guò)程具有更強(qiáng)的穩(wěn)健性。
CNN-CapsNet網(wǎng)絡(luò)模型架構(gòu)如圖6所示。定位區(qū)域采集得到的位置指紋特征圖首先由卷積層和池化層構(gòu)成的CNN進(jìn)行初級(jí)特征提取,完成定位圖像到初級(jí)特征圖的轉(zhuǎn)換。然后通過(guò)CapsNet進(jìn)行更深層的特征提取,完成區(qū)域定位。
圖6 CNN-CapsNet網(wǎng)絡(luò)架構(gòu)
CNN通常由卷積層、池化層和全連接層3部分組成,本文模型中僅使用卷積層和池化層。卷積層和池化層構(gòu)成特征提取器,卷積核相當(dāng)于特征探測(cè)器,通過(guò)卷積核對(duì)其進(jìn)行特征提取運(yùn)算,提取結(jié)果為一個(gè)新的特征層。為了使模型擁有非線性表達(dá)能力,常將卷積后的運(yùn)算結(jié)果通過(guò)激活函數(shù)(ReLU)作非線性映射,其中ReLU函數(shù)表達(dá)式為
(1)
通過(guò)卷積層處理后的數(shù)據(jù)是十分龐大的,常通過(guò)池化層減小原卷積層輸出張量的維度,降低計(jì)算量和時(shí)間復(fù)雜度。本文模型中CNN部分由兩個(gè)卷積層構(gòu)成,其結(jié)構(gòu)如圖7所示。
圖7 CNN內(nèi)部結(jié)構(gòu)
輸入的位置指紋特征圖大小為20×187,首先使用64個(gè)大小為2×7的卷積核提取底層信息,卷積層輸出特征圖大小為19×181×64;然后使用2×2最大池化過(guò)濾器,則第一個(gè)卷積層輸出特征圖為10×91×64。第二層與第一層同理,則第二層卷積層輸出特征圖大小為5×42×128。
CapsNet算法是采用端到端的方式提取圖像的空間信息,將輸入標(biāo)量轉(zhuǎn)換為向量。使用輸出向量的長(zhǎng)度來(lái)表征實(shí)體存在的概率,方向表示實(shí)例化的參數(shù)或圖形屬性,從而降低特征信息的丟失,提高模型的特征提取能力。本系統(tǒng)使用的CapsNet架構(gòu)如圖8所示。
圖8 CapsNet架構(gòu)
將CNN網(wǎng)絡(luò)處理后的特征圖再使用256個(gè)大小為2×5的卷積核進(jìn)行卷積,然后連接主膠囊層。在膠囊層中,神經(jīng)元是一個(gè)向量而不是標(biāo)量,但卷積后的特征層為標(biāo)量,因此需將卷積之后的特征層重構(gòu)成向量的形式。構(gòu)建向量神經(jīng)元的方法是將特征層的每8個(gè)通道合并成一個(gè)新的膠囊單元,而新的膠囊單元的通道數(shù)將減少為原來(lái)通道數(shù)的1/8,膠囊單元作為膠囊層的輸入。
最后一層為數(shù)字膠囊層,用于存儲(chǔ)高級(jí)別特征的向量,輸出50個(gè)維度為16的向量,每個(gè)向量代表一種定位點(diǎn)。通過(guò)向量的模長(zhǎng)來(lái)衡量各個(gè)類別的概率,模越值大,屬于這個(gè)類的概率越大。
圖9 CapsNet內(nèi)部結(jié)構(gòu)
(2)
(3)
cij為耦合系數(shù),由動(dòng)態(tài)路由算法確定,其目的是讓輸出的神經(jīng)元自主選擇最好的路徑傳輸?shù)较乱粚由窠?jīng)元,定義公式為
(4)
(5)
(6)
動(dòng)態(tài)路由算法如下。
路由算法
2:對(duì)于所有l(wèi)層的膠囊i和l+1層的膠囊j:bij→0
3:迭代r次
4: 對(duì)于所有l(wèi)層的膠囊i:cij←Softmax(bij)
6: 對(duì)于所有l(wèi)+1層的膠囊j:vj←Squash(sj)
返回vj
在模型的訓(xùn)練過(guò)程中,模型的權(quán)值需要通過(guò)反向傳播算法對(duì)其進(jìn)行更新或迭代,而反向傳播需要一個(gè)能度量模型輸出值與真實(shí)值之間距離的損失函數(shù)。通過(guò)損失函數(shù),在訓(xùn)練時(shí)就可以通過(guò)反向傳播算法不斷更新迭代模型的權(quán)重值。本文損失函數(shù)的表達(dá)式為
(7)
本文的試驗(yàn)參數(shù)設(shè)定具體見(jiàn)表1。
表1 試驗(yàn)參數(shù)
在圖像處理領(lǐng)域,數(shù)據(jù)集的大小與訓(xùn)練網(wǎng)絡(luò)模型性能存在密不可分的關(guān)系,通常數(shù)據(jù)集越大,對(duì)特征的學(xué)習(xí)提取效果越好。CNN-CapsNet網(wǎng)絡(luò)中,CapsNet的主要步驟在于動(dòng)態(tài)路由,使用適量的數(shù)據(jù)集有助于在一定時(shí)間、參數(shù)范圍根據(jù)空間特征訓(xùn)練出合適的網(wǎng)絡(luò),過(guò)大的數(shù)據(jù)集會(huì)加大路由時(shí)間和參數(shù)反而使得網(wǎng)絡(luò)性能降低,因此數(shù)據(jù)集大小也是網(wǎng)絡(luò)訓(xùn)練中的重要參數(shù)之一。
本文試驗(yàn)使用了3種數(shù)據(jù)集,分別為數(shù)據(jù)集1、數(shù)據(jù)集2和數(shù)據(jù)集3。3個(gè)數(shù)據(jù)集中都包含50個(gè)定位點(diǎn),不同的是在數(shù)據(jù)集1中每個(gè)定位點(diǎn)包含25張位置指紋特征圖,共1250張位置指紋特征圖;數(shù)據(jù)集2中每個(gè)定位點(diǎn)包含50張位置指紋特征圖,共2500張位置指紋特征圖;數(shù)據(jù)集3中每個(gè)定位點(diǎn)包含100張位置指紋特征圖,共5000張位置指紋特征圖。
使用CNN-CapsNet定位模型分別對(duì)以上3種數(shù)據(jù)集進(jìn)行訓(xùn)練,結(jié)果見(jiàn)表2。不難看出,隨著數(shù)據(jù)集內(nèi)位置指紋圖像數(shù)量的增加,模型訓(xùn)練的損失逐漸降低,測(cè)試的準(zhǔn)確率逐漸升高,模型整體性能呈現(xiàn)變好趨勢(shì)。但隨著數(shù)據(jù)集內(nèi)數(shù)據(jù)數(shù)量的增加,所需的訓(xùn)練時(shí)長(zhǎng)也逐漸增加,數(shù)據(jù)集2與數(shù)據(jù)集3之間準(zhǔn)確率雖有提升,但提升微弱。綜合考慮多種因素,數(shù)據(jù)集2即可表達(dá)各定位點(diǎn)數(shù)據(jù)特征,不需要使用更大的數(shù)據(jù)集,浪費(fèi)更多的時(shí)間成本。
本文將主膠囊層及數(shù)字膠囊層的向量長(zhǎng)度對(duì)系統(tǒng)定位精度的影響也做出了對(duì)比,見(jiàn)表3??芍诮M合1至組合6中,模型的損失函數(shù)都是極低的。以至于在該數(shù)量級(jí)上,各個(gè)模型之間損失函數(shù)的差異性是可以忽略不計(jì)的。故損失函數(shù)的大小不是本文衡量模型性能最合適的指標(biāo)。各模型之間存的差異是模型的收斂速度,當(dāng)模型的穩(wěn)定性相同時(shí),模型的收斂速度越快其性能就相對(duì)越好。
圖10為6種組合模型其損失函數(shù)值隨訓(xùn)練位置指紋圖像張數(shù)的變化情況。當(dāng)數(shù)字膠囊層向量維度固定,隨著主膠囊向量維度的增加,模型的收斂時(shí)間也越長(zhǎng)。當(dāng)主膠囊向量維度相同時(shí),隨著數(shù)字膠囊向量維度的增加,模型的收斂速度反而越快。由圖10可知,當(dāng)主膠囊層向量維度為8,數(shù)字膠囊層向量維度為16時(shí),收斂速度最快,模型的性能最好。
圖10 損失模型函數(shù)值隨訓(xùn)練圖像張數(shù)的變化
在CapsNet中,除了向量維度,路由迭代次數(shù)也是影響模型好壞的重要因素。當(dāng)?shù)螖?shù)較少時(shí),試驗(yàn)結(jié)果較差,這是因?yàn)檩^少的路由迭代次數(shù)導(dǎo)致耦合系數(shù)無(wú)法得到充分學(xué)習(xí)。然而當(dāng)路由迭代次數(shù)過(guò)大時(shí),模型參數(shù)的增加導(dǎo)致過(guò)擬合,準(zhǔn)確率也會(huì)隨之下降(見(jiàn)表4),當(dāng)路由迭代次數(shù)設(shè)置為3時(shí)性能最高。
表4 路由迭代次數(shù)對(duì)定位模型性能的影響
為估計(jì)本文模型性能,將其與以下幾個(gè)模型在構(gòu)建的數(shù)據(jù)集上進(jìn)行對(duì)比試驗(yàn),各模型特點(diǎn)如下。
(1)模型1 CNN在圖像處理領(lǐng)域的表現(xiàn)是十分出色的,但CNN網(wǎng)絡(luò)中神經(jīng)元之間傳遞的是標(biāo)量,無(wú)法體現(xiàn)空間關(guān)系,缺少方向性。
(2)模型2 CapsNet是以向量的形式表示部分與整體之間的關(guān)系的,不僅能夠以特征響應(yīng)的強(qiáng)度來(lái)表示圖像,還能夠表征圖像特征的方向、位置等信息。
(3)模型3、4、5是將注意力機(jī)制與CapsNet相結(jié)合,注意力機(jī)制是實(shí)現(xiàn)網(wǎng)絡(luò)自適應(yīng)注意的一種方式,使網(wǎng)絡(luò)去關(guān)注更需要關(guān)注的地方。其中,SE為常用的通道注意力機(jī)制,可以使模型更加關(guān)注信息量最大的通道特征,而抑制那些不重要的通道特征;CBAM是表示卷積模塊的注意力機(jī)制,是一種結(jié)合了空間和通道的注意力機(jī)制模塊;ECA也是通道注意力機(jī)制模塊,是SE的改進(jìn)版。
(4)模型6為本文使用的模型,使用向量與標(biāo)量相結(jié)合的方式對(duì)位置指紋特征圖進(jìn)行有效的特征提取。
以上模型在構(gòu)建的數(shù)據(jù)集上進(jìn)行對(duì)比試驗(yàn),其結(jié)果見(jiàn)表5,將CapsNet與CNN兩種模型的試驗(yàn)數(shù)據(jù)結(jié)果對(duì)比,充分體現(xiàn)了使用向量代替標(biāo)量表示圖像特征的優(yōu)勢(shì)。為了提升CapsNet的性能,嘗試在CapsNet中融合注意力機(jī)制,通過(guò)注意力機(jī)制使CapsNet的注意力在訓(xùn)練時(shí)放在圖像特征更突出的地方。當(dāng)CapsNet與CEA和SE相結(jié)合時(shí),損失函數(shù)的損失值增加了;只有與CBAM注意力機(jī)制融合時(shí),模型的損失函數(shù)才有所降低,但3種融合方式,都增加了網(wǎng)絡(luò)的訓(xùn)練時(shí)長(zhǎng)。換而言之,3種融合方式均增加了原網(wǎng)絡(luò)的計(jì)算復(fù)雜度。當(dāng)CapsNet與CNN結(jié)合時(shí),不僅損失值有明顯的降低,訓(xùn)練所需時(shí)長(zhǎng)也比其他融合方式短。由此可見(jiàn),將標(biāo)量和向量相結(jié)合的方式可對(duì)位置指紋特征圖進(jìn)行有效的特征提取,并降低網(wǎng)絡(luò)的計(jì)算復(fù)雜度,節(jié)約網(wǎng)絡(luò)訓(xùn)練時(shí)間。
表5 不同算法的試驗(yàn)結(jié)果
本文提出了一種融合CNN和CapsNet的Wi-Fi室內(nèi)定位方法。針對(duì)傳統(tǒng)位置指紋數(shù)據(jù)存在單一性的問(wèn)題,充分利用采集數(shù)據(jù)中包含的時(shí)間信息,構(gòu)建成二維位置指紋圖像,通過(guò)對(duì)位置指紋圖像的特征學(xué)習(xí)實(shí)現(xiàn)定位區(qū)域的識(shí)別。相比于使用傳統(tǒng)網(wǎng)絡(luò)進(jìn)行室內(nèi)定位,本文將CNN和CapsNet相結(jié)合,將標(biāo)量和向量相結(jié)合,增強(qiáng)網(wǎng)絡(luò)對(duì)特征的提取能力,降低了網(wǎng)絡(luò)的計(jì)算復(fù)雜度,節(jié)約了網(wǎng)絡(luò)訓(xùn)練所需的時(shí)長(zhǎng)。通過(guò)CapsNet的動(dòng)態(tài)路由算法,不再一味地追求學(xué)習(xí)大數(shù)據(jù)集,減少了網(wǎng)絡(luò)對(duì)數(shù)據(jù)庫(kù)數(shù)量的依賴。試驗(yàn)結(jié)果表明,使用CNN-CapsNet網(wǎng)絡(luò)進(jìn)行室內(nèi)定位,其損失可達(dá)0.009 91,并優(yōu)于其他網(wǎng)絡(luò)模型。