顏佟佟, 魯征浩, 徐大誠
(蘇州大學 微納傳感技術研究中心,江蘇 蘇州 215006)
環境振動狀態的識別對于現場感知、偵查和信息研判顯得尤為重要。例如,在石油管線、公路圍欄和要地目標的監控中,快速識別出監測目標的振動類型(對石油管線、圍欄等的敲擊破壞)對于安全運行具有重要的意義。目前,大多數振動模式識別系統都采用加速度計作為檢測傳感器[1,2],但加速度計需要電源才能獲得相關數據,壓電能量采集器實現了振動能轉換為電能的自供電,并能獲取環境振動信息,如果能對信息識別出環境振動模式,便可以達到無源自感知和智能識別的目的。
Khalifa S等人[3]從壓電能量采集器輸出電壓中提取均值和標準差特征,再通過機器學習K近鄰法識別出了行人站立、行走、跑步等運動狀態。Ma D等人[4]從壓電能量采集器電壓信號中提取平均值、標準差等22個特征,采用支持向量機等算法識別步態引起的振動模式。Hassan M等人[5]從壓電能量采集器輸出的交流電壓中提取最大值、頻域最高幅值與所有幅值之和的比值等特征,采用決策樹分類器識別熱詞引起的振動類型。由此可見,目前基于壓電能量采集器的信息感知主要應用于行走等人類運動狀態識別,且多采用傳統的機器學習方法。對于許多重要目標如石油管線、防護圍欄等安全監測,特別是識別具有破壞行為(如人為搖晃、重物敲擊)的振動類型意義重大,而此類振動模式的識別鮮有文獻報道。
本文提出了一種環境振動狀態識別方法。通過壓電能量采集器獲取振動狀態信息,利用卷積神經網絡(convolutional neural network,CNN)算法處理壓電能量采集器輸出電壓信號,實現在能量采集器發電的同時,識別出敲擊或搖晃等振動模式。同時,設計了基于FPGA的驗證系統,通過算法運行完成實時識別的功能驗證。
振動閾值觸發壓電能量采集器結構如圖1(a),(b)所示。該能量采集器采用兩級振子結構,其中,外框耦合環境振動狀態,通過磁能耦合激勵內框發電諧振子產生諧振,進而產生電能和感知信息。當振動強度小于磁能耦合閾值時,兩級之間無法克服磁排斥力,只能在平衡位置小幅振動;當振動強度大于閾值時,磁能耦合克服磁屏障力,進而觸發發電振子諧振發電。

圖1 振動閾值觸發壓電能量采集器結構
在振動閾值觸發壓電能量采集器發電的同時,其輸出信號可以用于振動狀態識別。當振動強度低于閾值時,認為沒有振動事件發生;當振動強度高于閾值時,采集器觸發且不同振動模式(敲擊、搖晃)下輸出電壓模式不同,因此可以通過電壓信號識別不同的振動模式。
傳統機器學習方法需要人為提取特征,深度學習是一種端到端的方法,無需額外的特征提取過程,通過網絡自身學習分類任務中最具判別力的有用特征[6]。CNN是深度學習算法中的基本結構之一,一般包含卷積層、池化層和全連接層。
1)卷積層
卷積層利用多個卷積核對輸入數據進行卷積處理提取特征,輸入輸出均稱為特征圖。相比于全連接層,卷積層具有網絡局部連接和卷積核參數共享的特點,能夠在參數較少的情況下提取特征。卷積層可以定義為
ai=f(ai-1*Wi+bi)
(1)
式中ai-1為第i層的輸入特征圖,ai為第i層的輸出,Wi為第i層的卷積核,bi為卷積核的偏置,*為卷積操作,f為激活函數,通常選取ReLU函數,進行非線性變換。其運算式為
f(x)=max(0,x)
(2)
2)池化層
池化層作用是對輸入特征圖進行降采樣,在實現數據降維的同時進一步提取主要特征信息。常用池化操作為最大池化和平均池化。池化層可以定義為
ai=g(down(ai-1))
(3)
式中down為下采樣函數,g為池化函數。
3)全連接層
池化層得到的特征圖需要轉換成1維向量,再輸入全連接層實現分類。全連接層可以定義為
ai=σ(Wiai-1+bi)
(4)
式中Wi和bi分別為第i層的權重和偏置,σ為激活函數。
為了獲取訓練數據,將能量采集器放置在激振器(JZK—10)上,利用激振器模擬搖晃和敲擊兩種振動模式,其中,搖晃理想化為正弦振動,敲擊近似為半正弦脈沖振動,通過存儲記錄儀(MR8880—21)記錄能量采集器的輸出電壓,采樣率為1 kHz。在不同頻率(1~7 Hz)和不同振動強度(2~6.5 g)下分別獲取搖晃和敲擊兩種振動模式下能量采集器的輸出,記錄為兩個長時間序列。由于能量采集器自身具有閾值觸發特點,因此當能量采集器觸發時,再判斷振動模式。能量采集器未觸發時,輸出電壓不會超過0.5 V。因此對于采集到的兩個長時間序列,分別從第一個數據開始遍歷,當該點電壓大于0.5 V時,以該點為起點取連續的500個數據作為一個樣本并打上標簽(搖晃為0,敲擊為1),如圖2所示。最終獲得7 000個樣本,包含3 500個搖晃樣本和3 500個敲擊樣本。

圖2 樣本構造示意
Lecun Y等人[7]指出一維CNN適用于序列數據,二維CNN適用于圖像數據,三維CNN適用于視頻數據。能量采集器輸出電壓信號為一維數據,因此卷積核采用一維結構。在傳統CNN結構的基礎上針對參數量和計算量做改進,降低模型對FPGA硬件實現的資源需求。由于能量采集器輸出電壓數據變化較為緩慢,因此,模型的第一層為最大池化層S1,池化窗口寬度為5,在提取特征的同時減少后續運算量。第二層和第三層分別為卷積層C1,C2,用來提取特征。借鑒輕量化網絡模型SqueezeNet[8]中用1×1卷積核代替3×3卷積核的思路,并結合一維卷積特點,卷積層C2濾波器長度設為1,有效降低了參數量。第四層為全局最大池化層S2,降低進入全連接層的數據維度。第五層全連接層實現最終的分類,為了防止過擬合全局最大池化層后使用Dropout[9]方法。最終模型結構如圖3所示。

圖3 CNN模型結構
構建的CNN模型進行算法驗證的軟件環境為:Python語言和Tensorflow深度學習框架。模型的目標函數為交叉熵損失函數,優化算法為Adam[10]。模型的評價指標為準確率,即模型正確分類的樣本個數占總個數的比例。對于7 000個樣本數據,通過分層抽樣取出4 900個樣本用于訓練,2 100個樣本用于測試。神經網絡的參數一般根據人為經驗設定,往往難以確定。通過不同超參數模型的測試準確率對比,尋找模型的相對最優結果。表1所示為模型在不同超參數下的測試準確率,綜合對比后選取實驗3作為CNN的超參數配置。

表1 不同超參數下測試集準確率
將構建的CNN模型與機器學習算法邏輯回歸(logistic regression,LR)、K最近鄰(K-nearest neighbor,KNN)法、支持向量機(support vector machine,SVM)進行對比。傳統機器學習算法需要人為提取特征,本文從時域和頻域共提取8個常用特征,時域特征為最大值、最小值、均值、標準差、均方根;頻域特征為幅度譜最大值、0~100 Hz頻段幅值的和、400~500 Hz頻段幅值的和。表2所示為幾種算法識別準確率對比,在人為提取的特征下KNN法和SVM準確率均達到了89 %左右,相比之下CNN模型識別準確率最高,達到96.7 %。

表2 不同算法準確率
通過FPGA搭建了振動模式實時識別系統,系統框圖如圖4所示。其中FPGA芯片為Zynq 7020,AD芯片為AD7606。系統工作時首先通過FPGA控制AD以1 kHz采樣率采集一個數,如果該數大于0.5,則AD連續采集500個數據送入FPGA運行CNN算法輸出識別結果;否則AD繼續采集下一個數。系統測試現場如圖5所示。

圖4 識別系統框圖

圖5 系統測試現場
通過激振器模擬5 Hz敲擊和搖晃,圖6所示為FPGA的輸出。當沒有振動事件發生時,輸出電壓接近0 V,FPGA輸出識別結果00;當發生敲擊事件時,能量采集器觸發且輸出電壓經分壓后峰值達到2 V左右,FPGA在0.6 s內輸出01;當發生搖晃事件時,輸出電壓經分壓后峰值同樣達到2 V左右,FPGA在0.6 s內輸出10。對1~7 Hz的敲擊和搖晃分別進行多次測試,在35次搖晃測試中FPGA全部識別成功,在35次敲擊測試中FPGA識別錯誤3次,測試準確率達到95.7 %。

圖6 識別結果
基于振動閾值觸發壓電能量采集器,采用CNN算法,通過FPGA驗證系統,實現了搖晃和敲擊兩種振動模式的識別,實際測試準確率可達96.7 %。實驗結果驗證了識別方法的有效性和正確性,使得壓電能量采集器在發電的同時實現了信息感知以及狀態識別的智能自感知目的。