黃旭安 王新穎 林振源 胡磊磊 劉嵐
(常州大學(xué)環(huán)境與安全工程學(xué)院 江蘇常州 213164)
閥門作用是控制管道內(nèi)流體的流動,保障管路設(shè)備的正常運行。雖然閥門泄漏事故只占管道泄漏事故的8%~15%,但是經(jīng)閥門泄漏的流量會占到總泄漏流量的50%。因此,在不停止閥門運行的前提下對閥門故障程度進行有效的判斷,有利于減輕為檢測泄漏故障所耗費的人力、物力、財力,提高整體工作效率,避免重大安全事故的發(fā)生。
目前國內(nèi)外有多種方法使用神經(jīng)網(wǎng)絡(luò)來診斷閥門的故障。如利用人工神經(jīng)網(wǎng)絡(luò)分析核電站的止回閥位置并進行診斷;采取一種簡化模型計算數(shù)據(jù)與故障模型之間差異程度,識別出閥門的故障種類。以上幾種管道閥門泄漏模式識別方法與傳統(tǒng)人工檢測方法相比,故障識別準確率得到提升。但在實際應(yīng)用過程中,針對閘閥內(nèi)漏沒有較好的診斷方法,人工神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)收斂速度較慢、模型搭建復(fù)雜、識別準確率與深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)相比略有不足。
為解決上述問題,通過搭建閘閥故障模擬平臺,采集閘閥在不同工況下的聲發(fā)射數(shù)據(jù),在TensorFlow的基礎(chǔ)上構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)模型,并在此基礎(chǔ)上使用Python語言建立閘閥故障診斷模型,并且通過設(shè)置不同的隱藏層數(shù)量比較不同模型的準確率,驗證基于TensorFlow構(gòu)建的閘閥故障診斷模型的優(yōu)越性能。
深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)(DLNN)是機器學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),它所具有的隱含層數(shù)量一般在2個以上,它可以快速地提取參數(shù)特征并轉(zhuǎn)換其中的參數(shù)特征值,從而充分開發(fā)了機器自動學(xué)習(xí)的能力以及數(shù)據(jù)的本質(zhì)屬性,提高故障辨識的準確性[1]。
DLNN模型包括自動編碼器(AE)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)、深度置信網(wǎng)絡(luò)(DBN)、限制波爾茲曼機 (RBM)、稀疏編碼(SC) 等[2],由于卷積神經(jīng)網(wǎng)絡(luò)特征提取能力極強,所以本文應(yīng)用TensorFlow搭建卷積神經(jīng)網(wǎng)絡(luò)來辨識燃氣管道閘閥故障,提高閘閥故障的辨識能力。
由輸入層(input)、卷積層(C)、降采樣層(S)、全連接層(F)及輸出層(output )共同構(gòu)成了CNN。CNN的一個實質(zhì)意義就是對信息數(shù)據(jù)進行卷積運算,卷積的運算主要是指將信息數(shù)據(jù)從原始數(shù)據(jù)上通過卷積核方法進行掃描,并對特定位置相關(guān)的元素數(shù)據(jù)進行一個新的相關(guān)運算,最終通過這個運算得到的結(jié)果形成了一個新矩陣。
卷積神經(jīng)網(wǎng)絡(luò)分類能力的基礎(chǔ)是前向傳播及后向傳播的訓(xùn)練過程。前向傳播是把原始數(shù)據(jù)輸入到構(gòu)建好的網(wǎng)絡(luò)中,經(jīng)過運算得到結(jié)果;后向傳播是指先得到網(wǎng)絡(luò)輸出與理論輸出的值,再比較它們的誤差,再把誤差反向輸入到輸入層,得到層級之間的誤差,最后通過調(diào)整網(wǎng)絡(luò)參數(shù)使網(wǎng)絡(luò)在指定的收斂條件處收斂[3]。
卷積神經(jīng)網(wǎng)絡(luò)模型運算示意見圖1。假定x為輸入的數(shù)據(jù)樣本,包含9個元素,h為卷積核數(shù),M×1為每個卷積核大小,則卷積核輸出特征大小為(10-M)×1,輸入層與卷積層連接數(shù)為(10-M)×(M+1)×h。設(shè)ai,k表示第k種卷積核輸出的第i個元素;Gi,k表示第k種卷積核的第j個元素;bk表示第k種卷積核的偏置;f表示卷積層激活函數(shù),則卷積層第k種卷積核輸出為:
圖1 卷積神經(jīng)網(wǎng)絡(luò)模型運算示意
(1)
CNN采樣層采用均值采樣。假如采樣寬度為p×1,則每個特征對應(yīng)采樣輸出大小為(10-M)/p×1,則第k個卷積核對應(yīng)采樣層S的輸出結(jié)果為:
(2)
TensorFlow是一套適用于人工智能機器學(xué)習(xí)的開源工具庫,可以兼容基于CPU、GPU或TPU 架構(gòu)的服務(wù)器,它由谷歌開發(fā),可以在任意數(shù)量的CPU和 GPU的服務(wù)器、PC 和移動設(shè)備上部署深度神經(jīng)網(wǎng)絡(luò)計算[4-5]。
TensorFlow的數(shù)值計算主要通過數(shù)據(jù)流圖,數(shù)據(jù)流圖是一個有向圖,使用線和節(jié)點來表示數(shù)學(xué)運算。TensorFlow程序設(shè)計模式的核心是建立并執(zhí)行計算圖,見圖2。
圖2 TensorFlow程序計算示意
根據(jù)聲發(fā)射系統(tǒng)收集數(shù)據(jù)和模型分類的特點,選取閘閥在不同工作狀態(tài)下的數(shù)據(jù)各1 500組,并且將幅度、振鈴計數(shù)、持續(xù)時間、絕對強度、上升時間、有效值電壓、到達時間、信號能量、能量計數(shù)等9個參數(shù)作為閘閥運行狀態(tài)的特征向量。為了數(shù)據(jù)誤差盡量減少,對數(shù)據(jù)進行如式(3)所示的標準化處理:
(3)
將選取的6 000組數(shù)據(jù)隨機劃分為80%的訓(xùn)練集和20%的測試集,在CNN模型中進一步將訓(xùn)練集中的20%作為驗證集。
針對燃氣管道閘閥微小泄漏量難以識別的特點,把故障診斷結(jié)果分為4類:無故障、輕微泄漏、中度泄漏、重度泄漏,并給出相應(yīng)的維修措施,見表1所示。
表1 試驗工況描述
神經(jīng)網(wǎng)絡(luò)模型的學(xué)習(xí)速度取決于神經(jīng)網(wǎng)絡(luò)中的層次。神經(jīng)網(wǎng)絡(luò)的層數(shù)太多可能會導(dǎo)致神經(jīng)網(wǎng)絡(luò)在機器學(xué)習(xí)所花費的時間增長;網(wǎng)絡(luò)層數(shù)太少則數(shù)據(jù)處理不完善,故障識別的正確性大大降低。需要處理燃氣管道閘閥故障特征參數(shù),最終得出4種結(jié)果,信號采集的都是一維結(jié)構(gòu)簡單的數(shù)據(jù),所以采用如圖3所示的卷積神經(jīng)網(wǎng)絡(luò)模型。
圖3 卷積神經(jīng)網(wǎng)絡(luò)模型示意
為了驗證上述方法的有效性,設(shè)計了實驗室閥門泄漏聲發(fā)射檢測系統(tǒng)。閥門內(nèi)部泄漏是指即使將閥門絲杠旋緊到位,介質(zhì)還可以通過微小縫隙。因此,對閥門內(nèi)部泄漏的模擬實質(zhì)就是對閥芯與閥體之間縫隙的模擬。
根據(jù)閘閥開啟的開度來模擬閥門泄露孔的大小。閥門前后管道通常有一定的壓差,所以在被測閘閥前的管道進口處安裝一臺空氣壓縮機來提供管道內(nèi)部的壓力。為實現(xiàn)對不同泄漏情況的模擬,被測閥門前設(shè)置調(diào)節(jié)閥調(diào)節(jié)被測閥門的進口壓力。
實驗數(shù)據(jù)采集過程如下:閘閥故障模擬實驗?zāi)P椭饕ü艿垒斶\、數(shù)據(jù)采集和儀表儀器3個單元,管道輸運單元包括閥門、空氣壓縮機和輸運管道。其中,無縫鋼管用來模擬燃氣管道,數(shù)據(jù)采集單元由工業(yè)計算機、聲發(fā)射卡、濾波范圍為20~120 kHz 的聲發(fā)射前置放大器、聲發(fā)射傳感器以及對應(yīng)處理軟件組成。在閘閥上下游兩側(cè)放置2個聲發(fā)射傳感器進行數(shù)據(jù)的采集。傳感器布置如圖4所示。儀器儀表單元主要由壓力表、轉(zhuǎn)子流量計、溫度傳感器組成。
圖4 試驗裝置示意
聲發(fā)射傳感器分別采集一定時間內(nèi)的閘閥運行正常、輕微泄漏、中度泄漏、重度泄漏的信號數(shù)據(jù),將這些信號數(shù)據(jù)作為輸入模型的原始數(shù)據(jù)特征。由空氣壓縮機壓縮空氣為管道提供進口壓力,通過調(diào)節(jié)被測閥門進口壓力為0.4 MPa,調(diào)節(jié)閘閥開度為全閉、1個開度、2個開度、3個開度,完成聲發(fā)射數(shù)據(jù)的采集。選取無故障、輕微、中度、重度泄漏樣本數(shù)據(jù)各1 500組,將80%樣本作為訓(xùn)練數(shù)據(jù)集,將20%樣本作為模擬驗證集。因此選取4 800組作為訓(xùn)練集、1 200組作為測試集。部分實驗的原始數(shù)據(jù)見表2所示。
表2 閘閥內(nèi)部泄漏的部分數(shù)據(jù)
3.2.1隱藏層神經(jīng)元數(shù)量為300且隱藏層為一層下的訓(xùn)練結(jié)果
實驗環(huán)境為基于TensorFlow的Anaconda虛擬環(huán)境,使用Python語言進行程序設(shè)計,使用TensorFlow自行設(shè)計張量運算,選取8個卷積核,大小為 2×1,采樣寬度為2×1。設(shè)置參數(shù)Verbose=2用來顯示訓(xùn)練過程,Validation_split=0.2是指自動將80%樣本作為訓(xùn)練數(shù)據(jù)集,20%樣本作為模擬驗證集;Batch_size=50即每一批次處理 50項數(shù)據(jù),Epoch=10表示程序每次執(zhí)行10個訓(xùn)練周期。從模型訓(xùn)練過程可以看出,訓(xùn)練集準確率最高可以達到0.794,驗證集準確率最高達到0.793,每個世代的訓(xùn)練時間是3 s。具體訓(xùn)練過程見表3所示。
表3 一層隱藏層模塊的訓(xùn)練過程
續(xù)表3
對閥門泄漏模型訓(xùn)練過程中,訓(xùn)練數(shù)據(jù)測試數(shù)據(jù)的計算誤差和準確率用 Matplotlib模塊進行可視化后,得到準確率曲線,如圖5所示。
圖5 模型準確率變化曲線
圖5為模型準確率變化的曲線,由曲線可以看到模型在第4世代時候,訓(xùn)練集和驗證集準確率差距越來越小,最后十分接近0.79,并且穩(wěn)定在0.79。這說明隱藏層在一層的情況下,模型準確率為0.79,此時模型準確率不能進一步提高,需要改進模型結(jié)構(gòu),再進行訓(xùn)練。
3.2.2隱藏層神經(jīng)元數(shù)量為300且隱藏層為兩層下的訓(xùn)練結(jié)果
增加一層神經(jīng)元個數(shù)同為300的隱藏層,提高模型運算能力,得到如下的訓(xùn)練過程,見表4所示。
表4 兩層隱藏層模塊的訓(xùn)練過程
從模型的訓(xùn)練過程可以看出,訓(xùn)練集所能達到的準確率最高為0.948,驗證集能達到的準確率最高為0.952,每個世代的訓(xùn)練時間集中在21 s,比只有一層隱藏層的訓(xùn)練時間提高了6倍。和之前的模型相比,隱藏層的增加提高了訓(xùn)練準確率,不過同時也提高了模型所需花費的訓(xùn)練時間。
圖6為訓(xùn)練集和驗證組模型之間準確率變化曲線,可以清楚地觀察出模型在第一個世代6之后訓(xùn)練集和第二個驗證組模型的準確率都趨于平穩(wěn),兩者之間的差異并沒有因為迭代次數(shù)增多而變小,準確率也沒有明顯得到改善。說明了世代數(shù)對驗證集準確率變化程度的影響范圍并不是很廣,與之前一層隱藏層準確率變化曲線相比,世代數(shù)有了一定的提高。
圖6 訓(xùn)練集和驗證組模型之間準確率變化曲線
3.2.3隱藏層神經(jīng)元數(shù)量為300且隱藏層為三層下的訓(xùn)練結(jié)果
在兩層隱藏層的基礎(chǔ)上再增加一層神經(jīng)元個數(shù)為300的隱藏層,然后再輸出結(jié)果,得到如下的訓(xùn)練過程,見表5所示。
表5 三層隱藏層模塊的訓(xùn)練過程
從模型的訓(xùn)練過程可以看出,訓(xùn)練集所能達到的準確率最高為0.987,驗證集能達到的準確率最高為0.991,每個世代的訓(xùn)練時間集中在191 s,比兩層隱藏層的訓(xùn)練時間提高了8倍。和之前的模型相比,隱藏層的增加只提高了不到4%訓(xùn)練準確率,但模型所需花費的訓(xùn)練時間卻足足多了8倍。
圖7為三層隱藏層模型的準確率變化曲線,可以觀察到模型在世代4之后訓(xùn)練集和驗證集的準確率趨于平穩(wěn),兩者之間差距隨迭代次數(shù)的增多而變化不大,準確率相比兩層隱藏層模型的準確率有所提高。這說明隱藏層的增加可以提升模型的準確率,但要以訓(xùn)練時間的大幅增加作為代價。
圖7 三層隱藏層模型的準確率變化曲線
綜上所述,在閘閥故障診斷模型的訓(xùn)練過程中,隱藏層層數(shù)的選擇要根據(jù)數(shù)據(jù)的結(jié)構(gòu)大小,識別故障準確率的要求從而選擇合適的隱藏層層數(shù),層數(shù)太少會導(dǎo)致模型不能很好地學(xué)習(xí)數(shù)據(jù)的特征,識別故障準確率較低,但層數(shù)太多會導(dǎo)致模型復(fù)雜度提高,訓(xùn)練時間增加,雖然準確率有小幅提高,但提高不是很明顯,時間成本卻大幅提高。
(1)將獲得的不同工況下閘閥泄漏的聲發(fā)射信號進行特征提取,然后將提取出的樣本數(shù)據(jù)集輸入由TensorFlow構(gòu)建的卷積神經(jīng)網(wǎng)絡(luò)預(yù)測模型中。實驗結(jié)果表明該模型可以有效地完成閘閥故障程度診斷的相關(guān)工作。
(2)通過給模型增加隱藏層,提高模型的運算能力,可以有效緩解閘閥故障診斷模型準確率偏低的問題。
(3)通過改變模型隱藏層層數(shù),發(fā)現(xiàn)層數(shù)過多會導(dǎo)致模型復(fù)雜程度高,訓(xùn)練所花費時間過長,準確率提高也有限,所以需要在模型故障識別準確率與模型運行時間之間取得一個平衡。最終在有兩層隱藏層的模型情況下,閘閥故障診斷的準確率可以穩(wěn)定在95.2%,顯著提高了閘閥故障診斷的準確性,顯著降低了過于復(fù)雜模型的運行時間。