朱蘇雅,杜建超,李云松,汪小鵬
(1.西安電子科技大學(xué) 綜合業(yè)務(wù)網(wǎng)理論及關(guān)鍵技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710071;2.西安公路研究院,陜西 西安 710065 )
截至2016年,我國(guó)在用橋梁已超過(guò)80萬(wàn)座。為了確保通行安全,每座橋梁都需要定期維護(hù)檢修。橋梁的主要病害之一是構(gòu)件裂縫。目前對(duì)裂縫的檢測(cè)主要采用人工巡檢加寬度測(cè)量?jī)x查看的方法,檢測(cè)效率低,數(shù)據(jù)難以維護(hù)。因此,采用圖像處理的方式進(jìn)行橋梁裂縫檢測(cè)成為當(dāng)前的一個(gè)研究熱點(diǎn)。
一些研究基于傳統(tǒng)的數(shù)字圖像處理方法,如利用裂縫區(qū)域與背景之間的灰度差采用灰度閾值分割的方法實(shí)現(xiàn)裂縫的提取[1]、利用裂縫的線性特征采用坎尼迭代的方法檢測(cè)裂縫邊緣特征[2],但這類算法只能給出裂縫的大體位置,準(zhǔn)確度不高,易受背景雜波影響,誤檢和漏檢率較高。隨著機(jī)器學(xué)習(xí)技術(shù)的興起,文獻(xiàn)[3]中采用裂縫多特征結(jié)合支持向量機(jī)(SVM)、AdaBoost、 Random Forest 3種統(tǒng)計(jì)學(xué)分類方法分別實(shí)現(xiàn)裂縫檢測(cè),檢測(cè)效果有所提升,但該方法需要人工設(shè)計(jì)裂縫特征,導(dǎo)致算法的適應(yīng)性和擴(kuò)展性較差。文獻(xiàn)[4]中利用裂縫與背景雜波的線性差異采用張量投票算法增強(qiáng)裂縫特征,該方法對(duì)線性裂縫檢測(cè)效果較好,但是對(duì)復(fù)雜裂縫不敏感,丟失了寬度信息。近年來(lái),深度學(xué)習(xí)在圖像識(shí)別中表現(xiàn)出了優(yōu)異的性能[5-6],使用卷積神經(jīng)網(wǎng)絡(luò)檢測(cè)裂縫的方法明顯增多。文獻(xiàn)[7]中首先將裂縫圖像劃分為多個(gè)小圖像塊,再利用經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)將小圖像塊分為裂縫面元和非裂縫面元兩類,從而完成裂縫的提取。但由于全連接層的存在,限制了輸入圖片的大小,且基于圖像塊的檢測(cè)方法感受野受限,檢測(cè)效率低,內(nèi)存消耗大。
U-Net網(wǎng)絡(luò)是一種改進(jìn)的全卷積神經(jīng)網(wǎng)絡(luò)模型[8],網(wǎng)絡(luò)中無(wú)全連接層,能實(shí)現(xiàn)任意尺寸圖像的檢測(cè),最早被Olaf等人提出,用于神經(jīng)元結(jié)構(gòu)的分割[9],在醫(yī)學(xué)圖像處理領(lǐng)域如肝臟CT序列分割[10]、虹膜分割[11]等應(yīng)用較為廣泛。近兩年,U-Net網(wǎng)絡(luò)也被用在其他領(lǐng)域的圖像處理場(chǎng)景中,如遙感圖像水體分割[12]、道路檢測(cè)[13]等領(lǐng)域,檢測(cè)性能優(yōu)良。基于此,筆者提出一種基于U-Net網(wǎng)絡(luò)的橋梁裂縫檢測(cè)方法。該方法由一個(gè)捕獲上下文信息的收縮路徑和一個(gè)可用于精準(zhǔn)定位的對(duì)稱擴(kuò)展路徑組成,是一種小樣本裂縫檢測(cè)方法,不僅能夠準(zhǔn)確檢測(cè)裂縫的形態(tài),還能夠準(zhǔn)確地保留裂縫的寬度信息。
此外,在實(shí)際場(chǎng)景中,由于污點(diǎn)、雜物覆蓋、光影等因素造成檢測(cè)后的裂縫有斷裂現(xiàn)象。一些文獻(xiàn)中研究了裂縫斷裂處的連接方法,包括基于形態(tài)學(xué)的連接算法[1]以及基于prime最小生成樹(shù)算法的連接方法[14]。筆者在基于U-Net網(wǎng)絡(luò)裂縫檢測(cè)結(jié)果的基礎(chǔ)上,提出一種改進(jìn)的迪杰斯特拉(Dijkstra)連接算法來(lái)實(shí)現(xiàn)斷裂處的裂縫連接。所提算法能更加準(zhǔn)確地保留裂縫細(xì)節(jié)特征,還原裂縫真實(shí)信息,從而提高復(fù)雜背景下裂縫檢測(cè)的準(zhǔn)確性。最后,通過(guò)采用骨架圖和八方向搜索的方法,實(shí)現(xiàn)了裂縫寬度的測(cè)量。
U-Net網(wǎng)絡(luò)是一種改進(jìn)的全卷積神經(jīng)網(wǎng)絡(luò),因其網(wǎng)絡(luò)結(jié)構(gòu)酷似“U”形而得名。該網(wǎng)絡(luò)充分利用深層網(wǎng)絡(luò)獲得的抽象特征和淺層網(wǎng)絡(luò)包含的圖像上下文信息,采用復(fù)制疊加的方式進(jìn)行特征融合,能有效、準(zhǔn)確地實(shí)現(xiàn)圖像的分割。

圖1 15層U-Net網(wǎng)絡(luò)模型
U-Net網(wǎng)絡(luò)結(jié)構(gòu)的搭建是裂縫提取的關(guān)鍵步驟。筆者采用15層卷積層搭建網(wǎng)絡(luò)模型,如圖1所示。該網(wǎng)絡(luò)結(jié)構(gòu)左右對(duì)稱,左側(cè)由卷積層和池化層組成,稱為收縮路徑;右側(cè)由卷積層和反卷積層組成,稱為擴(kuò)展路徑。網(wǎng)絡(luò)使用卷積層提取裂縫特征,池化過(guò)程減少網(wǎng)絡(luò)參數(shù),同時(shí)會(huì)減少裂縫特征圖的分辨率,再采用反卷積將其恢復(fù)到原始輸入圖像大小,實(shí)現(xiàn)端到端的裂縫檢測(cè)。該網(wǎng)絡(luò)巧妙地使用復(fù)制疊加的方法將底層包含大量上下文信息的特征圖加載到高層網(wǎng)絡(luò),最大程度地保留了逐層池化過(guò)程中丟失的裂縫細(xì)節(jié)。另外,該網(wǎng)絡(luò)卷積層使用3×3的卷積核,步長(zhǎng)為1;池化層使用2×2的卷積核,步長(zhǎng)為2。每層卷積后使用整流線性單元Relu函數(shù)作為激勵(lì)函數(shù):
Φ(x)=max{0,x} 。
(1)
相對(duì)于sigmoid和雙曲正切函數(shù),Relu函數(shù)只需要一個(gè)合理的閾值就可以得到激勵(lì)值,減少了計(jì)算的復(fù)雜度。另外,當(dāng)Relu函數(shù)處于激活狀態(tài)時(shí),其一階導(dǎo)數(shù)處處為1,這意味著Relu函數(shù)不存在梯度消失問(wèn)題,且其隨機(jī)梯度下降法收斂速度會(huì)比sigmoid和雙曲正切快很多。其導(dǎo)數(shù)表達(dá)式為

(2)
其中,x表示輸入神經(jīng)元。最后一層卷積層采用1×1的卷積核,結(jié)合softmax函數(shù)用于分類裂縫圖像。再采用交叉熵函數(shù)作為損失函數(shù)用于表征預(yù)測(cè)概率與標(biāo)簽之間的差值。最后通過(guò)反向傳播算法優(yōu)化更新網(wǎng)絡(luò)參數(shù),最小化損失函數(shù),使網(wǎng)絡(luò)模型達(dá)到最優(yōu)。
為了降低資源消耗,需要將高分辨率圖像裁剪成多個(gè)小尺寸圖像,分別輸入網(wǎng)絡(luò),完成檢測(cè)后再拼接成原始圖像大小。但由于U-Net網(wǎng)絡(luò)中存在卷積層,對(duì)圖像進(jìn)行卷積操作會(huì)丟棄輸入圖像中小于卷積核的邊緣部分圖像,使得輸出圖像尺寸變小。經(jīng)過(guò)一次卷積后,輸出圖像大小與輸入圖像大小有如下關(guān)系:
(3)
其中,nw,nh為輸出圖像的寬和高;w,h為輸入圖像的寬和高;fw,fh為卷積核的寬和高,fw=fh=3;s為滑動(dòng)窗口的步幅大小,s=1。即每層卷積都將造成輸入圖像尺寸的減小,使得最終輸出圖片尺寸小于輸入圖片,拼接后的圖像會(huì)存在邊緣部分大塊留白現(xiàn)象,無(wú)法提取出完整裂縫。如圖1所示,當(dāng)輸入圖像為800×800時(shí),輸出圖像尺寸為708×708。
針對(duì)上述問(wèn)題,筆者采用Mirror-overlap-tile策略解決,即合理鏡像擴(kuò)充原始大圖的邊緣像素,再對(duì)擴(kuò)充后的圖像使用overlap-tile 策略[9],重疊切分原始大圖,獲得多張存在邊緣重疊的小圖作為輸入圖像,且輸入圖像尺寸大于待檢測(cè)的裂縫部分,從而實(shí)現(xiàn)輸出大圖的無(wú)縫拼接。將小尺寸圖像輸入網(wǎng)絡(luò),最終輸出圖像大小取決于卷積層的層數(shù)、池化層的層數(shù)和上采樣次數(shù),還受輸入圖像大小的影響。可通過(guò)如下方式計(jì)算原始大圖需要鏡像擴(kuò)充的邊緣大小:
每層卷積后輸出圖像尺寸大小為
nw=w-2且nh=h-2;
每層池化后輸出圖像尺寸大小為
nw=w/2且nh=h/2;
每層上采樣后輸出圖像尺寸大小為
nw=w×2且nh=h×2。
當(dāng)輸入圖像的寬和高在池化層中均能整除時(shí),通過(guò)計(jì)算可以得到網(wǎng)絡(luò)最終輸出圖像尺寸nw=w-88,nh=h-88,此時(shí)為最大輸出尺寸;當(dāng)輸入圖像的寬和高在池化層均不能整除時(shí),每次池化后會(huì)丟棄一個(gè)像素的寬度,網(wǎng)絡(luò)最終輸出尺寸nw=w-95,nh=h-95,此時(shí)為最小輸出尺寸。也即,15層U-Net網(wǎng)絡(luò)輸入輸出圖像尺寸差在88到95之間,則可將原始圖像周圍鏡像擴(kuò)充50作為輸入數(shù)據(jù),來(lái)保證邊界像素不會(huì)丟失。
深度學(xué)習(xí)網(wǎng)絡(luò)實(shí)際是利用大量數(shù)據(jù)集以監(jiān)督的方式通過(guò)卷積運(yùn)算提取和學(xué)習(xí)圖像特征,再利用反向傳播最小化訓(xùn)練集上的分類誤差,共同優(yōu)化網(wǎng)絡(luò)參數(shù),最終實(shí)現(xiàn)目標(biāo)的提取。筆者使用10 000張尺寸為160×160的裂縫樣本圖像和人工標(biāo)注的裂縫標(biāo)簽圖像投入網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)和訓(xùn)練,并產(chǎn)生分割結(jié)果,再使用反向傳播算法優(yōu)化網(wǎng)絡(luò)模型;然后,對(duì)尺寸為5 760×3 840的原始圖像采用1.2節(jié)描述的填充策略處理圖像,輸入網(wǎng)絡(luò)進(jìn)行裂縫提取,結(jié)果如圖2所示。可以看出該網(wǎng)絡(luò)能準(zhǔn)確地實(shí)現(xiàn)裂縫的識(shí)別和提取,保留了裂縫的走勢(shì)、紋理等信息,但仍存在少量背景雜波和裂縫斷裂部分需要做進(jìn)一步的處理工作。

圖2 U-Net網(wǎng)絡(luò)測(cè)試結(jié)果圖
經(jīng)深度學(xué)習(xí)檢測(cè)后的裂縫圖像仍存在少量的背景雜波。從圖2的提取結(jié)果可以看出,雜波的長(zhǎng)度較短,連續(xù)性差。因此,筆者基于長(zhǎng)度進(jìn)行判斷,刪除雜波和偽裂縫。為了獲取一段裂縫的長(zhǎng)度,首先采用文獻(xiàn)[15]中的算法將裂縫細(xì)化,生成一條單像素線性裂縫骨架,細(xì)化后的裂縫如圖3(b)所示;然后基于八方向搜索法統(tǒng)計(jì)裂縫點(diǎn)的像素?cái)?shù)量作為該段裂縫的長(zhǎng)度,通過(guò)預(yù)先設(shè)置的閾值來(lái)刪除長(zhǎng)度較短的雜波和偽裂縫,保留較長(zhǎng)的裂縫部分。經(jīng)過(guò)雜波去除的裂縫如圖3(c)所示,可以看出結(jié)果較好地去除了干擾,且保留了真實(shí)裂縫的信息。
麥小秋不抬頭,她俯身城區(qū),望著渺茫朦朧的葦湖,她的頭有些暈,她想從樓上栽下去,變成湖底的一條魚(yú),沉入泥底。啪,葦湖暗了下去,可能是某個(gè)地方出現(xiàn)了故障,她聽(tīng)見(jiàn)葦湖深處的鳥(niǎo)兒發(fā)出了幾聲嘶鳴。

圖3 提取結(jié)果優(yōu)化過(guò)程圖
有部分裂縫由于光照、遮擋等原因不能完整識(shí)別,造成所提取的裂縫出現(xiàn)斷裂現(xiàn)象。最小生成樹(shù)算法是一種常用的連接策略,采用廣度優(yōu)先搜索的方法解決賦權(quán)有向圖或無(wú)向圖的單源最短路徑問(wèn)題,最終生成最短路徑樹(shù)。可采用最小生成樹(shù)算法對(duì)細(xì)化后的裂縫圖像進(jìn)行處理,實(shí)現(xiàn)裂縫單元之間的最短連接。常用的最小生成樹(shù)算法有兩種:prime算法和迪杰斯特拉算法。其中prime算法在迭代更新中更新的是未確定點(diǎn)的集合中到已確定點(diǎn)距離最小的點(diǎn),而迪杰斯特拉算法更新的是未確定點(diǎn)集合中到起始點(diǎn)距離最小的點(diǎn),后加入的點(diǎn)只作為中間節(jié)點(diǎn),連接起始點(diǎn)不能直接到達(dá)的點(diǎn)。相對(duì)于文獻(xiàn)[14]采用prime算法將交叉的裂縫部分分割成零散的線段作為獨(dú)立的單元,取線段端點(diǎn)作為連接點(diǎn)的方法,筆者采用迪杰斯特拉算法,對(duì)交叉的裂縫部分不做處理,看成一個(gè)單元,即將不連通的零碎裂縫片段均視為一個(gè)獨(dú)立的單元,選擇一個(gè)初始單元,計(jì)算各單元直接或間接到初始單元的最小距離(歐氏距離),按照最小距離選擇邊和歸并單元實(shí)現(xiàn)其他單元到初始單元的最短路徑連接,且連接點(diǎn)不局限在線段端點(diǎn)上,連接效果如圖3(d)所示。
由于最小生成樹(shù)連接算法是針對(duì)所有裂縫單元進(jìn)行的連接,連接結(jié)果中會(huì)存在偽連接的情況。一般偽連接的裂縫相對(duì)真實(shí)裂縫較短,為了去除偽連接,可以通過(guò)判斷裂縫長(zhǎng)度來(lái)剔除偽裂縫,處理結(jié)果如圖3(e)所示。圖3(e)是完整的、無(wú)雜波的單像素裂縫圖像,稱為裂縫骨架;圖3(f)是無(wú)斷裂的、包含寬度信息的最終裂縫提取結(jié)果。實(shí)驗(yàn)證明,該方法連接效果更符合裂縫的走勢(shì),且更好地保留了交叉處的裂縫紋理信息。
裂縫寬度是評(píng)價(jià)裂縫病害的重要數(shù)據(jù)。在得到裂縫提取結(jié)果后,采用裂縫骨架圖和八方向搜索方法來(lái)獲取裂縫寬度。首先利用單像素裂縫骨架圖(圖4(a))將每個(gè)裂縫點(diǎn)作為寬度測(cè)量的種子點(diǎn)。從種子點(diǎn)出發(fā),在提取的裂縫圖中(圖4(b))進(jìn)行八方向搜索。若是裂縫點(diǎn),則該方向上像素?cái)?shù)量加1,直到到達(dá)裂縫邊界,這樣可分別統(tǒng)計(jì)一個(gè)種子點(diǎn)所在位置在0°、45°、90°、135°、180°、225°、270°、315°方向上的裂縫像素點(diǎn)數(shù)量。然后將八方向上統(tǒng)計(jì)的像素點(diǎn)數(shù)量在四條直線方向上進(jìn)行合并,根據(jù)像素點(diǎn)數(shù)量最小的直線方向來(lái)計(jì)算裂縫的寬度(圖4(c))。具體計(jì)算步驟如下:
(1)根據(jù)裂縫骨架圖,確定起始種子點(diǎn)。
(2)在裂縫區(qū)域圖中,分別統(tǒng)計(jì)以種子點(diǎn)為中心的0°、45°、90°、135°、180°、225°、270°、315°方向的裂縫點(diǎn)數(shù)量,記為n1,n2,n3,n4,n5,n6,n7,n8。
(3)合并0°和 180°、45°和 225°、90°和270°、135°和 315°四組方向上的裂縫點(diǎn)數(shù)量,合并方法為d1=n1+n5,d2=21/2(n2+n6),d3=n3+n7,d4=21/2(n4+n8),取D=min{d1,d2,d3,d4},并記錄獲得D的方向。
(5)更新到下一個(gè)種子點(diǎn),重復(fù)步驟(2)~(4),直至測(cè)量完所有種子點(diǎn)處的寬度。

圖4 寬度信息提取方法展示圖
在實(shí)驗(yàn)中采用PyCharm平臺(tái)開(kāi)發(fā),使用基于Python語(yǔ)言的Tensorflow深度學(xué)習(xí)框架搭建U-Net網(wǎng)絡(luò);基于Visual Studio 2015 、opencv3.10 平臺(tái)開(kāi)發(fā),實(shí)現(xiàn)裂縫寬度的測(cè)量。為了驗(yàn)證檢測(cè)效果,分別使用張量投票的方法[4]和筆者所提方法對(duì)24張尺寸為5 760×3 840的裂縫圖像進(jìn)行檢測(cè),并對(duì)檢測(cè)后的圖像進(jìn)行切分,得到384張大小為1 440×960的裂縫局部圖像。針對(duì)裂縫位置即骨架信息提取情況做分類比較,分為無(wú)裂縫、完全檢測(cè)、部分檢測(cè)、漏檢和誤檢5種情況。無(wú)裂縫指圖中無(wú)裂縫且未檢測(cè)到裂縫,屬于正確檢測(cè);完全檢測(cè)是指完全并且正確檢測(cè)到所有裂縫;部分檢測(cè)是指正確檢測(cè)到大部分裂縫;漏檢是指圖中含有裂縫,但未檢測(cè)到;誤檢則是圖中含有裂縫,但未正確檢測(cè)到或圖中無(wú)裂縫卻檢測(cè)到偽裂縫。分類結(jié)果如表1所示。采用準(zhǔn)確率A、漏檢率L和誤檢率E對(duì)統(tǒng)計(jì)結(jié)果進(jìn)行評(píng)估,計(jì)算公式如下:
(5)
其中,s表示裂縫樣本總數(shù),n,c,p,m,f分別表示無(wú)裂縫、完全檢測(cè)、部分檢測(cè)、漏檢和誤檢這5種情況的檢測(cè)結(jié)果總數(shù),且s=n+c+p+m+f。
從表1可以看出,筆者提出的方法可以精確地檢測(cè)到裂縫位置,且漏檢率低于3%,誤檢率低于1%,準(zhǔn)確率高于90%,遠(yuǎn)高于張量投票方法的檢測(cè)準(zhǔn)確度。圖5為兩種方法對(duì)裂縫檢測(cè)結(jié)果的對(duì)比圖,可以看出,兩種方法均能準(zhǔn)確地實(shí)現(xiàn)線性裂縫的檢測(cè),但針對(duì)復(fù)雜裂縫和較細(xì)裂縫的檢測(cè),張量投票方法存在誤檢和漏檢的現(xiàn)象,筆者提出的方法整體檢測(cè)效果優(yōu)于張量投票方法,且保留了裂縫走勢(shì)和形狀信息,誤檢率低。

表1 裂縫檢測(cè)情況評(píng)價(jià)

圖5 裂縫檢測(cè)結(jié)果對(duì)比圖
為了驗(yàn)證寬度測(cè)量方法的性能,在不考慮實(shí)際測(cè)量裂縫時(shí)存在的系統(tǒng)誤差以及讀數(shù)誤差的情況下,實(shí)驗(yàn)將使用裂縫寬度測(cè)量?jī)x測(cè)得局部裂縫的平均寬度作為對(duì)比依據(jù)。如圖6(a)所示,用圓圈標(biāo)記待測(cè)量區(qū)域,數(shù)值表示該區(qū)域平均裂縫寬度。針對(duì)待檢測(cè)圖像進(jìn)行裂縫提取和寬度測(cè)量,圖6(b)為裂縫提取結(jié)果,圖6(c)展示了待檢測(cè)裂縫區(qū)域部分種子點(diǎn)的D值和D的方向。在圖6(c)上統(tǒng)計(jì)位于標(biāo)記區(qū)域的平均D值,并按照每個(gè)像素所代表的實(shí)際距離為比例尺進(jìn)行換算,從而獲得檢測(cè)到的裂縫寬度,并計(jì)算所檢測(cè)的裂縫寬度與實(shí)際測(cè)量的裂縫寬度間的差值作為檢測(cè)誤差。筆者對(duì)其中30組寬度值小于0.65 mm的裂縫樣本數(shù)據(jù)進(jìn)行測(cè)量評(píng)估,其中有16組樣本的測(cè)量誤差小于0.03 mm,占樣本總數(shù)的50%以上;有27組樣本的測(cè)量誤差小于0.05 mm,占總樣本數(shù)的90%。詳細(xì)統(tǒng)計(jì)結(jié)果如圖7所示。另外,表2給出了其中5組數(shù)據(jù)的詳細(xì)統(tǒng)計(jì)信息。可以看出該方法測(cè)得裂縫寬度總體誤差小于0.05 mm,測(cè)量精度較高。

圖6 裂縫寬度測(cè)量圖

數(shù)據(jù)組比例尺/(毫米·像素-1)實(shí)際測(cè)量寬度/mm 平均像素距離/像素檢測(cè)裂縫寬度/mm誤差/mm10.088 70.354.250.3770.02720.089 90.404.670.4200.02030.093 00.455.000.4650.01540.088 30.505.290.4670.03350.090 00.556.260.5630.013

圖7 測(cè)量誤差分布圖
筆者針對(duì)現(xiàn)有的橋梁裂縫檢測(cè)算法準(zhǔn)確度不高、丟失細(xì)節(jié)信息等問(wèn)題,提出一種采用15層U-Net卷積神經(jīng)網(wǎng)絡(luò)的裂縫檢測(cè)方法。該方法可以實(shí)現(xiàn)像素級(jí)的圖像分割,且高效地利用淺層特征與深層特征相融合,最大程度地保留了原始圖像的諸多細(xì)節(jié)信息。針對(duì)污點(diǎn)、標(biāo)記、陰影等因素造成裂縫檢測(cè)結(jié)果存在部分?jǐn)嗔训那闆r,采用改進(jìn)的迪杰斯特拉最小生成樹(shù)算法實(shí)現(xiàn)斷裂處的連接,有效地去除了背景雜波,突出了裂縫主干信息;同時(shí)利用裂縫骨架信息,結(jié)合深度學(xué)習(xí)檢測(cè)結(jié)果實(shí)現(xiàn)了對(duì)裂縫寬度的測(cè)量。經(jīng)實(shí)驗(yàn)驗(yàn)證,所提方法能夠準(zhǔn)確實(shí)現(xiàn)裂縫的提取,準(zhǔn)確率達(dá)到90%以上,漏檢率、誤檢率低,且裂縫寬度的測(cè)量準(zhǔn)確性高。