朱 偉 張旭照 馬東林 李 澄
中郵建技術有限公司
傳統(tǒng)的人體行為動作識別主要是采用能夠進行錄像或者照相的設備,采集人的視頻和照片,利用圖像處理的方法進行動作識別。隨著技術手段的不斷發(fā)展,人體行為識別已不再局限于計算機視覺領域,而是擴展到了其他技術領域中。比如,利用慣性傳感器進行識別,或者利用WiFi、手機等常見的無線設備,采集信號強度(Received Signal Strength Indicator,RSSI)數(shù)據(jù),進而進行人體行為識別。這些方法各有優(yōu)缺點。傳統(tǒng)方法研究比較成熟,如基于視頻或圖像的時間差分法和背景減除法的人體行為動作識別,已經(jīng)能做到非常高的識別精確度。但是錄像設備并不能隨處普及,所以有使用空間范圍的限制。新興的方法如基于信道狀態(tài)信息(Channel State Information,CSI)的行為識別方法,雖精確度還不及傳統(tǒng)方法,但是所使用的設備簡單、成本低廉。而基于傳感器的行為識別方法,利用手機等設備里自帶的傳感器就可以進行識別,較為方便。因此,在不同環(huán)境下,可以選擇不同的識別方法。
本文提出的系統(tǒng)設計基于RSSI的人體動作識別,具有較廣的應用前景。當前的人居環(huán)境中存在大量無線設備,可采集到足夠的數(shù)據(jù),這可以解決行為識別需要專用設備的問題。模型具有良好的可遷移前景。
ZigBee,也稱紫蜂,是一種低速短距離傳輸?shù)臒o線網(wǎng)上協(xié)議,底層是采用IEEE 802.15.4標準規(guī)范的媒體訪問層與物理層,是TI公司推出的一款短距離、低速率無線通信協(xié)議。ZigBee、藍牙和IEEE 802.11b都是工作在2.4GHz頻段上的無線協(xié)議。但是,這三者又有各自的不同點。由于當前的物聯(lián)網(wǎng)技術快速發(fā)展,藍牙和802.11b并不能滿足所有的應用場景,ZigBee被推出來主要是用來滿足對可靠性和低功耗等有強烈要求的應用場景。
現(xiàn)代計算機網(wǎng)絡架構中,一般采用分層的理念設計網(wǎng)絡結構,不同的層負責不同的功能,數(shù)據(jù)只能在相鄰的層之間流動。每一層負責接收相鄰層數(shù)據(jù),處理完成后,封裝打包給相鄰的另外一層,例如國際標準化組織提出的開放式通信系統(tǒng)互聯(lián)參考模型(Open System Interconnection,OSI),ZigBee參考了此模型,并且結合無線網(wǎng)絡的特點,采用分層結構實現(xiàn)ZigBee協(xié)議。
ZigBee CC2530是用于2.4-GHz IEEE 802.15.4、ZigBee和RF4CE應用的一個真正的片上系統(tǒng)(SoC)解決方案,它能夠以非常低的總材料成本建立強大的網(wǎng)絡節(jié)點。
ZigBee CC2530在一個網(wǎng)絡中有三種設備:協(xié)調器、路由器和終端節(jié)點。根據(jù)ZigBee的協(xié)議棧,無線網(wǎng)絡支持三種網(wǎng)絡結構,分別是星型拓撲結構、樹形拓撲結構和網(wǎng)狀拓撲結構。這三種結構的統(tǒng)一特點就是整個網(wǎng)絡中只能存在一個協(xié)調器,可以存在多個路由器和終端節(jié)點。但是終端節(jié)點互相之間不能通信,只能通過他們的父節(jié)點進行通信。網(wǎng)狀結構是最靈活的結構,在需要的情況下,路由器之間也可以進行通信。而星型結構則最不可靠,如果協(xié)調器失靈,那么整個無線網(wǎng)絡都不能通信。
為建立從RSSI數(shù)據(jù)識別出不同人體動作的模型,本系統(tǒng)設計采用了當前具有潛在應用價值的卷積神經(jīng)網(wǎng)絡。
卷積神經(jīng)網(wǎng)絡是一種特殊的深層神經(jīng)網(wǎng)絡模型。它不同于以往的神經(jīng)網(wǎng)絡模型,原因是在一些隱藏層上,它的神經(jīng)元的連接是非全連接的,即有一部分是斷開的,而且還會出現(xiàn)在某些層中,同一層的某些神經(jīng)元的權值是共享的。這種結構是更進一步仿造生物大腦的神經(jīng)結構,在大量的神經(jīng)元連接的情況下降低了運算量,降低模型的復雜程度,減少權值的數(shù)量。在很多的分類和回歸實驗中取得了非常好的實驗結果。
卷積神經(jīng)網(wǎng)絡通常由輸入層、卷積層、池化層、全連接層、輸出層等層級疊加組成。
輸入層:卷積神經(jīng)網(wǎng)絡本身對輸入層的輸入數(shù)據(jù)并沒有太大限制,只是,輸入不同結構的數(shù)據(jù)就需要改變一些參數(shù)。一維向量或者二維矩陣的形式可以作為輸入進入一維卷積神經(jīng)網(wǎng)絡。二維卷積神經(jīng)網(wǎng)絡輸入層的輸入可以是二維矩陣或者三維矩陣。
卷積層:卷積層主要用來對輸入層輸入的數(shù)據(jù)進行特征提取。這一層一般包含卷積核、卷積層參數(shù)和激勵函數(shù)。卷積層參數(shù)包括三個量,分別是卷積核大小、步長和填充。常見的激勵函數(shù)有Sigmoid函數(shù)、雙曲正切函數(shù)、ReLU函數(shù)等。
池化層:池化層經(jīng)常是用來縮減模型的大小,提高計算速度。池化層將單個點的值替換成為池化區(qū)域的特征圖統(tǒng)計量。經(jīng)過池化計算后,輸出的特征矩陣可以防止過擬合。
全連接層:在這一層,每個神經(jīng)元都會和前一層產生全連接,通過這一層之后,將會用到所有的局部特征,把之前的局部特征通過權值矩陣再一次合成為一張矩陣,這樣就得到了一個輸出結果。所以,全連接層會起到分類器的作用。
在開放環(huán)境中,無線信號受到物體遮擋等因素的影響,會產生反射、折射、吸收等現(xiàn)象。這些現(xiàn)象對無線信號的影響之一是信號強度的變化。信號強度的變化攜帶了信號鏈路上的物體遮擋信息,通過測量可以獲知被遮擋的無線鏈路。因此,設想通過研究多條無線信號被遮擋而產生的信號強度上的衰落來進行人體行為識別研究。設想在一個空間里,有n個ZigBee CC2530終端,終端之間能夠兩兩互相通信,那么在這個空間里就形成了n×(n-1)/2條無線鏈路。被測試者在這個多條鏈路組成的空間里做出不同的行為動作,會遮擋不同的無線鏈路,理論上我們根據(jù)被遮擋的鏈路的不同,能夠分辨出不同的行為動作。
2.2.1 實驗場景
在實際實驗中,采用一個立體空間結構,如圖1所示。
圖1 實驗場景示意圖
實驗采用八個節(jié)點組成的空間結構,同時需要確定器件的相對布置距離等等。因此,根據(jù)人的平均身高以及所需要測量的動作的變化范圍和幅度,將此實驗設計為雙層1.1米和1.3米的高度,即低一層四個節(jié)點距離地面1.1米,高一層節(jié)點距離地面1.3米。每兩個節(jié)點安裝于同一個支架,共使用4個支架。事先測量好每個支架上兩個高度不同的節(jié)點的位置,進行安裝固定。
在這個雙層結構中,從上一層以逆時針編號為1—4號,下一層以逆時針編號為5—8號。上下層依次對應。同一支架節(jié)點與同列另一支架節(jié)點相距3.6米,構成一個正方形區(qū)域,圖2是實驗俯視平面圖。
圖2 實驗場地平面圖
實驗時,被測試者站在距離實驗區(qū)域邊緣1.8米的地方,此點為整個區(qū)域的中心點,可以最大限度使各條無線鏈路能夠通過不同行為動作的被測試者。為了在建立模型時不同動作下采集的數(shù)據(jù)可以形成差異化對比,在這個無線鏈路區(qū)域里,首先測5分鐘無人情況的信號強度情況并采集數(shù)據(jù),然后依次測量抱頭、鞠躬、平伸、平推、直立這5個動作時無線鏈路的信號強度數(shù)據(jù),每個動作分別測量5分鐘。
2.2.2 無線網(wǎng)絡的工作流程
在本實驗中,采用ZigBee CC2530的廣播方式進行組網(wǎng)。即每個終端節(jié)點都可以發(fā)送數(shù)據(jù),被網(wǎng)絡中其他所有節(jié)點接收到信息,其他節(jié)點負責測量建立的無線鏈路的RSSI值,并且記錄。具體方法如下:使用8個終端節(jié)點按照確定好的距離布置,當網(wǎng)絡啟動之后,由網(wǎng)絡中一個節(jié)點發(fā)出信息,網(wǎng)絡中其他7個節(jié)點收到此節(jié)點廣播的信息并與之建立連接,從交換的報文中讀取無線鏈路的RSSI值,記錄在內部存儲中,并在本節(jié)點發(fā)送信息時,把RSSI值寫入對應節(jié)點的數(shù)據(jù)報文中。每個節(jié)點采用不同的發(fā)射延時,保證節(jié)點發(fā)送信息不沖突。當節(jié)點的發(fā)射延時到期,便向網(wǎng)絡廣播一條記錄本節(jié)點ID號和接收到的各條鏈路的RSSI值的數(shù)據(jù)報文,經(jīng)過一段時間的循環(huán)之后,每條節(jié)點發(fā)送的信息,都包括自己與其他7個終端節(jié)點的RSSI值。協(xié)調器即匯聚節(jié)點,在網(wǎng)絡中同樣接收每個節(jié)點廣播的信息,并且把信息傳送給電腦,實現(xiàn)數(shù)據(jù)的收集。
除了所有終端節(jié)點在網(wǎng)絡中廣播信息,并且負責測量自己對其他所有節(jié)點的RSSI值之外,還有一個匯聚節(jié)點處于網(wǎng)絡中。匯聚節(jié)點不參與信息的廣播以及節(jié)點RSSI值的測量,它只負責把所有終端節(jié)點的每條信息接收并且通過串口傳送給電腦。圖3是無線傳感器物聯(lián)網(wǎng)絡中終端節(jié)點的工作流程。
圖3 終端節(jié)點工作流程圖
根據(jù)實驗流程,被測試者在限定空間里做出五個不同的動作,每個動作分別維持一段時間不作變化,不同動作對不同的終端節(jié)點之間產生的無線鏈路產生遮擋。被遮擋鏈路的RSSI數(shù)據(jù)會相應減小。協(xié)調器接收這些數(shù)據(jù),并且匯聚轉發(fā)到電腦上,數(shù)據(jù)最終形成適合訓練卷積神經(jīng)網(wǎng)絡的數(shù)據(jù)集。
2.3.1 數(shù)據(jù)拼接
由硬件平臺發(fā)送過來未經(jīng)整理的數(shù)據(jù)是亂序的,并且存在部分錯誤,需要進行數(shù)據(jù)的清洗和拼接,以適合神經(jīng)網(wǎng)絡訓練。根據(jù)模型的需要,把這個數(shù)據(jù)整理成多個8×8大小的矩陣,每個矩陣中行號和列號都是節(jié)點的ID值。盡管硬件中每個終端節(jié)點發(fā)送數(shù)據(jù)為不定時,但是整個接收包里,8個節(jié)點的數(shù)據(jù)存在時間順序。所以每次按時間序列滾動依次抽取1-8號節(jié)點的對應數(shù)據(jù),組成一個完整的8×8數(shù)據(jù)矩陣。
拼接矩陣過后,可以得到一個三維矩陣數(shù)據(jù)集,數(shù)據(jù)集中的單層矩陣大小為8×8,記錄了當前節(jié)點和其他七個節(jié)點之間的信號強度數(shù)據(jù)。三維矩陣的層數(shù)代表了形成的8×8信號強度矩陣的個數(shù)。每個矩陣的基本形式如圖4所示。
圖4 單個信號強度矩陣
2.3.2 數(shù)據(jù)預處理
由于在之前的八頂點立方體結構中,被測試者處于幾個體對角線信號鏈路和頂面、地面的面對角線信號鏈路上,立方體的邊和四個側面上的信號鏈路并不會被人體行為動作遮擋,根據(jù)卷積神經(jīng)網(wǎng)絡的降噪要求,將這些不影響輸出結果的無線鏈路對應的RSSI值剔除置零,減小其對卷積神經(jīng)網(wǎng)絡模型的噪聲輸出。
實驗所采集的RSSI數(shù)據(jù)是以單個節(jié)點對應網(wǎng)絡中其他節(jié)點的信號強度的形式存在,在經(jīng)過處理之后形成了8個節(jié)點之間的互相記錄RSSI的二維矩陣,類似于階梯化的灰度圖像的記錄形式,所以本實驗仿照圖像處理采用卷積神經(jīng)網(wǎng)絡來進行人體行為動作分類。在把用RSSI二維矩陣數(shù)據(jù)堆疊成的三維矩陣的數(shù)據(jù)集輸入到神經(jīng)網(wǎng)絡之前,對矩陣進行標簽編碼,用以在輸出中形成多分類結果。實驗中采用one-hot編碼,例如平伸動作記作動作1,那么RSSI矩陣對應的其one-hot編碼形式應該為[1,0,0,0,0,0],即動作標簽對應的數(shù)字在這個編碼的行向量中對應下標的元素值為1。
然后根據(jù)神經(jīng)網(wǎng)絡模型的一般結構,設置其中各層的參數(shù),添加需要的層,連接起前后各層,建立神經(jīng)網(wǎng)絡模型,其步驟和結構如下:(1)添加輸入層;(2)添加一個Dense全連接層,連接全部輸入的相關數(shù)據(jù);(3)添加一個Activation激活層,此激活層使用ReLU作為激活函數(shù);(4)添加一個Dropout遺忘層,此層遺忘概率為0.2;(5)添加一個Dense全連接層,定義神經(jīng)元數(shù)量;(6)添加一個Activation激活層,激活函數(shù)使用ReLU;(7)添加一個Dropout遺忘層,此層遺忘概率為0.2;(8)添加一個Dense分類層,使用softmax作為激活函數(shù)。
模型建立之后,把數(shù)據(jù)集輸入模型,一共有1770組信號強度矩陣。選取其中的1540組矩陣作為訓練集,230組矩陣作為測試集,分別進行神經(jīng)網(wǎng)絡的訓練和驗證。
1540組訓練集全部打亂順序輸入。打亂重排可以降低原本數(shù)據(jù)的規(guī)律性,提高結果的準確度,防止過擬合。另外230組測試集矩陣同樣也全部打亂,用來驗證模型的準確率。在此神經(jīng)網(wǎng)絡中每次前向過程和反向過程時處理的訓練樣本數(shù)為128。共訓練1500次,輸出結果如圖5所示。
圖5 模型的準確率和損失函數(shù)
如圖(a)和圖(b)中,train acc是訓練集的準確率,為上升曲線,train loss是訓練集的損失值,為下降曲線。val acc是驗證集的準確率,為上升曲線,val loss是驗證集的損失率,為下降曲線。訓練超過1000次以后,模型的準確率上升速度變慢,并且損失降低也開始變慢。訓練集和測試集的準確度最終在70.21%左右。這代表這個神經(jīng)網(wǎng)絡模型對五個不同的行為動作和一個無人狀態(tài)識別率在70.21%左右。
本實驗在參考國內外文獻的基礎上,根據(jù)他人利用WiFi、紅外等傳感器設計的網(wǎng)絡,確定了本實驗中的立體八頂點空間結構,最大限度保證了有足夠多的無線鏈路通過在區(qū)域內的人體,從而提高不同行為動作的區(qū)分度。其次利用ZigBee CC2530搭建一個RSSI數(shù)據(jù)采集物聯(lián)網(wǎng)絡。最后是建立一個卷積神經(jīng)網(wǎng)絡模型進行分類。通過多次測試調整了卷積神經(jīng)網(wǎng)絡各層的參數(shù),最終使此模型對人體行為動作的識別準確率達到70.21%左右。獲得了較為良好的效果。
本實驗采集的是RSSI數(shù)據(jù),而現(xiàn)實里的無線終端都可以測量其RSSI數(shù)據(jù),只要周圍有安裝足夠的終端設備,那么就能低成本獲得大量RSSI數(shù)據(jù)用于行為識別。另外,由于現(xiàn)實中的各類無線設備大概率采用不同通信協(xié)議,所以可以聯(lián)合使用多種不同通信協(xié)議的無線設備采集數(shù)據(jù),并且使用更復雜的深度學習算法來提高結果的準確性。