牛慧余,包騰飛,2,3,李揚(yáng)濤,黃思文
(1.河海大學(xué)水利水電學(xué)院,江蘇 南京 210098;2.河海大學(xué)水文水資源與水利工程科學(xué)國家重點實驗室,江蘇 南京 210098;3.三峽大學(xué)水利與環(huán)境學(xué)院,湖北 宜昌 443002)
混凝土壩是最常見的水工建筑物,由于其長期暴露于大氣與水環(huán)境中,因此在流水沖刷、化學(xué)腐蝕、凍融破壞等外界作用下,表面容易出現(xiàn)裂縫[1-2],嚴(yán)重危害了混凝土壩的整體結(jié)構(gòu)安全。工程中,識別混凝土壩裂縫,并對其進(jìn)行及時修補(bǔ),對保障大壩在全生命周期內(nèi)安全運行具有重要意義。
傳統(tǒng)的混凝土壩裂縫檢測主要依賴管理人員的定期巡檢,人工巡檢耗時長、效率低。通過拍攝設(shè)備采集裂縫圖像,利用圖像處理算法進(jìn)行自動化識別可提升裂縫檢測效率。目前混凝土結(jié)構(gòu)裂縫圖像處理算法主要有圖像分割算法(閾值分割[3-6]、邊緣檢測[7-8]與數(shù)學(xué)形態(tài)學(xué)[9-10]等)和機(jī)器學(xué)習(xí)算法,多應(yīng)用于道路、橋梁等傳統(tǒng)建筑領(lǐng)域:劉曉瑞等[11]基于不同的閾值分割算法,給出了隧道表面裂縫快速檢測技術(shù);徐港等[12]提出了一種基于多種連通域特征的工程結(jié)構(gòu)表面裂縫提取方法;Katakam[13]對路面圖像進(jìn)行分塊,并進(jìn)行閾值分割,成功提取出路面裂縫,但是該算法對圖像質(zhì)量要求比較高,且未對背景復(fù)雜的情況進(jìn)行驗證;Nishikawa等[14]提出了一種強(qiáng)魯棒性的針對混凝土建筑物表面裂縫檢測的方法;Chun等[15]提出一種基于兩步輕度梯度提升機(jī)的混凝土表面裂縫自動檢測方法,并以一座運行多年的混凝土橋作為實例驗證模型有效性。針對水工建筑物的裂縫檢測問題,王一兵等[16]提出了基于LabVIEW+VDM的混凝土壩裂縫檢測方法;張小偉等[17]提出一種基于自適應(yīng)區(qū)生長和局部K-Means聚類的壩面裂縫檢測算法;Rezaiee-Pajand等[18]提出了一種基于遺傳算法的混凝土溢流重力壩裂縫檢測方法,提取二維裂縫特征進(jìn)行非線性分析,最終確定裂縫的位置和大小。但圖像處理算法多針對某一特定場景設(shè)計,檢測過程需要對每一張圖像人工調(diào)參,并手動構(gòu)建裂縫特征,很依賴工程師的調(diào)參經(jīng)驗,具有很大的局限性。此外,數(shù)字圖像處理方法對海量圖像數(shù)據(jù)處理效率較低,難以滿足裂縫圖像快速識別的要求。
隨著計算機(jī)技術(shù)的發(fā)展,基于深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)在目標(biāo)檢測領(lǐng)域具有良好的效果,可以自主地從圖像數(shù)據(jù)集中學(xué)習(xí)特征,避免了傳統(tǒng)圖像處理算法存在的局限性。目前CNN卷積神經(jīng)網(wǎng)絡(luò)已在混凝土結(jié)構(gòu)裂縫檢測領(lǐng)域得到應(yīng)用[19-20],雖然其可以進(jìn)行混凝土裂縫圖像識別,但無法精細(xì)化分割裂縫的形態(tài)、獲取裂縫特征。針對這一問題,He等[21]通過改進(jìn)Faster R-CNN[22]網(wǎng)絡(luò),于2017年提出了Mask R-CNN,解決了精細(xì)化像素級的實例分割問題。
混凝土壩裂縫圖像語義信息較為豐富,裂縫呈現(xiàn)單裂縫、多裂縫、交叉裂縫、龜裂等多形態(tài)特征,對深度學(xué)習(xí)模型的特征提取能力要求較高,且背景區(qū)域可能含有噪聲、光照陰影等不利因素,嚴(yán)重影響模型的裂縫識別效果。為克服復(fù)雜環(huán)境背景因素干擾,提升模型的圖像特征提取能力,本文基于多種數(shù)字圖像處理手段對混凝土壩裂縫圖像進(jìn)行預(yù)處理,并在Mask R-CNN的基礎(chǔ)上,將 ResNet101+FPN網(wǎng)絡(luò)作為主干網(wǎng)絡(luò)進(jìn)行結(jié)構(gòu)改進(jìn),提升模型的特征提取能力,對復(fù)雜背景下的混凝土大壩裂縫圖像進(jìn)行精細(xì)分割,獲取裂縫的幾何形態(tài)特征,并對改進(jìn)Mask R-CNN(以下簡稱本文模型)進(jìn)行驗證。
混凝土壩服役環(huán)境惡劣,設(shè)備采集的裂縫圖像普遍存在光照不均、噪聲干擾多的問題。此外,無人機(jī)等移動設(shè)備在圖像獲取過程中,易出現(xiàn)運動模糊,這些不利因素嚴(yán)重影響視覺檢測模型的裂縫識別效果。基于此,本文提出一套組合圖像預(yù)處理方法,可有效克服混凝土壩裂縫圖像光照不均、噪聲干擾和運動模糊的問題,提升后續(xù)裂縫分割與提取效果。
a.直方圖均衡化。直方圖均衡化是一種有效處理圖像光照不均的圖像增強(qiáng)技術(shù)。直方圖統(tǒng)計了圖像中灰度值出現(xiàn)的概率分布情況,低照度圖像的直方圖分量集中于低灰度級區(qū)域,而灰度鮮明、對比度強(qiáng)的圖像則集中于高灰度級區(qū)域。因此,可通過改變圖像的直方圖分布,使圖像像素的每級灰度都分布均勻,以增強(qiáng)對比度,突出裂縫信息表達(dá)。直方圖均衡計算公式為
(1)
式中:k為歸一化前的灰度級;sk為均衡化后各像素的灰度級;l為灰度級數(shù)量;ri為灰度;p(ri)為相應(yīng)的直方圖灰度概率值。
b.雙邊濾波。雙邊濾波是一種消除圖像背景噪聲,增強(qiáng)重要特征信息的圖像處理方法,能夠保留邊緣特征,使邊緣不易被柔化處理?;炷翂螆D像中裂縫邊緣特征屬于高頻細(xì)節(jié)信息,因此采用非線性濾波處理能夠有效地保留裂縫細(xì)節(jié)信息。雙邊濾波是常用的非線性濾波器,根據(jù)鄰域像素加權(quán)組合輸出濾波后的像素值。雙邊濾波計算公式為
(2)
式中:fj,h為中心點坐標(biāo)濾波后的值;Im,n為領(lǐng)域(m,n)內(nèi)的圖像像素;wj,h,m,n表示像素(j,h)對應(yīng)領(lǐng)域(m,n)的權(quán)重。
c.維納濾波。維納濾波是一種自適應(yīng)最小均方誤差濾波方法,在圖像復(fù)原領(lǐng)域有著良好的效果。它能根據(jù)圖像的局部方差調(diào)整濾波器的輸出,局部方差越大,對圖像的平滑作用越強(qiáng),最終目的是使復(fù)原圖像與原始圖像的均方誤差最小。
實例分割是一種兼具目標(biāo)分類、目標(biāo)檢測和像素級分割的圖像識別任務(wù),在目標(biāo)檢測的基礎(chǔ)上進(jìn)行圖像掩碼的分割以達(dá)到實例分割的效果,可以看作語義分割與目標(biāo)檢測的結(jié)合。Mask R-CNN是一種通用實例分割模型,在Faster R-CNN網(wǎng)絡(luò)的基礎(chǔ)上引入了掩碼預(yù)測分支,并以ROI Align層替換Faster R-CNN網(wǎng)絡(luò)中的ROI Pooling 層,避免了RPN網(wǎng)絡(luò)輸出的特征圖不是按照像素對齊影響掩碼預(yù)測分支精度的問題。
Mask R-CNN網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,基本流程為:①將原始圖像傳入主干網(wǎng)絡(luò)中獲取特征圖,對特征圖中的每一點設(shè)定ROI,獲得多個ROI候選框;將ROI候選框輸入?yún)^(qū)域生成網(wǎng)絡(luò)(RPN)進(jìn)行前景或后景的二值分類候選框回歸,以獲得目標(biāo)的候選框。②獲得特征圖和候選框后,傳入ROI Align層將特征圖與目標(biāo)的候選框進(jìn)行匹配,并池化為固定大小,借助全連接層將特征圖輸入目標(biāo)檢測網(wǎng)絡(luò),利用分類分支對每個ROI區(qū)域輸出對應(yīng)的最大置信度標(biāo)簽。③檢測分支預(yù)測并獲得每個ROI區(qū)域的邊界框。④掩碼預(yù)測分支預(yù)測每個ROI最大置信度的分割掩碼,將各分支輸出進(jìn)行匯總,得到包含目標(biāo)類別、分類框和分割掩碼的圖像,完成像素級實例分割。
圖1 Mask R-CNN網(wǎng)絡(luò)結(jié)構(gòu)
神經(jīng)網(wǎng)絡(luò)的深度是影響模型訓(xùn)練效果的重要因素,網(wǎng)絡(luò)層數(shù)增加,意味著提取到的目標(biāo)特征更豐富。但訓(xùn)練很深的神經(jīng)網(wǎng)絡(luò)是一件比較難的事情。隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的增加,網(wǎng)絡(luò)學(xué)習(xí)的效果反而比層數(shù)較少的神經(jīng)網(wǎng)絡(luò)更差[23],這不僅是模型過擬合的原因,梯度爆炸或梯度消失成為訓(xùn)練更深的神經(jīng)網(wǎng)絡(luò)的阻礙,導(dǎo)致訓(xùn)練無法收斂。
He等[23]提出了深度殘差網(wǎng)絡(luò)(deep residual networks,ResNet),在不增加網(wǎng)絡(luò)計算復(fù)雜度的前提下,解決了訓(xùn)練深層次神經(jīng)網(wǎng)絡(luò)梯度彌散而導(dǎo)致無法收斂的問題。筆者通過多次訓(xùn)練對比發(fā)現(xiàn),對于混凝土壩裂縫的目標(biāo)特征,Mask R-CNN骨干網(wǎng)絡(luò)選取ResNet101時的識別效果比ResNet50更好(圖2)。因為混凝土大壩裂縫屬于精細(xì)的圖像特征,更深層次的神經(jīng)網(wǎng)絡(luò)有利于進(jìn)行精細(xì)識別,提高網(wǎng)絡(luò)的特征抽象能力。但直接使用ResNet101的最后一層全連接層作為特征輸出,對微小裂縫的特征檢測效果較差。這是因為對于目標(biāo)檢測網(wǎng)絡(luò),淺層次網(wǎng)絡(luò)提取的特征語義信息較少但目標(biāo)位置準(zhǔn)確;深層次網(wǎng)絡(luò)提取特征的語義信息豐富,但目標(biāo)位置不夠精準(zhǔn)。特征金字塔網(wǎng)絡(luò)(feature pyramid networks,F(xiàn)PN)[24]設(shè)計了上采樣與側(cè)向連接結(jié)合的結(jié)構(gòu),上采樣可以獲取更豐富語義信息,側(cè)向連接可以獲得更準(zhǔn)確的目標(biāo)位置信息。特征金字塔網(wǎng)絡(luò)結(jié)構(gòu)兼顧了底層特征和語義信息,不同尺度提取的特征都具有豐富的語義信息。因此,本文選取ResNet101+FPN作為Mask R-CNN的骨干網(wǎng)絡(luò)對混凝土壩裂縫圖像進(jìn)行特征提取。
圖2 不同層數(shù)ResNet網(wǎng)絡(luò)下Mask R-CNN的訓(xùn)練過程對比
為了更直觀地評價Mask R-CNN對混凝土大壩裂縫圖像的分割效果,選取損失函數(shù)、準(zhǔn)確率、平均精確度(AP)定量地評估裂縫分割效果。
損失函數(shù)描述了模型預(yù)測值與真實值間的差距大小,其在訓(xùn)練過程中指導(dǎo)模型朝著收斂的方向前進(jìn)。Mask R-CNN實例分割任務(wù)中,損失函數(shù)L=Lcls+Lbox+Lmask[21],其中Lcls、Lbox、Lmask分別為分類誤差、檢測誤差和分割誤差。損失函數(shù)越小,檢測效果越好。
準(zhǔn)確率A指在目標(biāo)檢測任務(wù)中,使用模型對數(shù)據(jù)集進(jìn)行分類,分類正確的樣本數(shù)占總樣本數(shù)數(shù)的比例:
(3)
式中:TP為實際為正例且被分類器劃分為正例的樣本數(shù);TN為實際為正例且被分類器劃分為負(fù)例的樣本數(shù);FP為實際為負(fù)例但被分類器劃分為正例的樣本數(shù);FN為實際為負(fù)例且被分類器劃分為負(fù)例的樣本數(shù)。A越大,表示檢測結(jié)果越準(zhǔn)確。
平均精確度是使用coco數(shù)據(jù)集實現(xiàn)目標(biāo)檢測任務(wù)和實例分割任務(wù)的通用評價指標(biāo)[21]。本文AP50、AP75、APS、APM、APL分別為交并比閾值為0.50、0.75及目標(biāo)尺寸為小、中、大3個級別的平均精確度。
數(shù)據(jù)采集于中國西北地區(qū)某混凝土大壩,為了方便訓(xùn)練、提高訓(xùn)練速度,將5 616×3 744的原圖分割后縮放為200×200的裂縫圖像,并根據(jù)第1.1節(jié)的圖像增強(qiáng)方法對裂縫圖像進(jìn)行預(yù)處理,以降低裂縫圖像不利因素干擾。
考慮到混凝土壩裂縫形態(tài)特征多樣、噪聲干擾多、語義信息豐富的特點,選取500張包含單裂縫、多裂縫、交叉裂縫、龜裂等多種裂縫形態(tài)特征以及背景含有噪聲干擾的裂縫圖像,按照訓(xùn)練集、驗證集測試集為3∶1∶1的比例劃分?jǐn)?shù)據(jù)集圖像,即訓(xùn)練集300張、驗證集100張、測試集100張,其中訓(xùn)練集用于模型訓(xùn)練,驗證集用于模型驗證及參數(shù)調(diào)整,測試集用于測試模型泛化能力。
Mask R-CNN屬于有監(jiān)督學(xué)習(xí)模型,需要對裂縫圖像進(jìn)行標(biāo)注構(gòu)建訓(xùn)練集。標(biāo)注時沿著裂縫輪廓取點進(jìn)行多邊形的標(biāo)注(圖3),得到含有目標(biāo)裂縫的輪廓掩碼信息的json文件,最終json文件轉(zhuǎn)化為coco數(shù)據(jù)集輸入神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。
圖3 裂縫圖像標(biāo)注過程
本文采用的深度學(xué)習(xí)模型是商湯和香港中文大學(xué)聯(lián)合開源的Mmdetection架構(gòu)下的Mask R-CNN開源代碼(https://github.com/open-mmlab/mmdetection),骨干網(wǎng)絡(luò)使用ResNet101+FPN,在PC試驗平臺進(jìn)行訓(xùn)練,試驗平臺配置:操作系統(tǒng)為Windows 10,CPU為AMD Ryzen 5 3600,GPU為GeForce GTX 1660 SUPER,GPU加速為CUDA 10.1+cuDNN7.6.5,深度學(xué)習(xí)框架為Pytorch1.6。
根據(jù)試驗訓(xùn)練數(shù)據(jù)集和平臺配置要求,模型訓(xùn)練配置參數(shù)設(shè)置如下:目標(biāo)類別數(shù)為1,檢測類別為“crack”;批次處理大小為2,線程加載數(shù)為1;訓(xùn)練輪次為100,初始學(xué)習(xí)率為0.02,并使用SGD優(yōu)化器進(jìn)行梯度下降優(yōu)化,并采取在學(xué)習(xí)輪次為8和12后,學(xué)習(xí)率乘以0.1的學(xué)習(xí)策略。
為驗證本文模型對混凝土大壩裂縫圖像分割的效果,按照第1.3節(jié)提出的改進(jìn)方法進(jìn)行模型訓(xùn)練,對訓(xùn)練過程進(jìn)行損失函數(shù)和準(zhǔn)確率的可視化輸出。利用訓(xùn)練得到的權(quán)重文件,測試100張測試集圖像的裂縫分割效果,并引入多種對比模型評估本文模型在測試集上的裂縫識別精確度和推理速度。
由圖4可知,隨著訓(xùn)練輪次的增加,損失函數(shù)不斷降低,最終收斂在0.125附近,說明模型訓(xùn)練充分,收斂良好;準(zhǔn)確率隨著訓(xùn)練輪次的增加不斷升高最終逼近100%,說明隨著模型的不斷訓(xùn)練,裂縫圖像的分割效果越來越好,證明本文模型對于混凝土大壩裂縫圖像分割有著很強(qiáng)的可行性。
圖4 Mask R-CNN訓(xùn)練過程可視化結(jié)果
如圖5所示,面對多裂縫形態(tài)特征的圖像,模型對每個裂縫單體進(jìn)行了分割,掩碼識別結(jié)果與預(yù)先標(biāo)注掩碼高度吻合,證明模型分割效果良好,實現(xiàn)了對裂縫圖像的實例分割任務(wù)。
圖5 測試集裂縫圖像識別結(jié)果
為驗證算法去噪效果,選取3張包含光照不均、噪聲干擾和運動模糊干擾的裂縫圖像進(jìn)行圖像預(yù)處理,結(jié)果如圖6所示。經(jīng)預(yù)處理,光照不均圖像對比度明顯增強(qiáng),裂縫細(xì)節(jié)更加清晰;噪聲干擾圖像裂縫周圍背景像素變得更加平滑柔和,凸顯了裂縫特征;運動模糊圖像裂縫明顯清晰,證明本文采用的圖像增強(qiáng)方法效果良好。模型基于處理后的裂縫圖像實現(xiàn)裂縫識別和分割,說明改進(jìn)Mask R-CNN模型能有效檢測復(fù)雜條件下混凝土大壩裂縫圖像。
表2 掩碼分割平均精確度 單位:%
表3 模型推理速度
圖6 復(fù)雜條件下裂縫圖像預(yù)處理及識別結(jié)果
通過與Mask R-CNN-R50、Cascade-Mask R-CNN、Yolact++對比,在相同的數(shù)據(jù)集上訓(xùn)練并在測試集對訓(xùn)練成果進(jìn)行評估,驗證本文模型的優(yōu)越性。Cascade-Mask R-CNN、Yolact++是目標(biāo)檢測領(lǐng)域近些年較新提出的實例分割模型,在目標(biāo)檢測領(lǐng)域有著良好的效果。不同模型在測試集上評估結(jié)果對比如表1~3所示。
表1 目標(biāo)檢測平均精確度 單位:%
由表1~3可知,改進(jìn)Mask R-CNN模型比Mask R-CNN在目標(biāo)檢測和掩碼分割兩方面的平均精確度分別提升了40.7%和16.2%,圖像識別精確度顯著提升;與Cascade-Mask R-CNN、Yolact++這2種較新模型相比,改進(jìn)Mask R-CNN模型在掩碼分割精確度方面也有一定的優(yōu)勢;圖像評估速度方面,Yolact++是一種檢測速度非??斓膶嵗指钅P?,在coco數(shù)據(jù)集上最高可達(dá)33.5幀/s[25]。本文模型的評估速度優(yōu)于其他對比模型,僅次于Yolact++模型,但由于GPU的限制,速度差距不是很明顯。
改進(jìn)Mask R-CNN對混凝土壩裂縫圖像識別效果較好,可以實現(xiàn)裂縫圖像實例分割,目標(biāo)檢測和分割掩碼的平均精確度值達(dá)76.3和61.9;與ResNet50結(jié)構(gòu)相比,檢測和分割平均精確度分別提升了40.7%和16.2%;與Cascade-Mask R-CNN、Yolact++模型相比,分割精確度方面也有一定的優(yōu)勢;模型推理速度方面,本文模型較Cascade-Mask R-CNN更有優(yōu)勢,僅次于推理速度較快的Yolact++模型,檢測速度約為13.5幀/s。
現(xiàn)有研究內(nèi)容下,模型對于混凝土大壩裂縫圖像檢測的性能尚有很大的提升空間,如水下檢測時,考慮混凝土結(jié)構(gòu)表面附著泥沙或水生動植物等噪聲干擾,增加剝落、孔洞等多種大壩損傷特征和基于無人機(jī)搭載高清攝像頭的大壩實時損傷識別等。