袁澤輝 郭慧 周邵萍



摘? 要: 針對傳統管道表面缺陷檢測方法存在效率低、準確率不高的問題,提出一種通過機器視覺檢測管道表面缺陷的方法,在采集管道表面缺陷的圖像信息后通過卷積神經網絡的算法分類不同的缺陷。通過加入批量歸一化層,改進低層和中層卷積核的構造,優化了GoogleNet的構造,提高了卷積神經網絡的泛化性和收斂性。試驗結果表明,應用卷積神經網絡后對管道表面缺陷的識別率較高,顯著提高了管道表面缺陷識別的效率和準確率,具有較好的工程意義。
關鍵詞: 缺陷識別; 管道表面缺陷; 機器視覺; 卷積神經網絡; 缺陷分類; GoogleNet構造優化
中圖分類號: TN911.73?34? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼: A? ? ? ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2020)17?0047?05
Abstract: As the traditional pipeline surface defect detection method has the problems of low efficiency and low accuracy, a method based on machine vision to detect pipeline surface defects is proposed, in which the algorithm of convolutional neural network is used to classify different defects after the image information of pipeline surface defects is collected, and the low?level and middle?level convolution kernels are improved by adding a batch normalization?level to optimize the GoogleNet structure and enhance the generalization and convergence of convolutional neural networks. The test results show that the method's recognition rate of pipeline surface defects is higher after the application of convolutional neural network, which significantly improves the recognition efficiency and accuracy of defects on the pipeline surface. Therefore, the method has good engineering significance.
Keywords: defect recognition; pipeline surface defect; machine vision; convolutional neural network; defect classification; GoogleNet structure optimization
0? 引? 言
由于管道相比于其他運輸而言,具有成本低、效率高的特點,管道運輸在現代經濟發展中扮演著極其重要的作用。然而隨著時間的推移,管道表面會出現多種缺陷,這嚴重影響了管道運輸的效率,甚至會造成事故帶來巨大的損失。因此對管道表面缺陷進行檢測是非常必要的。
目前,我國對管道表面缺陷無損檢測的方法有超聲波檢測法、漏磁檢測法、渦流檢測法。其中,基于超聲波檢測法首先發射超聲脈沖,當遇到管壁時發生反射,通過計算發射脈沖與反射脈沖的時間差獲得管壁表面的情況。另外,基于漏磁的方法檢測管壁表面狀況,通過靠外加磁場對管壁進行磁化,如果管壁表面正常磁力線完全通過管道,若管壁表面出現缺陷則磁力線發生泄露,通過磁力線的變化獲得管道表面的情況。渦流檢測法,根據渦流生成的強度判斷管道表面是否正常。這些方法的缺點是檢測效率低下,每次檢測只能獲得一個點的狀況,而無法獲得管道整體的狀況。此外這些方法還缺乏可視性,檢測完后無法看到管道表面的具體情況。
隨著機器視覺技術的發展,數字圖像處理技術為管道表面缺陷檢測提供了新的方法[1]。機器視覺用于管道表面缺陷識別有兩個步驟:一是獲得缺陷圖片;二是對缺陷進行分類。
用CCD相機[2]可以獲取有效的管道表面圖片。在對管道表面缺陷分類中,主流的方法有特征提取法和SVM法。特征提取法中提取有效特征信息(Extracting Effective Feature Information)[3]往往是很重要的,但該方法訓練好的模型泛化能力比較差,這種模型對缺陷極為敏感,一旦缺陷發生變化,準確率就會大幅下降。基于向量機(SVM)[4?5]分類法雖然有一定的抗干擾能力,但是支持向量機較多地應用在二分類問題上,對于多分類問題存在一定的困難。由于管道表面的缺陷存在較多的種類,所以應用支持向量機分類不太合適。
隨著計算機技術的發展,深度學習(Deep Learning)[6]開始用于各行各業之中。相比其他神經網絡,卷積神經網絡(Convolutional Neural Network)[7]由于卷積核可以保存提取的圖像空間信息,采用權重共享的方法可以減少模型過擬合的風險,故而卷積神經網絡在圖像處理中大放異彩。
近年來主流的卷積神經網絡應用結構有AlexNet[8?9],VGG[10?11]和GoogleNet[12?13],其中,AlexNet缺陷在于網絡識別的精度沒有后兩者高,VGG雖然在精度上相比于AlexNet有了顯著的提高,然而耗費了大量的計算資源而且參數也比較多、所占內存大。GoogleNet則集中了前兩者的優點,在計算量不太大的情況下又擁有較高的準確率。本文采用GoogleNet為基本框架來識別管道表面缺陷。
1? 管道表面缺陷分類
管道表面缺陷種類有很多,其中,劃痕、裂口、錯位、障礙物以及腐蝕較為常見,如圖1所示,占據管道表面缺陷的98%以上,所以能夠有效地檢測并分類這五種缺陷是極其重要的。劃痕是管道壁表面出現細長裂紋;裂口是管道壁表面破裂發生脫落而產生裂口;錯位發生于相接管道口發生偏差從而產生錯位;腐蝕是管道表面發生剝落從而使得管道表面出現凹凸面;障礙物則是管道內充斥了樹根、樹葉這樣的障礙物。將5個缺陷類圖片與無缺陷管道表面圖片一起構成6個分類集合用于管道表面缺陷識別分類。
首先收集管道表面缺陷圖片,對其進行預分類訓練模型,然后將訓練好的模型應用于管道表面缺陷檢測。一個好的模型對于外界條件應該具備一定的魯棒性,由于對圖像預處理意味著圖像濾波、二值化[14],對這樣得到的預處理圖像進行訓練將使得模型過于關注光照等外界因素從而缺乏足夠的魯棒性。為此,本文與傳統的訓練方法不同,為了增加模型的泛化能力,不用預處理的圖像對模型進行訓練。
2? 管道表面缺陷識別模型的設計
2.1? GoogleNet網絡結構
GoogleNet是ImageNet ILSVRC的冠軍模型,在此之前的AlexNet,VGG等模型都是通過增大網絡的深度來訓練模型,這會導致一系列負面效果,隨著網絡的深度增加,梯度會消失,計算量過大,更有可能會出現正確率下降的現象。
在對圖像進行卷積操作時,若用小的卷積核對圖像進行卷積操作則會更多關注于圖像的局部特征,而用大的卷積核進行卷積操作時則會使得模型更傾向于全局特征。若是僅僅簡單地對圖像的卷積層進行疊加,在底層采用較小的卷積核而在高層采用較大的卷積核則會增加網絡深度,不但增大了計算量,同時,容易導致梯度消失的問題。為了解決這個問題GoogleNet提出了Inception結構,如圖2所示。Inception中采用多層并行感知器(1×1,3×3,5×5卷積核)替代原先單一的感知器對目標特征進行卷積操作。Inception結構有兩個優點:由于有3個卷積核對特征圖像進行并行運算可以有效解決圖形的尺度問題,通過學習,讓模型加大合適的卷積核權重自主選取合適的卷積核;另外3個卷積核實際上構成了局部的稀疏矩陣能大幅增加模型的運算能力,進而加速模型的收斂。
然而,3個卷積核的并行運算使得特征圖形的通道數加大,增大了運算量。GoogleNet通過在Inception前加入1×1的卷積核縮減通道數量,從而減少計算量。
GoogleNet層數較多,深度過大容易出現網絡的退化,在訓練集上出現正確率飽和甚至下降的情況。為此,GoogleNet引入了殘差網絡防止網絡的退化。殘差網絡在深度網絡的后面幾層采用恒等映射層,從而使得網絡退化成淺層網絡,然而恒等映射訓練較為困難,通過把恒等映射以殘差函數[F(X)=H(X)-X]的方式擬合。通過訓練[F(X)=0],則可以獲得恒等映射[H(X)=X]。
表1中3×3以及5×5減少通道數就是圖2中的1×1卷積核數,目的是為了減少通道從而減少計算量和修正線性激活,池化層是圖2中3×3卷積層后的1×1卷積核。Inception(3a),Inception(3b)等結構就是上文提到的Inception結構,每個Inception結構中的卷積核數量如表1所示。另外對Inception結構要用relu函數激活。最終選取的特征維度為1 000,實行對1 000個物體的分類。
2.2? 改進的GoogleNet網絡結構
文本借鑒了GoogleNet中的結構,然而,在具體解決管道表面缺陷識別中發現可以對該模型進行進一步的優化。正如上文所說,大卷積核的空間集中性會下降,抽象性比較高,適合放在網絡的高層。在保留高層的Inception5結構不變的情況下,中間層的Inception4可以將5×5卷積核改成2個3×3卷積核連接,理論上計算可以快1.39倍,如圖3所示。
底層的Inception3可以刪除5×5的卷積核,增加3×3卷積核的通道數,理論上計算可以快2.78倍,如圖4所示,調整以后模型的準確率與之前相比基本沒有差別。改進后的模型識別速度和識別準確率如表2所示。
GoogleNet模型是一個通用模型,采用droupout層減少數據的過擬合問題,當樣本數據較大時沒什么問題,然而,實際工作中由于管道表面缺陷的圖形樣本采集較為困難,樣本數據比較少,此時,若用droupout層采用GoogleNet中40%的失效率會過分地夸大干擾信息或縮小有用的管道表面缺陷信息,而減少droupout的失效率又會帶來過擬合的風險。
另外,GoogleNet中為了更有效地處理數據以及減少過擬合,引入了LRN層(Local Response Normalization)。LRN層最早提出于AlexNet,用于處理局部數據,通過局部神經元的內部競爭,增大響應值較大的值,抑制響應值較小的值,從而增大模型的泛化能力。但是LRN層近年來爭議比較大,2015年 Very Deep Convolutional Networks for Large?Scale Image Recognition會議上提出LRN層在準確率上并沒有增加而在計算量上卻增加不少。