蔣買勇,莊澤麟,譚文波,李金友
(1. 湖南水利水電職業(yè)技術(shù)學(xué)院,湖南 長沙 410131; 2. 武漢大學(xué)水利水電學(xué)院,湖北 武漢 430072)
涵洞作為大壩、堤防、灌區(qū)等水利工程的重要輸水建筑物,一般采用混凝土或砌體結(jié)構(gòu),具有灌溉、供水、導(dǎo)流等功能。隨著長時間的運行服役,涵洞易引發(fā)滲漏造成潰口事故[1],對于以磚砌結(jié)構(gòu)為主體的涵洞,裂紋、下沉塌腰、風(fēng)化剝落、裂損變形等方面的病害尤為突出,嚴重影響涵洞的正常運行,危及工程安全[2,3]。
涵洞的病害定位與識別,是涵洞安全評價工作的基礎(chǔ)。長期以來一直采用人工統(tǒng)計,配合無損檢測、鉆孔取芯等方法進行驗證;另外,長距離的水工涵洞檢測受到現(xiàn)場光照條件惡劣、檢測窗口期短、洞長較長且高低起伏劇烈等因素影響,傳統(tǒng)方式檢測較為困難[4]。
隨著計算機視覺技術(shù)和深度學(xué)習(xí)理論的發(fā)展,在隧涵洞數(shù)字影像的基礎(chǔ)上進行快速、無損化的病害識別成為一種新的技術(shù)方案。Krizhevsky 等[5]提出深度卷積神經(jīng)網(wǎng)絡(luò) (Deep Convolutional Neural Networks, DCNN),解決了過擬合問題對訓(xùn)練的影響。自深度卷積神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)提出后,基于深度學(xué)習(xí)的目標檢測方法迅速發(fā)展。目前主流的兩類檢測方法,一類為先進行目標檢測候選框的預(yù)測,再對候選框的類別及位置進行預(yù)測的兩階段目標檢測法,最具代表性的有R-CNN(Region Convolutional Neural Networks)[6]、Fast R-CNN(Fast Region-Based Convolutional Neural Networks)[7]以及Faster R-CNN(Faster Region-Based Convolutional Neural Networks)[8]等;另一類為將候選框的預(yù)測與類別及位置的預(yù)測置為同一CNN 網(wǎng)絡(luò)中的一階段目標檢測法,最具代表性的有YOLO(You Only Look Once)[9]、SDD(Single Shot MultiBox Detector)[10]等。
然而,砌體結(jié)構(gòu)涵洞存在砌塊不規(guī)則變形、個別砌塊突起等大量干擾因素。針對上述特點,本文提出了一種基于YOLOv5 算法識別砌縫擴張的方法,通過將目標檢測的識別結(jié)果利用優(yōu)化算法進行優(yōu)化,從而達到對目標的精確識別。該方法具有占存小、速度快以及精度高等優(yōu)點,能夠快速準確識別目標區(qū)域。
合東水庫位于湘江水系漣水支流巖江上游,總庫容2 501萬m3,是一座以灌溉為主,結(jié)合防洪、養(yǎng)殖等綜合效益的中型水利工程。該水庫建成于1976年,為黏土心墻壩,最大壩高39 m,壩頂寬6 m,壩頂軸長146 m,壩內(nèi)輸水涵洞采用城門洞型砌體結(jié)構(gòu),總長約210 m,如圖1 所示。由于工程施工質(zhì)量差、運行久,輸水涵洞滲漏嚴重,經(jīng)安全鑒定為三類壩病險水庫[11]。對水庫輸水涵洞進行病險精準識別時,受現(xiàn)場光照條件較差、檢測窗口期短等影響,傳統(tǒng)檢測方式精準度較低,統(tǒng)計難度大。
圖1 輸水涵洞位置航拍圖及洞口照片F(xiàn)ig.1 Aerial photo of hydraulic culvert location and portal photo
砌體拱涵結(jié)構(gòu)中最普遍的病害是結(jié)構(gòu)砌縫的張開,涵洞主要由砌塊及膠凝材料連接而成,經(jīng)過長時間的水流沖刷及風(fēng)化等作用,極易出現(xiàn)砌縫開裂、張開的情況,當水流進入砌縫時,會加速結(jié)構(gòu)的損害,影響整體結(jié)構(gòu),嚴重時會危及結(jié)構(gòu)的安全。砌體拱涵結(jié)構(gòu)滲水極易發(fā)生在拱頂及拱腰處,主要原因是砌體之間因開裂而形成縫隙,在水壓作用下,水流會從結(jié)構(gòu)的一側(cè)流至另一側(cè),從而形成滲漏的通道,在水流的持續(xù)沖刷作用下甚至?xí)霈F(xiàn)磚砌脫落的情況,縫隙不斷擴展,直至嚴重危及磚砌體涵洞結(jié)構(gòu)安全。結(jié)合實際工程,磚砌體涵洞中砌縫擴張相比較其他病害而言是危及結(jié)構(gòu)安全的重要因素,在進行評價時,主要關(guān)注其形狀及顏色特征。
在形狀上,正常砌縫[圖2(a)]主要表現(xiàn)為規(guī)則的長條狀,寬度一般為7.5~12.5 mm,脫空的砌縫[圖2(b)]主要表現(xiàn)為規(guī)則的長條狀,整體寬度大小一致,無明顯變化,張開的砌縫主要表現(xiàn)為規(guī)則的長條狀[圖2(c)]或不規(guī)則的長條狀[圖2(d)],整體寬度不同,一般呈線性變化;在顏色上,正常砌縫表現(xiàn)為與背景顏色相近的顏色,脫空砌縫與張開砌縫表現(xiàn)為具有一定寬度的深色。
采用YOLOv5 算法的YOLOv5m 版本作為砌縫擴張檢測與分類的模型,其體積較小,權(quán)重大小僅為42.5M。算法框架如圖3所示。
圖3 YOLOv5m模型結(jié)構(gòu)Fig.3 YOLOv5m model structure
輸入端:將輸入的圖片縮放至網(wǎng)格的輸入大小,并進行歸一化操作,在訓(xùn)練時使用由CutMix 改進而來的Mosaic 數(shù)據(jù)增強操作提高模型訓(xùn)練的速度與精度,以及采用自適應(yīng)錨框計算與自適應(yīng)圖片縮放方法自動計算最佳錨框值。
基準網(wǎng)絡(luò)(Backbone):用以提取通用特征。YOLOv5m 采用Focus 模塊、CBL 層、跨階段局部網(wǎng)絡(luò)(CSP)層及空間池化金字塔(SPP)層,由4 個CBL 層、3 個CSP 層、1 個Focus 層和1 個SPP層組成,其中Focus 模塊主要是通過slice 操作對輸入的圖片進行裁剪操作,CBL 層是卷積層、批量歸一化層于Leaky ReLU 激活函數(shù)的串聯(lián)結(jié)構(gòu)。
Neck 網(wǎng)絡(luò):進一步提升特征的多樣性及魯棒性,采用了改進的FPN+PAN 結(jié)構(gòu),加強了網(wǎng)絡(luò)的特征融合能力。Neck 部分由4個CBL層、4個Concat(對特征張量的堆疊)層、5個CSP層及2次上采樣組成。
Head 輸出端:輸出目標檢測的結(jié)果,采用3 個卷積層組成,共有3 個輸出。輸出層利用GIOU_Loss 函數(shù)提升算法的檢測精度,公式如下。
式中:A為神經(jīng)網(wǎng)絡(luò)的預(yù)測框;B為真實框;C為能將A、B包含在內(nèi)的最小外接矩形。
砌體結(jié)構(gòu)水工涵洞內(nèi)部砌縫擴張是最主要的病害問題,由于涵洞內(nèi)部砌縫擴張?zhí)幟黠@,且無其余干擾因素,因此選用將候選框的預(yù)測與類別及位置的預(yù)測置為同一CNN 網(wǎng)絡(luò)中的一階段目標檢測法能夠快速、精確識別砌縫擴張。在一階段目標檢測法中,YOLOv5不僅權(quán)重、體積小,且識別迅速,適用于磚砌式水工涵洞的病害識別。
在YOLOv5m 網(wǎng)絡(luò)結(jié)果中加入目標裁剪算法,將測試圖片的預(yù)測框進行裁剪,并把預(yù)測結(jié)果進行二值化,以最小外接矩形包圍目標區(qū)域進行再次裁剪,最終的優(yōu)化結(jié)果與原圖進行模板匹配,得出最終檢測結(jié)果,其算法流程如圖4所示。
圖4 算法流程Fig.4 Algorithm flow
(1)圖像采集。在涵洞內(nèi)無明顯積水的情況下,工作人員進入合東水庫壩內(nèi)涵洞,初步檢查洞內(nèi)病害狀況,并手持數(shù)碼相機(佳能EOS80D)拍攝襯砌表面,并保證所有表面均被覆蓋至少1次,作為YOLOv5目標檢測數(shù)據(jù)集。該數(shù)據(jù)集包含115張RGB 圖像,每張圖片的分辨率大小為6 000×4 000,每張圖片按608×608 隨機裁剪,生成有病害圖像2 140 張,無病害圖像1 174 張,共3 314 張圖像,將裁剪后的圖像數(shù)據(jù)集按4∶1 的比例分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集。
labelImg 是一款圖形圖像注釋的工具,其采用Python 編寫,應(yīng)用第三方庫Qt 進行圖形界面編輯。采用labelImg 工具對數(shù)據(jù)集中的砌縫擴張部分進行標注,數(shù)據(jù)集生成標注信息文件為txt格式的YOLO數(shù)據(jù)集。
(2)圖像標注與數(shù)據(jù)增強。為擴充數(shù)據(jù)集,在圖像預(yù)處理階段,在原圖的基礎(chǔ)上進行鏡像、旋轉(zhuǎn)、轉(zhuǎn)置和Mosaic 數(shù)據(jù)增強處理,Mosaic 數(shù)據(jù)增強處理是在數(shù)據(jù)集中隨機抽取四張圖片,經(jīng)過隨機縮放、隨機排布隨機剪裁等方式進行拼接[12],使得原圖的表現(xiàn)形式集尺度各不相同,不僅避免過擬合現(xiàn)象的出現(xiàn),還提高了檢測的準確率和速度。
該模型采用YOLOv5m 網(wǎng)絡(luò)訓(xùn)練,運行環(huán)境采用Intel(R)Core(TM) i7-10700F 處理器,NVIDIA Quadro P620 顯卡,Windows 10 Pro 64 bit 操作系統(tǒng),基于PyTorch 框架及CUDA11.0。主要參數(shù)設(shè)置:學(xué)習(xí)率0.008 56,余弦退火參數(shù)0.192,學(xué)習(xí)率動量0.98,權(quán)重衰減系數(shù)0.000 57,批次大小設(shè)置為4,共運行1 000輪。
損失函數(shù)可以很好地反映模型與實際數(shù)據(jù)之間的差異,選取損失函數(shù)作為評定模型的指標,其結(jié)果如圖5所示,為模型訓(xùn)練及驗證的損失曲線。損失曲線在迭代開始時損失較大,隨著迭代次數(shù)的增加而迅速降低,直至趨于穩(wěn)定,最終驗證損失曲線損失值穩(wěn)定于0.07 左右,訓(xùn)練損失曲線損失值穩(wěn)定于0.055左右。
圖5 訓(xùn)練、驗證損失函數(shù)曲線Fig.5 Training and verification of loss function curve
為驗證方案的可行性,分別進行Mosaic 數(shù)據(jù)增強、多尺度訓(xùn)練以及采用Adam 優(yōu)化器代替SGD 優(yōu)化器3 組實驗作為對比,其中Mosaic 數(shù)據(jù)增強(如圖6 所示)步驟主要為在數(shù)據(jù)集中隨機抽取四張圖片,經(jīng)過隨機縮放、隨機排布隨機剪裁等方式進行拼接。多尺度訓(xùn)練通過對輸入圖片的尺寸進行放大或縮小等操作生成更多尺寸的圖片進行訓(xùn)練,可以在一定程度上提高模型的精度,提高模型對不同大小檢測目標的魯棒性。Adam優(yōu)化器結(jié)合AdaGrad 以及RMSProp 兩種法算的優(yōu)點,通過對梯度的一階矩估計(梯度均值)和二階矩估計(梯度未中心化的方差)綜合考慮,計算出步長。SGD(隨機梯度優(yōu)化):從樣本中隨機抽取一組進行訓(xùn)練,訓(xùn)練結(jié)束后按梯度進行更新,不斷重復(fù)直至結(jié)束,每次迭代時樣本需隨機打亂。
為分析不同模型效果,選取F1-Score 平衡F 分數(shù)(F1-Score)作為衡量指標,結(jié)果如表1 所示。F1-Score 是精準度/查準率(Precision)及召回率/查全率(Recall)的調(diào)和平均數(shù),公式如下:
表1 測試結(jié)果對比Tab.1 Comparison of test results
其中精準度/查準率指模型預(yù)測正例中正樣本的比例,公式如下:
召回率/查全率指模型預(yù)測中正例占總正樣本的比例,公式如下:
式中:TP(True Positive)為將正樣本預(yù)測正確的個數(shù);FP(False Positive)為將負樣本預(yù)測為正樣本的個數(shù);FN(False Negative)為將負樣本預(yù)測為正樣本的個數(shù)。
由表1可知,通過采取Mosaic數(shù)據(jù)增強、多尺度訓(xùn)練和采用Adam 優(yōu)化器方式可以明顯提高F1-Score 指標取值,采用Mosaic 數(shù)據(jù)增強,F(xiàn)1-Score 指標的最大取值由不進行模型改進的0.458提升至0.521,提高了13.76%。進行多尺度訓(xùn)練,F(xiàn)1-Score指標的最大取值由不進行模型改進的0.458 提升至0.635,提高了38.65%。采用Adam 優(yōu)化器代替SGD 優(yōu)化器,F(xiàn)1-Score 指標的最大取值由不進行模型改進的0.458 提升至0.46,提高了0.44%。
隨后對Mosaic 數(shù)據(jù)增強、多尺度訓(xùn)練和采用Adam 優(yōu)化器進行隨機組合測試,選取SGD 作為優(yōu)化器的對照試驗,仍選取F1-Score作為衡量指標,結(jié)果如表2所示。
表2 組合測試結(jié)果對比Tab.2 Comparison of combined test results
由表2 可知,通過采取Mosaic 數(shù)據(jù)增強、多尺度訓(xùn)練、采用Adam 優(yōu)化器或SGD 優(yōu)化器組合方式相較于單一改進F1-Score指標取值可以進一步提高,采用Mosaic 數(shù)據(jù)增強和Adam 優(yōu)化器對F1-Score 指標的取值提升最為明顯,可達0.652,相較于基本模型提高了42.36%。
對砌體涵洞進行實體數(shù)字圖像識別測試,分為脫空砌縫、張開砌縫識別,不同灰度直方圖像素值變化的擴張識別效果,測試結(jié)果如下。
圖7 所示為脫空砌縫和張開砌縫的測試結(jié)果,由測試可以看出,在不同條件下模型均能檢測到砌體結(jié)構(gòu)的病害,且識別效果較好。無論是對脫空砌縫的檢測和張開砌縫的檢測,檢測目標的置信度均能達到較高值,證明算法具有較強的魯棒性。
圖7 脫空、張開砌縫測試結(jié)果Fig.7 Test results of void and open masonry joints
圖8為灰度直方圖像素值偏低且成雙峰分布圖例的砌縫擴張識別結(jié)果,其中圖8(a)為涵洞中像素值偏低圖像的灰度直方圖,砌縫擴張?zhí)幍南袼刂蹬c背景區(qū)域差別較小,容易被歸于背景區(qū)域,識別難度較高,圖8(b)為最終目標識別結(jié)果圖,目標檢測框基本為砌縫擴張區(qū)域的最小外包圍框,且砌縫擴張區(qū)域基本全部識別,識別結(jié)果滿足要求。
圖8 像素值偏低圖例識別結(jié)果Fig.8 Legend recognition result of low pixel value
圖9為灰度直方圖像素值均勻且成雙峰分布圖例的砌縫擴張識別結(jié)果,其中9(a)為涵洞中像素值分布較均勻圖像的灰度直方圖,像素值較低處極易出現(xiàn)誤判情況,但最終結(jié)果依然能夠很好識別出砌縫擴張區(qū)域,且識別結(jié)果能夠較好的滿足要求,證明算法具有較強的魯棒性。
圖10 為灰度直方圖像素值偏高且成單峰分布圖例的識別結(jié)果,其中圖10(a)為涵洞中像素值偏高圖像的灰度直方圖,干燥部分的砌縫擴張區(qū)域與滲水區(qū)域像素值接近,極易出現(xiàn)誤判情況,但最終結(jié)果依然能夠很好地識別砌縫擴張區(qū)域,證明算法具有較強的魯棒性。
圖10 像素值偏高圖例識別結(jié)果Fig.10 Legend recognition result of high pixel value
經(jīng)過測試,在像素值偏低、均勻、偏高的情況,YOLOv5目標檢測均能表現(xiàn)出優(yōu)異的識別結(jié)果。同時,本文所提出的算法流程在識別精度及效率上均比傳統(tǒng)計算機視覺算法具有明顯優(yōu)勢,相較于其他目標檢測算法,本文所采用的YOLOv5算法為一階段檢測算法,雖然精度略低于其他二階段檢測算法,但在識別速度上可達0.016 張/s,遠遠低于其他目標檢測算法。因此,該算法更加適用于涵洞安全隱患的快速檢測。
應(yīng)用基于YOLOv5 網(wǎng)絡(luò)框架的砌體圖像識別方法,對合東水庫輸水涵洞樁號K0+222.4~K0+258.6 進行現(xiàn)場檢測,共劃分為24 區(qū)段進行檢測,以涵洞右水平方向為0 角度,沿逆時針方向每次遞增30 度角對涵洞進行病害識別,每段共劃分0°~30°、30°~60°、60°~90°、90°~120°、120°~150°、150°~180°六個部分,K0+222.4~K0+258.6涵洞各區(qū)段病害檢測結(jié)果如表3所示。
表3 K0+222.4~K0+258.6區(qū)段涵洞病害結(jié)果(處)Tab.3 Culvert disease results in K0+222.4~K0+258.6 section
圖像采集完成后,根據(jù)涵洞設(shè)計參數(shù)采用隧道襯砌展開影像生成器軟件對所拍攝的圖像進行處理,得到涵洞內(nèi)壁的全景展開圖。將設(shè)計參數(shù)與展開圖尺寸進行比較,以每像素(pixel)相對實際單位(mm)為尺度,得到展開圖與實際尺寸之間的轉(zhuǎn)換參數(shù)α(mm/pixel)。
式中:w′i為涵洞某段第i塊實際磚砌體寬度,mm;wi為涵洞某段第i塊實際磚砌體對應(yīng)展開圖磚砌體寬度(pixel)。
計算全景展開圖上結(jié)果檢測框所占像素個數(shù),乘以轉(zhuǎn)換參數(shù)得到砌縫擴張實際寬度。涵洞各段病害檢測結(jié)果如圖11 所示。病害嚴重程度由大至小以不同顏色表示,其中深紅色區(qū)域為涵洞存在危險隱患的安全性評估區(qū)域,淺紅色區(qū)域為涵洞安全性評估較差的區(qū)域,淡綠色區(qū)域為涵洞安全性較好的區(qū)域。
圖11 K0+222.4~K0+258.6段涵洞檢測結(jié)果Fig.11 Test results of culvert at K0+222.4~K0+258.6 section
砌體涵洞中砌縫擴張相比較其他病害而言是危及結(jié)構(gòu)安全的重要因素,故選取砌縫擴張程度作為安全評估等級劃分的主要依據(jù)。本工程中磚砌結(jié)構(gòu)正常砌縫寬度均值為7.5 mm,在此基礎(chǔ)上結(jié)合砌體結(jié)構(gòu)裂縫指標,劃分病害等級如表4所示。
表4 病害級別劃分Tab.4 Disease classification
對涵洞K0+222.4~K0+258.6段的病害類別、角度、區(qū)域進行統(tǒng)計分析,結(jié)果見圖12,其中輕微病害共26 處,占總病害數(shù)8.07%;一般病害共40 處,占總病害數(shù)12.42%;嚴重病害共93處,占總病害數(shù)28.88%;重大病害共163 處,占總病害數(shù)50.62%。0~30°內(nèi)病害共29處,占總病害數(shù)9.01%;30°~60°內(nèi)病害共28 處,占總病害數(shù)8.70%;60°~90°內(nèi)病害共60 處,占總病害數(shù)18.63%;90°~120°內(nèi)病害共81 處,占總病害數(shù)25.16%;120°~150°內(nèi)病害共70 處,占總病害數(shù)21.74%;150°~180°內(nèi)病害共54 處,占總病害數(shù)16.77%。涵洞安全性較好的區(qū)域共122處,占總數(shù)的84.72%,涵洞安全性評估較差的區(qū)域11 處,占總數(shù)的7.64%,涵洞存在危險隱患的區(qū)域11處,占總數(shù)的7.64%。
圖12 K0+222.4~K0+258.6段安全性評估結(jié)果Fig.12 Safety assessment results of K0+222.4~K0+258.6 section
輕微病害區(qū)域可按正常巡檢周期進行檢測;一般病害區(qū)域建議立刻采取加固措施,如用麻絮浸透瀝青等修復(fù)材料填入砌縫,然后采用水泥砂漿將砌縫抹平,以免出現(xiàn)滲水及更加嚴重病害;嚴重及重大病害區(qū)域建議立刻開展研究,在一般病害區(qū)域措施的基礎(chǔ)上制定詳細加固方案。
(1)本文提出了一種高效率、高精確的基于數(shù)字圖像的砌體涵洞識別評估方法,運用YOLOv5 網(wǎng)絡(luò)在涵洞數(shù)據(jù)集上進行模型訓(xùn)練,并將識別結(jié)果以最小外包矩形的形式輸入至分類算法中進行砌體水工涵洞病害分級,可將繁瑣的人工病害統(tǒng)計轉(zhuǎn)變?yōu)榭焖贉蚀_的數(shù)字圖像處理方法。
(2)在網(wǎng)絡(luò)訓(xùn)練中采用Mosaic 數(shù)據(jù)增強、多尺度訓(xùn)練以及Adam 優(yōu)化器均有利于提升病害圖像目標識別精度。同時將以上方法運用到網(wǎng)絡(luò)訓(xùn)練中,可得到更加適用于砌體水工涵洞檢測的YOLOv5m模型。
(3)基于像素值偏低、均勻、偏高的情況,YOLOv5目標檢測均可克服砌體水工涵洞的干擾因素,識別效果較好。
(4)通過對案例工程輸水涵洞樁號K0+222.4~K0+258.6 進行現(xiàn)場檢測,結(jié)合砌體結(jié)構(gòu)裂縫指標,對病害類別、角度、區(qū)域進行了統(tǒng)計分析。研究結(jié)果表明,其病害識別精度與實際情況相符,可以準確獲取水工涵洞病害等級,在砌體水工涵洞病害檢測領(lǐng)域具有廣泛的應(yīng)用前景。