陳建立
(四川建筑職業(yè)技術學院 建筑系, 四川 德陽 618000)
隨著人工智能方法的迅速發(fā)展,人工智能方法在各行各業(yè)都得到了廣泛的運用。混凝土材料是當下土木行業(yè)的主要原材料之一,如建筑、橋梁和隧道等。由于橋梁和隧道工程所處的環(huán)境非常復雜,混凝土裂縫檢測顯得十分困難,常常需要人工進行檢測。但人工檢測存在許多的弊端,一方面人工檢測時可能會出現(xiàn)安全問題,如橋梁橋墩檢測;另一方面,人工檢測的檢測范圍具有一定的限制,太狹小的地方人工不能檢測到,如隧道檢測等。因此,人工智能方法在混凝土檢測中得到了廣泛的研究。
楊松等通過分析混凝土裂縫圖像面積-周長關系的分形規(guī)律,提出了一種結合簡單灰度骨架提取和分形優(yōu)化的裂縫識別算法[1]。徐愛華等針對水泥混凝土路面裂縫識別的干擾和噪聲問題,提出一種結合圖像增強和數(shù)學形態(tài)學的裂縫檢測方法[2]。劉清元等結合數(shù)字圖像處理技術,提出了判斷混凝土裂紋的綜合算法[3]。肖利芳等提出基于Sobel算子的改進邊緣檢測算法對圖像進行處理,能夠準確識別混凝土表面裂縫的邊緣[4]。阮小麗等基于既有圖像預處理技術,提出一種新的裂縫提取及寬度計算方法[5]。衛(wèi)軍等設計了一套提取裂縫特征信息的系統(tǒng),實現(xiàn)對寬度和長度特征的測量[6]。郭全民等采用圖像處理技術實現(xiàn)了路面裂縫的自動識別和病害參數(shù)的自動提取[7]。方志等提出采用在混凝土表面粘貼純色標定塊來標定、修正原始圖像[8]。查旭東等采用計算機圖像處理技術進行裂縫圖像分析,提出了裂縫寬度的圖像識別方法[9]。朱力強等基于SVM的近似裂縫結構分析法算法對隧道表面裂縫圖像各成分進行提取,從而達到識別裂縫的目的[10]。王沖等提取破損圖形的形狀特征實現(xiàn)了典型路面破損的分類[11]。許薛軍等研究了基于數(shù)字圖像的橋梁裂縫檢測方法,深入分析評價了圖像灰度化、邊緣檢測等圖像處理算法[12]。韓曉健等建立基于深度卷積神經(jīng)網(wǎng)絡的裂縫識別模型,在圖像上自動定位裂縫并結合圖像局域閾值分割方法提取裂縫[13]。
上述研究學者通過建立神經(jīng)網(wǎng)絡模型、改進算法等對混凝土裂縫檢測開展研究。但在檢測裂縫過程中,有許多參數(shù)需要進一步調整。為了減少計算時間,需要對圖像進行重構,而重構的采樣率需要調試得出;為了提高混凝土裂縫的檢測效率,需要選擇出最優(yōu)的二值化閾值;在檢測過程中,會出現(xiàn)邊緣陰影,因而需要選擇不同的計算算子來進行檢測。本文根據(jù)上述思路,系統(tǒng)地介紹了混凝土裂縫檢測過程中各參數(shù)的選擇情況。通過建立卷積神經(jīng)網(wǎng)絡檢測模型,為今后混凝土裂縫檢測提供一種新的方法。
本文采用的是廣西南寧星之健體育設施有限公司生產(chǎn)的水泥,化學成分如表1所示,性能如表2所示。采用德州中瑞土工材料工程有限公司生產(chǎn)的礦渣,德陽產(chǎn)品加工廠生產(chǎn)的砂和石子,水為普通的自來水,具體的混凝土配合比如表3所示。
表1 水泥化學成分 Tab.1 Chemical composition of cement %
表2 水泥性能Tab.2 Cement properties
表3 混凝土配比Tab.3 Concrete proportioning (kg·m-3)
卷積神經(jīng)網(wǎng)絡(CNN)是由Hubel和Wiesel在20世紀所提出的概念[14-15],是近年來發(fā)展較為完善的一種深度學習神經(jīng)網(wǎng)絡。該算法通過多個串行的卷積層和池化層間隔排列的方式逐層地學習數(shù)據(jù)特征,避免了傳統(tǒng)機器學習算法中需要人工提取數(shù)據(jù)特征的種種弊端,其結構如圖1所示[16]。
圖1 卷積神經(jīng)網(wǎng)絡結構Fig.1 Structure of convolutional neural network
從圖1中可以看出,卷積神經(jīng)網(wǎng)絡包含輸入層、卷積層、池化層和輸出層等。其中卷積層是卷積神經(jīng)網(wǎng)絡的重要特點,對元素進行卷積運算以提取輸入圖像的特征,進行語義理解[17]。卷積層的參數(shù)包括一系列小尺寸的濾波器。在進行預測或訓練時,每個濾波器在特征圖上沿著橫縱兩個方向滑動會生成新的特征圖。通常一個卷積層中,可以輸入一個大小為9×9×9的特征圖,經(jīng)過卷積運算輸出一個大小為3×3×3的特征圖,如圖2所示。
圖2 卷積層Fig.2 Convolution layer
池化層一般位于卷積層之間,主要是為了減少特征圖的大小,即減小特征圖的寬度和高度,如圖3所示[18]。
圖3 池化層Fig.3 Pool layer
一個圖像文件可以采用對應尺寸大小的矩陣來表示,矩陣中的數(shù)值即為圖像像素在對應位置上的亮度。通常圖像采集系統(tǒng)獲得的照片是彩色的RGB圖像,彩色圖像用三維矩陣(a×b×3)表示[19]。
彩色圖像的像素值由R、G、B三個分量決定,每個值的取值范圍在0~255,即每個像素值有256×256×256種可能,直接對彩色圖像進行處理,會降低計算效率,增加圖像處理的難度。通常對初始獲得的裂縫圖像進行灰度化、濾波等各種預處理,以便實現(xiàn)更好的裂縫識別效果。選取R、G、B三個通道的任意一個通道值作為灰度圖像灰度值。
ImgGray (a0,b0) =R(a0,b0) or
ImgGray (a0,b0) =G(a0,b0) or
ImgGray (a0,b0) =B(a0,b0),
式中,ImgGray (a0,b0)為灰度圖像在(a0,b0)處的灰度值。
在MATLAB中調用卷積神經(jīng)網(wǎng)絡函數(shù),首先對圖片進行預處理:圖片重構,這一步驟能夠為減少計算時間做鋪墊。從圖4可以得出,當采樣率為0.1時,重構圖像顯得有點模糊,與原圖相比,混凝土部分都比較粗糙,這說明在重構圖像沒有采集到精確的圖像信息。當采樣率為0.3與0.4時,重構圖像基本一致,與原圖相比也幾乎無差異,這說明當采樣率達到0.3時就足以重構圖像。
在MATLAB中設定不同的二值化閾值來分析二值化對圖像識別的影響,以確定最佳閾值,如圖5所示。從圖5中可以看出,卷積神經(jīng)網(wǎng)絡能夠識別混凝土中的裂縫。當二值化閾值為0.3時,能夠看出裂縫的所在位置及走勢,但相比于二值化為0.4時的圖像不夠清晰。而當二值化閾值在0.5以上時,很明顯地能看到裂縫其他位置出現(xiàn)陰影,即邊緣效應,因此在該圖片識別過程中二值化閾值為0.4為最佳。
圖4 圖像重構Fig.4 Image reconstruction
圖5 二值化閾值的影響Fig.5 Effect of binarization threshold
根據(jù)上述結果,即二值化閾值為0.4為最佳,但上述顯示出過高的二值化閾值會出現(xiàn)邊緣效應。因此本節(jié)在MATLAB中選擇3種邊緣檢測算子(拉普拉斯算子、索貝爾算子和Canny算子)對圖片的邊緣進行檢測,如圖6所示。
圖6 邊緣檢測Fig.6 Edge detection
從圖6以看出,3種算子在邊緣檢測中都能夠準確地識別出裂縫的形態(tài)與特征。每個算子識別特點均不同,拉普拉斯算子通過邊緣檢測得出了一條斷斷續(xù)續(xù)的曲線,但在曲線上下兩側均不同程度地出現(xiàn)了亮點;Canny算子在邊緣檢測中的識別效率最高,裂縫發(fā)展過程顯得最為明顯,并且能夠標記出完整的裂縫圖像;索貝爾算子通過邊緣檢測能夠較為清晰地看出裂縫發(fā)展情況,但在裂縫的中間處出現(xiàn)不連續(xù)的情況,導致所呈現(xiàn)出的裂縫形態(tài)不是十分完整。因此,在卷積神經(jīng)網(wǎng)絡中采用Canny算子進行邊緣檢測。
為了驗證3種算子(拉普拉斯算子、索貝爾算子和Canny算子)對圖片邊緣檢測識別準確的同時對裂縫本身也能夠進行準確識別,調用Matlab程序對裂縫進行識別,如圖7所示。
圖7 裂縫檢測Fig.7 Crack detection
從圖7可以得出,3種算子在裂縫檢測過程中能夠識別出裂縫的大致走向與形貌。但從圖中可以總結出Canny算子在邊緣檢測和裂縫檢測中的效果是最佳的,索貝爾算子的邊緣檢測和裂縫檢測的效果比拉普拉斯算子要好。
通過Matlab工具箱建立了卷積神經(jīng)網(wǎng)絡模型,并以此對混凝土圖片的重構、二值化閾值、混凝土裂縫的邊緣和混凝土裂縫的走向形貌進行檢測,得到了以下結論:
預處理圖像能夠減少計算時間,而合適的采樣率對圖片的重構十分重要。當采樣率較小時,重構的圖像會顯得十分模糊;采樣率越大,重構圖片會越清晰,但處理時間會明顯加長。對于本文混凝土圖片處理時,采樣率為0.3時最佳。
隨著二值化閾值的增大,裂縫檢測效率逐漸增大隨后下降。二值化閾值較小時,會導致裂縫檢測不連續(xù),不清晰;而過高的二值化閾值會導致圖片出現(xiàn)較強的邊緣效應;對于本文混凝土圖片處理時,二值化閾值為0.4時最佳。
3種檢測算子(拉普拉斯算子、索貝爾算子和Canny算子)在邊緣檢測和裂縫檢測中都能夠識別出裂縫的形態(tài)與走向。但不同算子的檢測效率都不同,Canny算子對邊緣檢測和裂縫檢測的效果最佳,索貝爾算子的效果次之,拉普拉斯算子的效果較差。