李思寒,仇懷利*,吳 佳,沈 彥
(1.合肥工業大學 電子科學與應用物理學院,安徽 合肥 230601;2.上海西派埃智能化系統有限公司,上海 200233)
在工業現場中,通常通過是否有液體滲漏至地面觀察管道設備是否破損。現有的水漬檢測方法以人工為主,但人工方法受到巡檢效率有限、不夠客觀等因素的制約,因此需要監控系統對可能發生泄露的地方進行快速、精確地檢測。視頻監控系統包含視頻監控設備和與之配套的智能圖像識別算法。
針對漏液識別問題,目前主要采用傳統圖像處理中的圖像分割、邊緣檢測、紅外成像的方法。文獻[1]提出了利用激光掃描技術和圖像處理方法相結合實現自動識別地鐵隧道滲漏水情況,但該方法算法復雜,實際工程現場應用難度較高;文獻[2]提出了基于數字圖像和邊緣檢測的檢測算法并結合改進的CTA算法結合對滲漏水病害進行識別的方法,但該方法易受復雜背景干擾,系統魯棒性較差;文獻[3]提出通過紅外熱成像攝像頭檢測物體比熱容并根據水漬與普通物體的比熱容差異來檢測水漬,但紅外熱成像攝像頭設備費用昂貴。總的來說,采用圖像處理的特定算法來檢測水漬能滿足特定場景檢測準確率的需求,但是上述算法都存在系統魯棒性較差、耗時長、難以適應復雜場景以及設備價格較高的缺點。
為了解決這些問題,深度學習算法被引入到了圖像處理領域。其中最常用的是卷積神經網絡(CNN),它的特點是能夠提取輸入數據的高層抽象特征,目前已廣泛運用于圖像處理領域中。文獻[4]提出采用卷積神經網絡來識別道路裂縫,文獻[5]提出采用全卷積網絡(FCN)來檢測具有復雜環境的隧道幾何柱面滲水面積。總體來說,卷積神經網絡算法善于對復雜環境進行特征檢測[6-7]和識別[8]。
目前,基于深度學習的工業現場檢測識別方法主要有FCN-VGG16/19、Fast R-CNN、Yolo v3、Mask R-CNN等。由于本文所處工業環境相機拍攝角度固定,每個相機鏡頭固定拍攝每個管道連接處,所以只需判斷目標位置是否含有水漬,即化簡為圖像分類問題。
目前圖像分類領域主流的卷積神經網絡模型除了本文所運用的VGG網絡,還有Alexnet、Googlenet等。其中,Alexnet由Alex Krizhevesky等人在2012年提出,它在卷積神經網絡中使用Relu非線性激活函數,通過多GPU的訓練降低訓練時間,并且采用了重疊池化,提高網絡精度,降低了過擬合現象的發生概率。但其相較于VGG網絡,卷積核較大,層級較淺。而Googlenet通過形成網絡內更復雜的內部架構Inception,降低了計算所需資源和要求。該架構的主要思想就是以卷積層構成塊作為網絡的基礎,并找出最優的結構塊在空間上重復,對輸入圖像并行地執行多個卷積運算或池化操作,網絡參數較少[9]。由于Goodlenet模型含有兩面個輔助分類器,修改及訓練時較為復雜繁瑣,不進行精細分類的工業應用時偏向于使用模型簡單的VGG網絡模型。
本文采用CNN-VGG16模型檢測管道漏液,首先對樣本進行數據增強,進一步地豐富圖像訓練集,提取多種圖像特征,泛化理論模型,再制作數據集,結合早停法對樣本進行訓練,最后通過實際工程應用驗證了本文分析的正確性和所提方案的有效性。
深度學習是一類新興的多層神經網絡學習算法[10],它在特征提取和建模上比淺層模型具有更好的泛化能力[11]。傳統神經網絡基礎模型含有輸入層(Input layers)、隱藏層(Hidden units)和輸出層(Output layers),隱藏層可以含有很多層,每層可含有多個神經元。神經網絡中的每個神經元對其所有的輸入進行加權求和,并添加一個被稱為偏置(Bias)的常數,然后通過一些非線性激活函數[12]來反饋結果。
卷積神經網絡(CNN)屬于神經網絡的范疇,是目前深度學習技術領域中一種經典而廣泛應用的結構,已經在諸如圖像識別和分類的領域證明了其高效的能力。
一個典型的卷積網絡(圖1)通常有3層,第一層是卷積層,可作為卷積神經網絡單獨使用;第二層是池化層,可以縮減模型大小,提高計算速度,同時提高所提取特征魯棒性;最后一層是全連接層,它的每一層是由許多神經元組成的平鋪結構,將特征整合到一起,輸出為一個值,減少特征位置對分類帶來的影響。

圖1 卷積神經網絡結構圖Fig.1 Structure diagram of convolutional neural network
本文采用的卷積神經網絡模型為VGG16[13]。在ICLR2015會議上首次提出VGG16模型,該模型可以達到92.7%的測試準確度,處于ImageNet的前5位,它的數據集包括1 400萬張圖像,1 000個類別。
VGG16是一種深度卷積神經網絡模型,16表示其深度,該模型在圖像分類等任務中取得了不錯的效果[14]。


(1)
其中,D是深度,F是卷積核大小,b為偏置量,ωd,m,n表示卷積核在第d層第m行第n列的權重,xd,i+m,j+n表示圖像第d層第i+m行第j+n列的輸入元素,yi,j表示預測輸出的第i行第j列的圖像特征,f()為非線性激活函數,這里的f()為Relu激活函數。
池化層的池化方法采用尺度為2,步長為2的最大池化(Maxpooling)方法,采用這種方法是因為圖像具有靜態性,在一個區域內有用特征可能在另一個區域內適用。因此,為了描述較大的圖像,可以計算圖像上某個特定特征的最大值來代表這個區域的特征且最大池化[15]能保留更多紋理信息。Relu激活函數見公式(2)。
f(x)=max(0,x)
.
(2)
激活函數是為了使模型加入非線性因素,Relu函數具有單側抑制、相對廣的興奮邊界和稀疏激活性等優點,是應用最為廣泛的激活函數。
在分類問題中,全連接層常采用sigmoid或softmax。在二分類問題中,采用sigmoid作為最后的激活層;在多分類問題中,采用softmax作為最后的激活層。
sigmoid激活函數公式(3)如下:

(3)
其中,可以設置概率閾值作為分界,分入兩個類別中,求導簡單,但易出現梯度消失。
softmax激活函數公式(4)如下:

(4)
其中,k表示類別數,j表示具體對應的類別,計算概率最高類別的作為輸出結果。
VGG16模型中13層卷積層和5層池化層負責進行圖像的特征提取和提升計算速度,最后3層全連接層完成分類任務。
訓練一個神經網絡時,網絡參數會隨著模型復雜度的增加而增多,就容易產生過擬合現象[16]。為了避免這種現象,通常有兩個解決問題的方向:降低參數空間的維度或者降低每個維度上的有效規模。降低每個維度上的有效規模的方法主要是正則化,如權重衰變和早停法等。其中,早停法作為最有效的方法被廣泛采用。
早停法[17]的基本含義是指當訓練模型在驗證集上的表現開始下降時停止繼續訓練,這樣就能避免繼續訓練導致過擬合。因此,如何選擇停止訓練的時機成為早停法的關鍵問題。本文根據VGG網絡的特點,設置了自主停止方式:將標記樣本按照比例分為訓練集、驗證集和測試集,訓練過程中驗證集的損失函數在連續10個周期(即容忍程度為10)不下降時,程序停止并保存驗證集損失函數最小時所對應模型。
訓練完成后,需要判斷模型的好壞。一般使用兩個值來判斷模型的好壞:準確率和損失函數。
從公式(1)可以看出,y是理想輸出的值即預測值,但是實際工程應用中會存在一定的誤差。誤差在神經網絡中用損失函數來表示,神經網絡訓練或者優化的過程其實就是最小化損失函數的過程[18],損失函數越小,說明模型的預測值越接近真實值。
準確率在水漬檢測的分類問題中,是看預測的類別是否和真實的類別一致。一個N類任務的分類問題,其輸出是一個N維的向量,每一個向量代表一種類別,對應的值則代表預測目標屬于該類的概率。在輸出預測結果時,程序是自動選擇概率最大的索引所對應的標簽作為最終預測的結果標簽。
使用兩個值來判斷模型是因為對于準確率來說,只要預測結果大于0.5就可判斷為水漬,但對于損失函數來說,希望模型能夠100%預測。所以利用這兩種指標來判斷模型,可以使得到的權重模型具有較好的魯棒性。
本文使用的損失函數為二分類交叉熵損失(sigmoid_cross_entropy loss),公式如下:

(5)

但是在分類問題中,準確率具有直觀性,但不可微,由于損失函數一個很好的性質就是可微,可以求梯度,運用反向傳播更新參數。所以在回歸任務中,準確率就不可再用,只能使用損失函數。
近年來,隨著我國城鎮化程度的提高和超大城市的出現,城市污水處理成為了保障人民基本生活的重要環節。在污水處理廠中,通常需要觀察污水處理設備是否有液體泄露的現象,以防泄露出的污水或化學藥品使人們生命財產安全造成損失。
如圖2所示,漏液監測系統由視頻環網、網絡交換設備、平臺服務器及漏液監測管理平臺構成。千兆視頻環網將監控點完整覆蓋,定時采集監控圖像上傳平臺服務器用于漏液預警分析。漏液監測模型部署于平臺服務器,定時抓取圖像后分析當前監控點是否存在漏液情況,并將分析結果推送至漏液監測管理平臺。當發生分析結果為漏液時,監測管理平臺向現場操作人員發出預警,并推送監測點位置信息,由現場操作人員至對應地點確認是否存在漏液情況并及時進行處理,從而保障工業現場安全。

圖2 污水處理廠漏液檢測系統Fig.2 Leakage detection system for sewage treatment plant
采用海康威視網絡攝像頭獲取污水處理廠不同位置的圖像,地面情況如圖3所示。

圖3 污水處理廠地面圖Fig.3 Ground plan of sewage treatment plant
本文采用的傳統圖像處理方法:先基于閾值分割,通過設定閾值的大小將感興趣區域從背景中分割出來,但此方法易受到環境因素的影響,一般需要和其他分割法結合使用。本文在此基礎上采用k-means算法根據距離的相似性進行聚類分割[19]。進一步地,考慮到一般情況下不同區域的邊界的灰度值變化較大,本文還結合邊緣分割的方法采用Canny算子通過檢測區域的邊界從而達到分割圖像的目的。目前在實現邊緣分割的幾種算子中,Canny[20]算子因其不易受噪聲干擾、能夠檢測到真正的弱邊緣得到了廣泛應用,是目前應用效果較為理想的一種邊緣檢測算法。
利用上述傳統圖像處理方法對圖3(b)進行漏液檢測,由圖4可以看出,在k=4時水漬和地面有明顯的分界。

圖4 k聚類和Canny算子邊緣提取結合效果Fig.4 Combined effect of k-means and Canny operator edge extraction
利用分割和邊緣檢測相結合的算法對含有管道等干擾物體多的地面圖像進行處理,提取了過多噪聲信息而無法準確地判斷是否含有水漬,且處理速度慢、沒有連續性。所以當現場工作環境復雜、目標物不規則、色差不大時,傳統的圖像處理方法無法準確提取所需要的信息。

續 表
本文利用python對原始圖像進行數據增強。
在圖像分類任務中,對于輸入的圖像進行一些簡單的平移、縮放、顏色變換等,不會影響圖像的類別,從而豐富圖像訓練集,提取圖像特征,防止過擬合,提高模型泛化能力。
本次實驗共使用1 780張污水處理廠的地面圖像,其中有水漬圖像1 300張,無水漬圖像480張。將兩個分類的圖像打亂重新排序,并從各自類別中隨機選取70%作為訓練樣本,20%的圖片作為模型質量驗證樣本,10%作為測試樣本。有水漬圖像設為類別1,無水漬圖像設為類別2。
本次用于運算的計算機配置是:Intel Core i9-9900K,32 GB內存。采用VGG16模型,利用python語言完成。
本文采用的VGG16模型具體工程應用的運行過程如表1所示。

表1 VGG16模型運行過程表Tab.1 VGG16 model running process table
從表1具體運行過程中可以看出,以池化層作為分界,VGG16有6個塊結構,每個塊結構中的通道數相同。卷積層通道數分別為64,64,128,128,256,256,256,512,512,512,直到512時不再增加。隨著通道數的增加,可以提取出更多的圖像信息。
池化(block5_pool)后利用Flatten將維度壓縮成1維,完成向全連接層的過渡,最后兩層是由Relu激活的全連接層和由sigmoid激活的全連接層。
由于最后輸出的類別數為2,即判斷該視場區域內是否含有水漬,所以本文使用sigmoid作為最后全連接層的激活函數,輸出為類別1或類別2。
本文在訓練時將VGG16模型與早停法相結合,驗證集損失函數達到10個容忍周期不下降時,訓練自動停止,避免了由于訓練次數過多從而產生的參數過多造成權重模型過擬合的狀態,提升了訓練時間,節約了訓練成本。
在工程應用過程中,迭代次數(epoch)設置為100(即不發生早停時最高迭代100次),調整每次訓練所需要的樣本數(barch_size)。一個迭代次數等于所有訓練樣本的一次正向傳播加一次反向傳播。具體模型運行結果見圖5和表2,其中,loss表示訓練集損失函數,acc表示訓練集準確率,val_loss表示驗證集的損失函數,val_acc表示驗證集的準確率,最后使用測試的部分來驗證準確度(test_acc)。圖5的(a)~(d)分別是不同參數時損失函數和準確率的走勢圖,其中(a)和(b)barch_size=20,epoch=96,(c)和(d)barch_size=40,epoch=83。
通過對比圖5(a)和(c)、(b)和(d)折線走勢可以看到,在一定范圍內,每次選取的樣本數量在一定范圍內變大,其確定的下降方向越準,模型收斂的越快,引起訓練震蕩越小。在每次訓練所需要的樣本數相同時,迭代次數越多,模型整體走勢越平穩,最后越趨近于理想狀態,本文的模型魯棒性越好。根據表2可知,每次選取樣本數為40、迭代次數為83時,訓練集準確率最高,損失函數最小,測試集的準確率最高,即訓練好的模型性能最好。

圖5 評價模型標準參數走勢圖。(a) barch-size=20,epoch=96時訓練集和驗征集的損失函數;(b) barch-size=20,epoch=96時訓練集和驗證集的準確率;(c) barch-size=40,epoch=83時訓練集和驗證集的損失函數;(d) barch-size=40,epoch=83時訓練集和驗證集的準確率。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 各參數對模型的影響Tab.2 Influence of various parameters on the model
本文采用多種模型對工業現場進行漏液識別,識別結果如表3所示。
表3為訓練集、驗證集、測試集均相同,每次樣本數為40,最高迭代次數為100時,卷積神經網絡不同圖像分類模型結合早停法的結果對比。

表3 不同模型結果對比Tab.3 Comparison of results of different models
由表3可知,Alexnet模型測試準確率最低,VGG16模型測試準確率與Googlenet相近,訓練集準確率和損失函數值均較好,且驗證集和測試集都達到了最優,權重模型處于適度擬合狀態。本文從現場隨機拍攝200張作為樣本總量進行多種模型結果預測,顯示結果為類別1和類別2,預測結果見表4。

表4 基于不同模型的實際預測結果Tab.4 Actual prediction results based on different model
表4是利用不同方法對無分類的混合數據集進行逐個識別,達到應用模型并預測結果的作用,利用傳統圖像處理方法預測的準確率為65.6%,準確率較低。通過仔細觀察判斷錯誤圖可以發現,在顏色差別不大的區域、外界光照較強形成的高反射區域或水泥地面破損造成類似水漬印記的區域,預測失誤的可能性均很大。本文方法的準確率為97.0%,類別判斷準確率很高。
對于安全性能要求比較低的現場,一般拍攝間隔設置為5 min。對于安全性能要求較高的現場,一般拍攝時間間隔設置為2 s。本文各個模型預測時間見表5。
由表5可知,本文所提方法預測時間最短,單張平均預測時間約為0.2 s,因此預測時間遠低于圖像采集時間間隔,本文所提算法完全能夠滿足工業現場實時檢測需求。

表5 不同模型的實際預測時間Tab.5 Actual prediction time of different models
綜上所述,VGG16模型訓練集準確率和損失函數值均較好,且驗證集和測試集都達到了最優,其測試準確率與Googlenet相近,預測結果相同,預測時間最短,最適合檢測工業現場的漏液情況。
綜上所述,圖像處理的方法適用于視野范圍內所含物體較少,背景較簡單的目標物提取。該方法具有一定的直觀性,但是在處理受復雜背景或者光照等環境因素影響較大的圖像時,算法繁瑣且不易實現。而基于CNN的深度學習模型對復雜的環境進行水漬檢測,可以大幅提升檢測的準確性。本文通過工業現場應用和基于深度學習的多種算法進行對比實驗,進一步驗證了VGG16結合早停法的模型的有效性,其訓練準確率可以達到99.44%,預測準確率達到97.0%,單張預測時間最短約為0.2 s,且原理較為簡單,易于實現,設備較便宜,可以滿足工業現場檢測的需求。