李思寒,仇懷利*,吳 佳,沈 彥
(1.合肥工業(yè)大學(xué) 電子科學(xué)與應(yīng)用物理學(xué)院,安徽 合肥 230601;2.上海西派埃智能化系統(tǒng)有限公司,上海 200233)
在工業(yè)現(xiàn)場中,通常通過是否有液體滲漏至地面觀察管道設(shè)備是否破損?,F(xiàn)有的水漬檢測方法以人工為主,但人工方法受到巡檢效率有限、不夠客觀等因素的制約,因此需要監(jiān)控系統(tǒng)對可能發(fā)生泄露的地方進(jìn)行快速、精確地檢測。視頻監(jiān)控系統(tǒng)包含視頻監(jiān)控設(shè)備和與之配套的智能圖像識別算法。
針對漏液識別問題,目前主要采用傳統(tǒng)圖像處理中的圖像分割、邊緣檢測、紅外成像的方法。文獻(xiàn)[1]提出了利用激光掃描技術(shù)和圖像處理方法相結(jié)合實現(xiàn)自動識別地鐵隧道滲漏水情況,但該方法算法復(fù)雜,實際工程現(xiàn)場應(yīng)用難度較高;文獻(xiàn)[2]提出了基于數(shù)字圖像和邊緣檢測的檢測算法并結(jié)合改進(jìn)的CTA算法結(jié)合對滲漏水病害進(jìn)行識別的方法,但該方法易受復(fù)雜背景干擾,系統(tǒng)魯棒性較差;文獻(xiàn)[3]提出通過紅外熱成像攝像頭檢測物體比熱容并根據(jù)水漬與普通物體的比熱容差異來檢測水漬,但紅外熱成像攝像頭設(shè)備費用昂貴??偟膩碚f,采用圖像處理的特定算法來檢測水漬能滿足特定場景檢測準(zhǔn)確率的需求,但是上述算法都存在系統(tǒng)魯棒性較差、耗時長、難以適應(yīng)復(fù)雜場景以及設(shè)備價格較高的缺點。
為了解決這些問題,深度學(xué)習(xí)算法被引入到了圖像處理領(lǐng)域。其中最常用的是卷積神經(jīng)網(wǎng)絡(luò)(CNN),它的特點是能夠提取輸入數(shù)據(jù)的高層抽象特征,目前已廣泛運(yùn)用于圖像處理領(lǐng)域中。文獻(xiàn)[4]提出采用卷積神經(jīng)網(wǎng)絡(luò)來識別道路裂縫,文獻(xiàn)[5]提出采用全卷積網(wǎng)絡(luò)(FCN)來檢測具有復(fù)雜環(huán)境的隧道幾何柱面滲水面積??傮w來說,卷積神經(jīng)網(wǎng)絡(luò)算法善于對復(fù)雜環(huán)境進(jìn)行特征檢測[6-7]和識別[8]。
目前,基于深度學(xué)習(xí)的工業(yè)現(xiàn)場檢測識別方法主要有FCN-VGG16/19、Fast R-CNN、Yolo v3、Mask R-CNN等。由于本文所處工業(yè)環(huán)境相機(jī)拍攝角度固定,每個相機(jī)鏡頭固定拍攝每個管道連接處,所以只需判斷目標(biāo)位置是否含有水漬,即化簡為圖像分類問題。
目前圖像分類領(lǐng)域主流的卷積神經(jīng)網(wǎng)絡(luò)模型除了本文所運(yùn)用的VGG網(wǎng)絡(luò),還有Alexnet、Googlenet等。其中,Alexnet由Alex Krizhevesky等人在2012年提出,它在卷積神經(jīng)網(wǎng)絡(luò)中使用Relu非線性激活函數(shù),通過多GPU的訓(xùn)練降低訓(xùn)練時間,并且采用了重疊池化,提高網(wǎng)絡(luò)精度,降低了過擬合現(xiàn)象的發(fā)生概率。但其相較于VGG網(wǎng)絡(luò),卷積核較大,層級較淺。而Googlenet通過形成網(wǎng)絡(luò)內(nèi)更復(fù)雜的內(nèi)部架構(gòu)Inception,降低了計算所需資源和要求。該架構(gòu)的主要思想就是以卷積層構(gòu)成塊作為網(wǎng)絡(luò)的基礎(chǔ),并找出最優(yōu)的結(jié)構(gòu)塊在空間上重復(fù),對輸入圖像并行地執(zhí)行多個卷積運(yùn)算或池化操作,網(wǎng)絡(luò)參數(shù)較少[9]。由于Goodlenet模型含有兩面?zhèn)€輔助分類器,修改及訓(xùn)練時較為復(fù)雜繁瑣,不進(jìn)行精細(xì)分類的工業(yè)應(yīng)用時偏向于使用模型簡單的VGG網(wǎng)絡(luò)模型。
本文采用CNN-VGG16模型檢測管道漏液,首先對樣本進(jìn)行數(shù)據(jù)增強(qiáng),進(jìn)一步地豐富圖像訓(xùn)練集,提取多種圖像特征,泛化理論模型,再制作數(shù)據(jù)集,結(jié)合早停法對樣本進(jìn)行訓(xùn)練,最后通過實際工程應(yīng)用驗證了本文分析的正確性和所提方案的有效性。
深度學(xué)習(xí)是一類新興的多層神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法[10],它在特征提取和建模上比淺層模型具有更好的泛化能力[11]。傳統(tǒng)神經(jīng)網(wǎng)絡(luò)基礎(chǔ)模型含有輸入層(Input layers)、隱藏層(Hidden units)和輸出層(Output layers),隱藏層可以含有很多層,每層可含有多個神經(jīng)元。神經(jīng)網(wǎng)絡(luò)中的每個神經(jīng)元對其所有的輸入進(jìn)行加權(quán)求和,并添加一個被稱為偏置(Bias)的常數(shù),然后通過一些非線性激活函數(shù)[12]來反饋結(jié)果。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)屬于神經(jīng)網(wǎng)絡(luò)的范疇,是目前深度學(xué)習(xí)技術(shù)領(lǐng)域中一種經(jīng)典而廣泛應(yīng)用的結(jié)構(gòu),已經(jīng)在諸如圖像識別和分類的領(lǐng)域證明了其高效的能力。
一個典型的卷積網(wǎng)絡(luò)(圖1)通常有3層,第一層是卷積層,可作為卷積神經(jīng)網(wǎng)絡(luò)單獨使用;第二層是池化層,可以縮減模型大小,提高計算速度,同時提高所提取特征魯棒性;最后一層是全連接層,它的每一層是由許多神經(jīng)元組成的平鋪結(jié)構(gòu),將特征整合到一起,輸出為一個值,減少特征位置對分類帶來的影響。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Structure diagram of convolutional neural network
本文采用的卷積神經(jīng)網(wǎng)絡(luò)模型為VGG16[13]。在ICLR2015會議上首次提出VGG16模型,該模型可以達(dá)到92.7%的測試準(zhǔn)確度,處于ImageNet的前5位,它的數(shù)據(jù)集包括1 400萬張圖像,1 000個類別。
VGG16是一種深度卷積神經(jīng)網(wǎng)絡(luò)模型,16表示其深度,該模型在圖像分類等任務(wù)中取得了不錯的效果[14]。
(1)
其中,D是深度,F(xiàn)是卷積核大小,b為偏置量,ωd,m,n表示卷積核在第d層第m行第n列的權(quán)重,xd,i+m,j+n表示圖像第d層第i+m行第j+n列的輸入元素,yi,j表示預(yù)測輸出的第i行第j列的圖像特征,f()為非線性激活函數(shù),這里的f()為Relu激活函數(shù)。
池化層的池化方法采用尺度為2,步長為2的最大池化(Maxpooling)方法,采用這種方法是因為圖像具有靜態(tài)性,在一個區(qū)域內(nèi)有用特征可能在另一個區(qū)域內(nèi)適用。因此,為了描述較大的圖像,可以計算圖像上某個特定特征的最大值來代表這個區(qū)域的特征且最大池化[15]能保留更多紋理信息。Relu激活函數(shù)見公式(2)。
f(x)=max(0,x)
.
(2)
激活函數(shù)是為了使模型加入非線性因素,Relu函數(shù)具有單側(cè)抑制、相對廣的興奮邊界和稀疏激活性等優(yōu)點,是應(yīng)用最為廣泛的激活函數(shù)。
在分類問題中,全連接層常采用sigmoid或softmax。在二分類問題中,采用sigmoid作為最后的激活層;在多分類問題中,采用softmax作為最后的激活層。
sigmoid激活函數(shù)公式(3)如下:
(3)
其中,可以設(shè)置概率閾值作為分界,分入兩個類別中,求導(dǎo)簡單,但易出現(xiàn)梯度消失。
softmax激活函數(shù)公式(4)如下:
(4)
其中,k表示類別數(shù),j表示具體對應(yīng)的類別,計算概率最高類別的作為輸出結(jié)果。
VGG16模型中13層卷積層和5層池化層負(fù)責(zé)進(jìn)行圖像的特征提取和提升計算速度,最后3層全連接層完成分類任務(wù)。
訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)時,網(wǎng)絡(luò)參數(shù)會隨著模型復(fù)雜度的增加而增多,就容易產(chǎn)生過擬合現(xiàn)象[16]。為了避免這種現(xiàn)象,通常有兩個解決問題的方向:降低參數(shù)空間的維度或者降低每個維度上的有效規(guī)模。降低每個維度上的有效規(guī)模的方法主要是正則化,如權(quán)重衰變和早停法等。其中,早停法作為最有效的方法被廣泛采用。
早停法[17]的基本含義是指當(dāng)訓(xùn)練模型在驗證集上的表現(xiàn)開始下降時停止繼續(xù)訓(xùn)練,這樣就能避免繼續(xù)訓(xùn)練導(dǎo)致過擬合。因此,如何選擇停止訓(xùn)練的時機(jī)成為早停法的關(guān)鍵問題。本文根據(jù)VGG網(wǎng)絡(luò)的特點,設(shè)置了自主停止方式:將標(biāo)記樣本按照比例分為訓(xùn)練集、驗證集和測試集,訓(xùn)練過程中驗證集的損失函數(shù)在連續(xù)10個周期(即容忍程度為10)不下降時,程序停止并保存驗證集損失函數(shù)最小時所對應(yīng)模型。
訓(xùn)練完成后,需要判斷模型的好壞。一般使用兩個值來判斷模型的好壞:準(zhǔn)確率和損失函數(shù)。
從公式(1)可以看出,y是理想輸出的值即預(yù)測值,但是實際工程應(yīng)用中會存在一定的誤差。誤差在神經(jīng)網(wǎng)絡(luò)中用損失函數(shù)來表示,神經(jīng)網(wǎng)絡(luò)訓(xùn)練或者優(yōu)化的過程其實就是最小化損失函數(shù)的過程[18],損失函數(shù)越小,說明模型的預(yù)測值越接近真實值。
準(zhǔn)確率在水漬檢測的分類問題中,是看預(yù)測的類別是否和真實的類別一致。一個N類任務(wù)的分類問題,其輸出是一個N維的向量,每一個向量代表一種類別,對應(yīng)的值則代表預(yù)測目標(biāo)屬于該類的概率。在輸出預(yù)測結(jié)果時,程序是自動選擇概率最大的索引所對應(yīng)的標(biāo)簽作為最終預(yù)測的結(jié)果標(biāo)簽。
使用兩個值來判斷模型是因為對于準(zhǔn)確率來說,只要預(yù)測結(jié)果大于0.5就可判斷為水漬,但對于損失函數(shù)來說,希望模型能夠100%預(yù)測。所以利用這兩種指標(biāo)來判斷模型,可以使得到的權(quán)重模型具有較好的魯棒性。
本文使用的損失函數(shù)為二分類交叉熵?fù)p失(sigmoid_cross_entropy loss),公式如下:
(5)
但是在分類問題中,準(zhǔn)確率具有直觀性,但不可微,由于損失函數(shù)一個很好的性質(zhì)就是可微,可以求梯度,運(yùn)用反向傳播更新參數(shù)。所以在回歸任務(wù)中,準(zhǔn)確率就不可再用,只能使用損失函數(shù)。
近年來,隨著我國城鎮(zhèn)化程度的提高和超大城市的出現(xiàn),城市污水處理成為了保障人民基本生活的重要環(huán)節(jié)。在污水處理廠中,通常需要觀察污水處理設(shè)備是否有液體泄露的現(xiàn)象,以防泄露出的污水或化學(xué)藥品使人們生命財產(chǎn)安全造成損失。
如圖2所示,漏液監(jiān)測系統(tǒng)由視頻環(huán)網(wǎng)、網(wǎng)絡(luò)交換設(shè)備、平臺服務(wù)器及漏液監(jiān)測管理平臺構(gòu)成。千兆視頻環(huán)網(wǎng)將監(jiān)控點完整覆蓋,定時采集監(jiān)控圖像上傳平臺服務(wù)器用于漏液預(yù)警分析。漏液監(jiān)測模型部署于平臺服務(wù)器,定時抓取圖像后分析當(dāng)前監(jiān)控點是否存在漏液情況,并將分析結(jié)果推送至漏液監(jiān)測管理平臺。當(dāng)發(fā)生分析結(jié)果為漏液時,監(jiān)測管理平臺向現(xiàn)場操作人員發(fā)出預(yù)警,并推送監(jiān)測點位置信息,由現(xiàn)場操作人員至對應(yīng)地點確認(rèn)是否存在漏液情況并及時進(jìn)行處理,從而保障工業(yè)現(xiàn)場安全。
圖2 污水處理廠漏液檢測系統(tǒng)Fig.2 Leakage detection system for sewage treatment plant
采用??低暰W(wǎng)絡(luò)攝像頭獲取污水處理廠不同位置的圖像,地面情況如圖3所示。
圖3 污水處理廠地面圖Fig.3 Ground plan of sewage treatment plant
本文采用的傳統(tǒng)圖像處理方法:先基于閾值分割,通過設(shè)定閾值的大小將感興趣區(qū)域從背景中分割出來,但此方法易受到環(huán)境因素的影響,一般需要和其他分割法結(jié)合使用。本文在此基礎(chǔ)上采用k-means算法根據(jù)距離的相似性進(jìn)行聚類分割[19]。進(jìn)一步地,考慮到一般情況下不同區(qū)域的邊界的灰度值變化較大,本文還結(jié)合邊緣分割的方法采用Canny算子通過檢測區(qū)域的邊界從而達(dá)到分割圖像的目的。目前在實現(xiàn)邊緣分割的幾種算子中,Canny[20]算子因其不易受噪聲干擾、能夠檢測到真正的弱邊緣得到了廣泛應(yīng)用,是目前應(yīng)用效果較為理想的一種邊緣檢測算法。
利用上述傳統(tǒng)圖像處理方法對圖3(b)進(jìn)行漏液檢測,由圖4可以看出,在k=4時水漬和地面有明顯的分界。
圖4 k聚類和Canny算子邊緣提取結(jié)合效果Fig.4 Combined effect of k-means and Canny operator edge extraction
利用分割和邊緣檢測相結(jié)合的算法對含有管道等干擾物體多的地面圖像進(jìn)行處理,提取了過多噪聲信息而無法準(zhǔn)確地判斷是否含有水漬,且處理速度慢、沒有連續(xù)性。所以當(dāng)現(xiàn)場工作環(huán)境復(fù)雜、目標(biāo)物不規(guī)則、色差不大時,傳統(tǒng)的圖像處理方法無法準(zhǔn)確提取所需要的信息。
續(xù) 表
本文利用python對原始圖像進(jìn)行數(shù)據(jù)增強(qiáng)。
在圖像分類任務(wù)中,對于輸入的圖像進(jìn)行一些簡單的平移、縮放、顏色變換等,不會影響圖像的類別,從而豐富圖像訓(xùn)練集,提取圖像特征,防止過擬合,提高模型泛化能力。
本次實驗共使用1 780張污水處理廠的地面圖像,其中有水漬圖像1 300張,無水漬圖像480張。將兩個分類的圖像打亂重新排序,并從各自類別中隨機(jī)選取70%作為訓(xùn)練樣本,20%的圖片作為模型質(zhì)量驗證樣本,10%作為測試樣本。有水漬圖像設(shè)為類別1,無水漬圖像設(shè)為類別2。
本次用于運(yùn)算的計算機(jī)配置是:Intel Core i9-9900K,32 GB內(nèi)存。采用VGG16模型,利用python語言完成。
本文采用的VGG16模型具體工程應(yīng)用的運(yùn)行過程如表1所示。
表1 VGG16模型運(yùn)行過程表Tab.1 VGG16 model running process table
從表1具體運(yùn)行過程中可以看出,以池化層作為分界,VGG16有6個塊結(jié)構(gòu),每個塊結(jié)構(gòu)中的通道數(shù)相同。卷積層通道數(shù)分別為64,64,128,128,256,256,256,512,512,512,直到512時不再增加。隨著通道數(shù)的增加,可以提取出更多的圖像信息。
池化(block5_pool)后利用Flatten將維度壓縮成1維,完成向全連接層的過渡,最后兩層是由Relu激活的全連接層和由sigmoid激活的全連接層。
由于最后輸出的類別數(shù)為2,即判斷該視場區(qū)域內(nèi)是否含有水漬,所以本文使用sigmoid作為最后全連接層的激活函數(shù),輸出為類別1或類別2。
本文在訓(xùn)練時將VGG16模型與早停法相結(jié)合,驗證集損失函數(shù)達(dá)到10個容忍周期不下降時,訓(xùn)練自動停止,避免了由于訓(xùn)練次數(shù)過多從而產(chǎn)生的參數(shù)過多造成權(quán)重模型過擬合的狀態(tài),提升了訓(xùn)練時間,節(jié)約了訓(xùn)練成本。
在工程應(yīng)用過程中,迭代次數(shù)(epoch)設(shè)置為100(即不發(fā)生早停時最高迭代100次),調(diào)整每次訓(xùn)練所需要的樣本數(shù)(barch_size)。一個迭代次數(shù)等于所有訓(xùn)練樣本的一次正向傳播加一次反向傳播。具體模型運(yùn)行結(jié)果見圖5和表2,其中,loss表示訓(xùn)練集損失函數(shù),acc表示訓(xùn)練集準(zhǔn)確率,val_loss表示驗證集的損失函數(shù),val_acc表示驗證集的準(zhǔn)確率,最后使用測試的部分來驗證準(zhǔn)確度(test_acc)。圖5的(a)~(d)分別是不同參數(shù)時損失函數(shù)和準(zhǔn)確率的走勢圖,其中(a)和(b)barch_size=20,epoch=96,(c)和(d)barch_size=40,epoch=83。
通過對比圖5(a)和(c)、(b)和(d)折線走勢可以看到,在一定范圍內(nèi),每次選取的樣本數(shù)量在一定范圍內(nèi)變大,其確定的下降方向越準(zhǔn),模型收斂的越快,引起訓(xùn)練震蕩越小。在每次訓(xùn)練所需要的樣本數(shù)相同時,迭代次數(shù)越多,模型整體走勢越平穩(wěn),最后越趨近于理想狀態(tài),本文的模型魯棒性越好。根據(jù)表2可知,每次選取樣本數(shù)為40、迭代次數(shù)為83時,訓(xùn)練集準(zhǔn)確率最高,損失函數(shù)最小,測試集的準(zhǔn)確率最高,即訓(xùn)練好的模型性能最好。
圖5 評價模型標(biāo)準(zhǔn)參數(shù)走勢圖。(a) barch-size=20,epoch=96時訓(xùn)練集和驗征集的損失函數(shù);(b) barch-size=20,epoch=96時訓(xùn)練集和驗證集的準(zhǔn)確率;(c) barch-size=40,epoch=83時訓(xùn)練集和驗證集的損失函數(shù);(d) barch-size=40,epoch=83時訓(xùn)練集和驗證集的準(zhǔn)確率。Fig.5 Trend chart of standard parameters of evaluation model.(a) Loss and val_loss at barch,size=20,epoch=96;(b) Acc and val_acc at barch-size=20,epoch=96;(c) Loss and val_loss at barch-size=40,epoch=83;(d) Aoc and val_acc at barch-size=40,epoch=83.
表2 各參數(shù)對模型的影響Tab.2 Influence of various parameters on the model
本文采用多種模型對工業(yè)現(xiàn)場進(jìn)行漏液識別,識別結(jié)果如表3所示。
表3為訓(xùn)練集、驗證集、測試集均相同,每次樣本數(shù)為40,最高迭代次數(shù)為100時,卷積神經(jīng)網(wǎng)絡(luò)不同圖像分類模型結(jié)合早停法的結(jié)果對比。
表3 不同模型結(jié)果對比Tab.3 Comparison of results of different models
由表3可知,Alexnet模型測試準(zhǔn)確率最低,VGG16模型測試準(zhǔn)確率與Googlenet相近,訓(xùn)練集準(zhǔn)確率和損失函數(shù)值均較好,且驗證集和測試集都達(dá)到了最優(yōu),權(quán)重模型處于適度擬合狀態(tài)。本文從現(xiàn)場隨機(jī)拍攝200張作為樣本總量進(jìn)行多種模型結(jié)果預(yù)測,顯示結(jié)果為類別1和類別2,預(yù)測結(jié)果見表4。
表4 基于不同模型的實際預(yù)測結(jié)果Tab.4 Actual prediction results based on different model
表4是利用不同方法對無分類的混合數(shù)據(jù)集進(jìn)行逐個識別,達(dá)到應(yīng)用模型并預(yù)測結(jié)果的作用,利用傳統(tǒng)圖像處理方法預(yù)測的準(zhǔn)確率為65.6%,準(zhǔn)確率較低。通過仔細(xì)觀察判斷錯誤圖可以發(fā)現(xiàn),在顏色差別不大的區(qū)域、外界光照較強(qiáng)形成的高反射區(qū)域或水泥地面破損造成類似水漬印記的區(qū)域,預(yù)測失誤的可能性均很大。本文方法的準(zhǔn)確率為97.0%,類別判斷準(zhǔn)確率很高。
對于安全性能要求比較低的現(xiàn)場,一般拍攝間隔設(shè)置為5 min。對于安全性能要求較高的現(xiàn)場,一般拍攝時間間隔設(shè)置為2 s。本文各個模型預(yù)測時間見表5。
由表5可知,本文所提方法預(yù)測時間最短,單張平均預(yù)測時間約為0.2 s,因此預(yù)測時間遠(yuǎn)低于圖像采集時間間隔,本文所提算法完全能夠滿足工業(yè)現(xiàn)場實時檢測需求。
表5 不同模型的實際預(yù)測時間Tab.5 Actual prediction time of different models
綜上所述,VGG16模型訓(xùn)練集準(zhǔn)確率和損失函數(shù)值均較好,且驗證集和測試集都達(dá)到了最優(yōu),其測試準(zhǔn)確率與Googlenet相近,預(yù)測結(jié)果相同,預(yù)測時間最短,最適合檢測工業(yè)現(xiàn)場的漏液情況。
綜上所述,圖像處理的方法適用于視野范圍內(nèi)所含物體較少,背景較簡單的目標(biāo)物提取。該方法具有一定的直觀性,但是在處理受復(fù)雜背景或者光照等環(huán)境因素影響較大的圖像時,算法繁瑣且不易實現(xiàn)。而基于CNN的深度學(xué)習(xí)模型對復(fù)雜的環(huán)境進(jìn)行水漬檢測,可以大幅提升檢測的準(zhǔn)確性。本文通過工業(yè)現(xiàn)場應(yīng)用和基于深度學(xué)習(xí)的多種算法進(jìn)行對比實驗,進(jìn)一步驗證了VGG16結(jié)合早停法的模型的有效性,其訓(xùn)練準(zhǔn)確率可以達(dá)到99.44%,預(yù)測準(zhǔn)確率達(dá)到97.0%,單張預(yù)測時間最短約為0.2 s,且原理較為簡單,易于實現(xiàn),設(shè)備較便宜,可以滿足工業(yè)現(xiàn)場檢測的需求。