楊志勇,王環(huán)環(huán),劉 燦
(南昌航空大學(xué) 軟件學(xué)院,江西 南昌 330063)
目前,人流量監(jiān)測方法可以分為基于圖像和非圖像的兩大類?;趫D像的方法通常需要對圖像進(jìn)行處理以提取頭肩特征,進(jìn)而實(shí)現(xiàn)對人員的統(tǒng)計(jì)及人流量監(jiān)測。例如,文獻(xiàn)[1]利用圖像的顏色和深度信息識(shí)別頭部實(shí)現(xiàn)人流量統(tǒng)計(jì),文獻(xiàn)[2]提出在靜態(tài)圖像中進(jìn)行人群計(jì)數(shù)的新方法。然而,基于圖像的方法也存在一些問題,比如存在盲區(qū)、易受光線影響、擁擠場景識(shí)別困難等。非圖像的方法根據(jù)采用的感知技術(shù)不同,有傳統(tǒng)閘機(jī)、傳感器和無線信號(hào)感知的方法3類。閘機(jī)最為常見,其簡單可靠、能精確統(tǒng)計(jì),但通行效率低?;趥鞲衅鞯姆椒ㄖ?,主要采用壓敏傳感器[3]和紅外傳感器[4,5],該類方法有一定的適用范圍,后期維護(hù)不易。近年來,目標(biāo)手持設(shè)備的接入信息[6]、接收信號(hào)強(qiáng)度[7](received signal strength,RSS)、信道狀態(tài)信息(channel state information,CSI)[8]也被用于人流量監(jiān)測,此類方法要求目標(biāo)攜帶設(shè)備。最新的人流量監(jiān)測方法是采用被動(dòng)無線感知技術(shù),利用WiFi設(shè)備[9]、無線傳感網(wǎng)絡(luò)[10]的無線信號(hào)構(gòu)建監(jiān)測系統(tǒng)。本文研究利用無線傳感網(wǎng)絡(luò)各節(jié)點(diǎn)之間無線鏈路的RSS信號(hào)和機(jī)器學(xué)習(xí)算法進(jìn)行人流量監(jiān)測。該方法首先構(gòu)建對無線感知網(wǎng)絡(luò)以采集的RSS信號(hào),然后利用支持向量機(jī)、梯度提升迭代決策樹、XGBoost和邏輯回歸算法構(gòu)造兩層集成學(xué)習(xí)分類器,以識(shí)別通過監(jiān)測網(wǎng)絡(luò)的瞬時(shí)人數(shù),最后利用連續(xù)的識(shí)別累積實(shí)現(xiàn)人流量監(jiān)測。此方法大幅度提升了人流量監(jiān)測的精度,達(dá)到94.29%。
本文提出的基于射頻信號(hào)和集成學(xué)習(xí)的人流量監(jiān)測方法包括3個(gè)部分:數(shù)據(jù)采集、特征提取和人流量監(jiān)測模型,基于射頻信號(hào)的人流量監(jiān)測方法框架如圖1所示。
圖1 基于射頻信號(hào)的人流量監(jiān)測方法框架
在一個(gè)“門”形框架上部署若干個(gè)物聯(lián)網(wǎng)節(jié)點(diǎn),構(gòu)建無線感知網(wǎng)絡(luò)。節(jié)點(diǎn)以輪詢廣播的方式進(jìn)行無線通信,每一個(gè)節(jié)點(diǎn)接收所有廣播消息以獲取該無線鏈路的RSS值,并將其放入消息包中。所有節(jié)點(diǎn)都廣播一次無線消息為一個(gè)采樣周期。Sink節(jié)點(diǎn)偵聽網(wǎng)絡(luò)所有通信,并將偵聽到的數(shù)據(jù)包通過串口傳到電腦端進(jìn)行后續(xù)處理。預(yù)處理包括對原始數(shù)據(jù)進(jìn)行物理RSS值的轉(zhuǎn)換和對缺失節(jié)點(diǎn)數(shù)據(jù)的處理。
考慮到硬件采集到的原始數(shù)據(jù)過多且存在噪聲,不適合直接用機(jī)器學(xué)習(xí)算法進(jìn)行處理,需要對原始信號(hào)進(jìn)行特征提取,特征提取過程分為兩個(gè)步驟:首先,根據(jù)節(jié)點(diǎn)的部署選取有效鏈路;然后,將有效鏈路的測量值與其空環(huán)境時(shí)的基準(zhǔn)值做差,得到有效鏈路因行人的陰影衰落效應(yīng)導(dǎo)致的接收信號(hào)強(qiáng)度的衰減值,并將其作為特征值。
若一個(gè)無線射頻網(wǎng)絡(luò)由K個(gè)節(jié)點(diǎn)組成,所有節(jié)點(diǎn)均可相互通信,從1號(hào)節(jié)點(diǎn)到K號(hào)節(jié)點(diǎn)依次發(fā)射一個(gè)廣播消息形成一個(gè)完整的采樣周期。當(dāng)一個(gè)采樣周期結(jié)束,每個(gè)節(jié)點(diǎn)理論上都能收到 (K-1) 個(gè)信息包,網(wǎng)絡(luò)中共有L=K(K-1)/2條不區(qū)分方向的無線鏈路。然而,在人流量監(jiān)測的實(shí)際過程中,有些無線鏈路的視距路徑?jīng)]有穿越行人可能通過的空間,也就不會(huì)因行人的經(jīng)過而發(fā)生陰影衰落,本文將這些鏈路定義為無效鏈路。無效鏈路的RSS值對人流量識(shí)別及統(tǒng)計(jì)沒有幫助,需要根據(jù)節(jié)點(diǎn)的部署將其剔除。剩余的那些視距路徑穿越了“門”下區(qū)域的各條鏈路,當(dāng)行人經(jīng)過時(shí)有可能產(chǎn)生陰影衰落,這些鏈路被視為有效鏈路。有效鏈路動(dòng)態(tài)監(jiān)測時(shí)的實(shí)測RSS值與靜態(tài)空環(huán)境時(shí)的基準(zhǔn)RSS值的差值是該鏈路受人體影響的衰減值,本文將全體有效鏈路衰減值構(gòu)成的RSS向量作為特征值。
人流量監(jiān)測模型基于兩層集成機(jī)器學(xué)習(xí)[11,12]算法構(gòu)建。首先,將帶有標(biāo)簽的不同人數(shù)通過監(jiān)測區(qū)域時(shí)的RSS值作為機(jī)器學(xué)習(xí)算法的輸入,分別用支持向量機(jī)、梯度提升迭代決策樹和XGBoost(extreme gradient boosting)算法訓(xùn)練出3個(gè)初級(jí)分類器;然后,將3個(gè)初級(jí)分類器的輸出類概率作為次級(jí)學(xué)習(xí)器——邏輯回歸算法的輸入,構(gòu)建基于“學(xué)習(xí)型”集成思想的瞬時(shí)人數(shù)識(shí)別模型;最后,將基于兩層集成學(xué)習(xí)分類器判斷的瞬時(shí)人數(shù)在時(shí)間上累計(jì),實(shí)現(xiàn)人數(shù)的統(tǒng)計(jì)和人流量監(jiān)測。詳細(xì)算法將在下節(jié)描述。
分別利用支持向量機(jī)、梯度提升迭代決策樹和XGBoost機(jī)器學(xué)習(xí)算法建立了3個(gè)初級(jí)分類器,并利用集成思想建立融合模型得到最終的人流量監(jiān)測算法模型。
支持向量機(jī)(support vector machine,SVM)是基于統(tǒng)計(jì)學(xué)習(xí)理論提出的一種方法?;诮y(tǒng)計(jì)學(xué)習(xí)理論,根據(jù)結(jié)構(gòu)風(fēng)險(xiǎn)最小化的原則建立模型庫,在有限樣本條件下得到的決策規(guī)則對獨(dú)立測試數(shù)據(jù)集的期望風(fēng)險(xiǎn)仍然較低。SVM的訓(xùn)練過程是在高維空間中尋找最優(yōu)的超平面來分割數(shù)據(jù)[13]。
以二分類問題為例,存在訓(xùn)練樣本集D={(x1,y1),(x2,y2),…,(xn,yn)}。 其中yi∈{-1,+1}, SVM方法是通過尋找一個(gè)最優(yōu)分類超平面,將D中的樣本按各自特征進(jìn)行分類。分類超平面為wTx+b=0, 其中w是確定超平面的法向量,b決定了超平面到原點(diǎn)的距離。因此,SVM的基本公式如式(1)所示
(1)
如果輸入向量是線性可分的,那么所有的樣本都可以被劃分到分離超平面的正確邊,且邊界至少為1。然而,如果輸入向量不是線性可分的,就不能用線性分類來處理這些向量。需要利用核函數(shù)將輸入向量映射到高維空間,從而將低維空間的非線性可分性問題轉(zhuǎn)化為高維空間的線性可分性問題。通過尋找分類超平面來實(shí)現(xiàn)分類的目的。核函數(shù)如式(2)所示
K(xi,xj)=〈φ(xi)·φ(Xj)〉
(2)
φ是一個(gè)從X到內(nèi)積特征空間的映射。任何滿足Mercer條件的函數(shù)都可以看作是一個(gè)內(nèi)核函數(shù)。選擇不同的核函數(shù)會(huì)生成不同的模型,核函數(shù)的選擇會(huì)影響SVM的分類結(jié)果和機(jī)器學(xué)習(xí)能力。常見的核函數(shù)有多項(xiàng)式核函數(shù)、徑向基核函數(shù)、拉普拉斯核函數(shù)和Sigmoid核函數(shù)等。本文通過實(shí)驗(yàn)選擇多項(xiàng)式核函數(shù)作為SVM的核函數(shù)對實(shí)驗(yàn)數(shù)據(jù)進(jìn)行處理,其公式為
(3)
由于本文研究的人流量監(jiān)測是多分類問題,而SVM最初用于二分類問題,因此,需要構(gòu)造多個(gè)SVM解決多分類問題。本文采用“一對其余”的構(gòu)造方法對n分類問題構(gòu)建n個(gè)支持向量機(jī),每個(gè)支持向量機(jī)負(fù)責(zé)區(qū)分本類數(shù)據(jù)和非本類數(shù)據(jù)。
梯度提升迭代決策樹(gradient boosting decision tree,GBDT)是集成學(xué)習(xí)家族中的一員,GBDT通過多輪迭代,每次迭代都會(huì)生成一個(gè)弱分類器,每個(gè)分類器會(huì)都會(huì)根據(jù)之前分類器與真實(shí)數(shù)據(jù)的殘差進(jìn)行擬合訓(xùn)練,使得殘差越來越小,等達(dá)到迭代次數(shù)之后就停止迭代[14,15]。GBDT在迭代過程中,每次迭代的弱分類器為CART樹,其模型結(jié)構(gòu)如圖2所示。
圖2 GBDT模型結(jié)構(gòu)
GBDT與Bagging的均勻采樣思想不同,GBDT的各輪訓(xùn)練集與之前各輪迭代學(xué)習(xí)結(jié)果有關(guān),通過減少殘差來提高最終分類器的精確度。每次迭代過程中會(huì)有一些數(shù)據(jù)點(diǎn)被錯(cuò)分,因此,可以降低被正確分類的數(shù)據(jù)點(diǎn)的權(quán)重而提高被錯(cuò)分?jǐn)?shù)據(jù)點(diǎn)的權(quán)重,使得錯(cuò)分的數(shù)據(jù)點(diǎn)得到更多的關(guān)注。當(dāng)?shù)V箷r(shí),會(huì)得到迭代輪數(shù)一致的分類器,然后將它們組合即可得到最終的分類模型。GBDT算法流程如下:
(1)初始化模型f0(x), 即初始化弱分類器,公式如下
(4)
(2)計(jì)算損失函數(shù)的負(fù)梯度來近似損失,如式(5)所示
(5)
GBDT通過計(jì)算rti就可以得到新的樣本數(shù)據(jù)集 [(xi,ric),i=1,2,…,N]。 我們可以將這個(gè)數(shù)據(jù)集當(dāng)作新的訓(xùn)練集來擬合CART樹。新的樹模型由節(jié)點(diǎn)Rjc(j=1,2,…,J) 組成。
對每個(gè)葉子節(jié)點(diǎn),需要最小化損失函數(shù),如式(6)所示
(6)
然后,可以得到如下的擬合的決策樹
(7)
最終的輸出模型為
(8)
XGBoost是一種有效的樹模型增強(qiáng)方法,多棵樹的線性組合可以很好地?cái)M合訓(xùn)練數(shù)據(jù),描述輸入和輸出數(shù)據(jù)之間復(fù)雜的非線性關(guān)系[16]。模型的基本型如式(9)所示
(9)
(10)
(11)
其中,gi和hi分別是損失函數(shù)的一階和二階梯度統(tǒng)計(jì)。通常無法枚舉所有可能的樹結(jié)構(gòu)來選取最優(yōu),因此可以采用貪婪算法來代替,如從單個(gè)葉節(jié)點(diǎn)開始,迭代分裂給樹增加節(jié)點(diǎn)。節(jié)點(diǎn)分裂前后的增益為
(12)
模型融合方法是機(jī)器學(xué)習(xí)分類問題和回歸問題的一種有效方法,而模型融合方法常用的框架是集成學(xué)習(xí),其主要思想是利用前一層機(jī)器學(xué)習(xí)模型的學(xué)習(xí)輸出結(jié)果作為下一層模型的輸入變量[17]。集成學(xué)習(xí)常用的兩大類是Bagging和Boosting[18-20]。本文采用“學(xué)習(xí)型”結(jié)合策略的集成思想,即先從初始訓(xùn)練集訓(xùn)練出初級(jí)學(xué)習(xí)器,然后“生成”一個(gè)新數(shù)據(jù)集用于訓(xùn)練次級(jí)學(xué)習(xí)器。在這個(gè)新數(shù)據(jù)集中,初級(jí)學(xué)習(xí)器的輸出被當(dāng)作樣例輸入特征,而初始樣本的標(biāo)記仍被當(dāng)作樣例標(biāo)記。在訓(xùn)練階段,采用交叉驗(yàn)證方式來訓(xùn)練初級(jí)學(xué)習(xí)器未使用的樣本來產(chǎn)生次級(jí)學(xué)習(xí)器的訓(xùn)練樣本。
在我們設(shè)計(jì)的人流量監(jiān)測系統(tǒng)中,使用了兩層集成學(xué)習(xí)模型,結(jié)構(gòu)如圖3所示。第一層使用了3個(gè)常用模型:SVM、GBDT和XGBoost。第一層使用較復(fù)雜的分類器可以學(xué)習(xí)到RSS衰減值中隱含的更深層的特征。我們將所有數(shù)據(jù)分成訓(xùn)練集和測試集,對訓(xùn)練集做五折交叉驗(yàn)證,其中四折用于訓(xùn)練分類器,另一折數(shù)據(jù)作為驗(yàn)證集。通過對3個(gè)分類器分別交叉驗(yàn)證,得到3個(gè)初級(jí)分類器的輸出,將其合并后作為第二層分類器的訓(xùn)練集。在第二層,采用邏輯回歸算法,LR經(jīng)過3個(gè)初級(jí)分類器得到的訓(xùn)練數(shù)據(jù)集訓(xùn)練之后,用測試集評估Stacking集成學(xué)習(xí)算法的性能。
圖3 人流量監(jiān)測模型
本節(jié)介紹實(shí)驗(yàn)設(shè)置、數(shù)據(jù)處理及集成學(xué)習(xí)算法模型的性能評估。
實(shí)驗(yàn)環(huán)境如圖4所示。本實(shí)驗(yàn)利用18個(gè)自制CC2530節(jié)點(diǎn)和一個(gè)金屬支架組成門框。門框上等距分別部署5個(gè)節(jié)點(diǎn),上方的門梁上部署10個(gè)節(jié)點(diǎn)。門架寬2.4 m,高2.0 m。匯聚節(jié)點(diǎn)放置在離監(jiān)測點(diǎn)約5 m遠(yuǎn)的地方,并與PC通過虛擬串口連接,實(shí)驗(yàn)時(shí)將偵聽到的RSS數(shù)據(jù)包傳到電腦進(jìn)行后續(xù)處理。
圖4 實(shí)驗(yàn)環(huán)境
傳感器節(jié)點(diǎn)組成一個(gè)無線傳感網(wǎng)絡(luò),以輪詢的方式依次發(fā)送數(shù)據(jù)。某個(gè)節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),其它感知節(jié)點(diǎn)均接收此消息,但對消息包不做任何處理,只是獲取此次通信的RSS值并存儲(chǔ)到數(shù)組中對應(yīng)的位置,等到自己發(fā)送消息時(shí)將該RSS數(shù)組封裝到消息包中發(fā)送出去。匯聚節(jié)點(diǎn)偵聽接收來自無線傳感網(wǎng)絡(luò)所有節(jié)點(diǎn)的消息包,提取其RSS值數(shù)組并傳輸?shù)絇C機(jī)存儲(chǔ)。
數(shù)據(jù)采集與預(yù)處理流程是:①數(shù)據(jù)采集。通過搭建的無線傳感網(wǎng)絡(luò)進(jìn)行實(shí)驗(yàn)數(shù)據(jù)的采集;②數(shù)據(jù)缺失處理。由于少量丟包現(xiàn)象導(dǎo)致個(gè)別采樣周期數(shù)據(jù)不完整,采用歷史值填充的方法進(jìn)行缺失處理;③進(jìn)制轉(zhuǎn)換。將十六進(jìn)制RSS數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制;④RSS物理值提取。將從CC2530節(jié)點(diǎn)寄存器讀出的接收信號(hào)強(qiáng)度指示(received signal strength indication,RSSI)的原始數(shù)值,轉(zhuǎn)換為物理接收信號(hào)強(qiáng)度(dBm);⑤計(jì)算鏈路衰減值。將監(jiān)測時(shí)的鏈路值減去空環(huán)境時(shí)的鏈路基準(zhǔn)值,得到監(jiān)測時(shí)的鏈路衰減值。
主要考慮行人是否對鏈路有影響,提取出受行人影響的鏈路,舍棄不會(huì)因行人而產(chǎn)生陰影衰落效應(yīng)的鏈路。由圖5可知1到5號(hào)節(jié)點(diǎn)分別與6到18號(hào)節(jié)點(diǎn)組成有效鏈路,6到13號(hào)節(jié)點(diǎn)與14到18號(hào)節(jié)點(diǎn)組成有效鏈路,則有效鏈路總共有105條。
圖5 節(jié)點(diǎn)以及鏈路分布
分別采集了靜態(tài)實(shí)驗(yàn)和動(dòng)態(tài)實(shí)驗(yàn)的數(shù)據(jù)作為數(shù)據(jù)集。靜態(tài)實(shí)驗(yàn)先后有5名研究生參與,共采集包括1個(gè)人的場景600組數(shù)據(jù)、2個(gè)人場景540組數(shù)據(jù)、3個(gè)人場景1440組數(shù)據(jù)。動(dòng)態(tài)實(shí)驗(yàn)采集了人流量較少和人流量較大兩種情況各3個(gè)連續(xù)時(shí)間段的數(shù)據(jù),每段持續(xù)5 min。靜態(tài)實(shí)驗(yàn)數(shù)據(jù)用于模型訓(xùn)練和驗(yàn)證,動(dòng)態(tài)環(huán)境實(shí)驗(yàn)數(shù)據(jù)只用于模型算法驗(yàn)證。
(1)初級(jí)學(xué)習(xí)器調(diào)參優(yōu)化
在訓(xùn)練第一層的3個(gè)初級(jí)分類器時(shí),需要先通過訓(xùn)練設(shè)置最優(yōu)參數(shù)。為了評估分類性能,我們使用精度(Accuracy)性能度量,精度是指分類正確的樣本數(shù)占樣本總數(shù)的比例。公式如式(13)所示
(13)
核函數(shù)對于SVM非常重要,采用不同的核函數(shù)會(huì)對實(shí)驗(yàn)?zāi)P蛶聿煌男ЧN覀儗?種常見的核函數(shù)采用交叉驗(yàn)證法來尋找最優(yōu)核函數(shù)。表1顯示了不同核函數(shù)對應(yīng)模型的準(zhǔn)確率。
表1 不同核函數(shù)對模型準(zhǔn)確率影響
從表1可以看出,在4種常用的核函數(shù)中,線性核函數(shù)的準(zhǔn)確率最高,因此我們選擇線性核函數(shù)作為SVM的核函數(shù)對實(shí)驗(yàn)數(shù)據(jù)進(jìn)行分類。
GBDT模型有兩個(gè)重要參數(shù),一個(gè)是學(xué)習(xí)器的最大迭代次數(shù),最大迭代次數(shù)太小模型容易欠擬合,太大又會(huì)過擬合;另一個(gè)參數(shù)是步長,較小的步長意味著需要更多的迭代次數(shù)。兩個(gè)參數(shù)相互影響。表2為兩個(gè)參數(shù)不同取值時(shí)對應(yīng)的準(zhǔn)確率。
表2 不同參數(shù)對GBDT模型準(zhǔn)確率影響
從表2實(shí)驗(yàn)結(jié)果可以看出,當(dāng)步長取0.6、最大迭代次數(shù)取150時(shí)模型的準(zhǔn)確率最高,故將其選為最優(yōu)參數(shù)。
XGBoost有兩個(gè)重要參數(shù),第一個(gè)參數(shù)是樹的最大深度,為了防止出現(xiàn)過擬合,最大深度不能設(shè)置的太大。第二個(gè)參數(shù)為“gamma”,此參數(shù)指定了節(jié)點(diǎn)分裂所需的最小損失函數(shù)下降值,參數(shù)越大,模型越保守。這兩個(gè)參數(shù)都與模型建立有很重要的關(guān)系,使用交叉驗(yàn)證法進(jìn)行參數(shù)的選擇。表3為不同參數(shù)和對應(yīng)的準(zhǔn)確率。
表3 不同參數(shù)對XGBoost模型準(zhǔn)確率影響
從表3可以看出,當(dāng)最大深度取值為2和gamma=0.1時(shí)模型的準(zhǔn)確率最高,故將其選為最優(yōu)參數(shù)。
(2)集成學(xué)習(xí)模型性能評估
將3個(gè)初級(jí)分類器和Stacking集成學(xué)習(xí)器在實(shí)驗(yàn)數(shù)據(jù)集上5折交叉驗(yàn)證的精度進(jìn)行對比,結(jié)果如圖6所示。圖6的實(shí)驗(yàn)結(jié)果表明:集成學(xué)習(xí)模型方法相比于SVM、GBDT和XGBoost更穩(wěn)定。
圖6 模型精度對比
與基于機(jī)器視覺類的方法對比意義不大,因此,本文只選擇了與同樣基于RSS信號(hào)的文獻(xiàn)[10]提出的隱馬爾可夫模型方法對比,結(jié)果見表4??梢钥闯鋈诤夏P头椒ǖ木雀撸_(dá)到94.29%的準(zhǔn)確率,顯著高于文獻(xiàn)[10]中的平均準(zhǔn)確率75.63%。
表4 不同模型平均精度對比
ROC曲線是模型性能評價(jià)的常用方法,ROC曲線的面積越大代表著模型的性能越好。圖7給出了兩層集成學(xué)習(xí)分類器模型和獨(dú)立分類器的ROC曲線對比。從圖7可以看出,集成學(xué)習(xí)模型方法相較于其它3個(gè)獨(dú)立的分類器ROC面積更大,性能更優(yōu)。
圖7 模型ROC對比
以上實(shí)驗(yàn)結(jié)果表明:集成學(xué)習(xí)模型方法的平均精度和ROC面積值相較于其它3個(gè)單獨(dú)的分類器更高,即融合模型方法的性能要優(yōu)于單個(gè)的分類器和已有的基于RSS的方法。
本文提出了一種基于無線傳感網(wǎng)絡(luò)射頻信號(hào)和Stacking集成機(jī)器學(xué)習(xí)算法的行人流量監(jiān)測系統(tǒng)方法。該方法利用行人對射頻信號(hào)的陰影衰減效應(yīng),提取有效射頻鏈路的RSS的衰減值作為特征向量,采用“學(xué)習(xí)型”策略訓(xùn)練得到一個(gè)包括SVM、GBDT、XGBoost和邏輯回歸的兩層集成學(xué)習(xí)Stacking識(shí)別模型。實(shí)驗(yàn)結(jié)果表明,該方法可以達(dá)到94.29%的行人流量監(jiān)測精度,驗(yàn)證了本文所提出的人流量監(jiān)測方法的有效性。