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