舒江鵬,李俊,馬亥波,段元鋒,趙唯堅
(浙江大學 a.建筑工程學院;b.平衡建筑研究中心;c.浙江大學建筑設計研究院有限公司,杭州 310058)
裂縫作為橋梁早期損傷破壞的重要表征之一,及時發(fā)現并對其進行檢測是橋梁維護工作中的重點[1]。常規(guī)的人工勘測不僅存在檢查盲區(qū),同時也需要耗費大量的人力物力,有時還存在安全隱患。隨著攝影、遙感、無人機等圖像采集技術的快速發(fā)展,基于數字圖像處理技術的裂縫檢測方法得到廣泛關注[2]。通過使用模糊多級中值濾波[3]、灰度矯正[4]、非下采樣輪廓波變換[5]等數字圖像處理技術去除裂縫圖像上的噪聲并優(yōu)化圖像質量,裂縫的幾何特征和尺寸信息能夠被提取出來。在面對復雜光照、背景等外界因素時,傳統(tǒng)的數字圖像處理技術不能很好地消除干擾。張維峰等[6]綜合應用了不同圖像處理算法開發(fā)的適用于橋梁缺陷較遠距離圖像的檢測分析軟件,在面對細小裂縫的檢測時也遇到了瓶頸。
隨著計算機領域深度學習的興起,橋梁裂縫圖像處理迎來了新的機遇和挑戰(zhàn)。眾多學者從實際情況出發(fā),對數據方法、智能算法進行改進,提高了模型的分析能力,推動了人工智能在橋梁檢測應用中的提高[7]。比如,Zhang等[8]將深度卷積神經網絡(Deep Convolutional Neural Network,DCNN)應用到裂縫信息提取研究中,該算法展現出了比傳統(tǒng)方法更高的準確度。Zhang等[9]提出網絡CrackNet,能夠實現裂縫的自動檢測提取。數據集作為數據驅動型深度學習算法的核心組成部分,也得到了廣泛的關注。服務于像素級別下橋梁裂縫檢測任務的公開數據集[10]包含了超過一萬張的裂縫圖像樣本,但這些圖像的尺寸都只有256×256像素。包括其他的公開數據集[11],服務于裂縫檢測任務的裂縫圖像尺寸不超過500×500像素。在工程應用中,使用高清相機或者無人機拍攝的圖像一般都會超過1 920×1 080(1 080 p)。一般認為,4k UHD(3 840×2 160)作為新的工業(yè)標準,視為高分辨率(High-Resolution);而超過這一尺寸則為超大尺寸,或者是超高分辨率(Very High-Resolution)[12]。一些超大尺寸的裂縫圖像甚至會超過4 096×3 112[13]。另外,這些公開數據集中的圖像一般都是經過挑選的小尺寸、裂縫特征明顯的圖像。在實際工程應用中,高清相機拍攝獲取的裂縫圖像中的裂縫尺寸遠小于公開數據集或者試驗條件下拍攝的裂縫。
由Lin等[14]首次提出的金字塔型深度學習網絡(FPN)表現出了強大的圖像分割能力,并贏得了COCO 2016挑戰(zhàn)。其網絡結構突出體現了對小目標檢測的優(yōu)勢。受Lin等工作的啟發(fā),筆者提出一個基于特征金字塔深度學習網絡針對超大尺寸裂縫圖像的細長裂縫檢測方法。在金字塔型的網絡架構下,采用特征提取效率更高的Se_resnext50_32×4d[15]編碼器,區(qū)別于傳統(tǒng)的圖像分割網絡,將編碼器提取的不同層次(共4個)特征圖分別進行預測,不同分辨率的特征圖得以保留。對于細小裂縫,更大分辨率的特征圖能夠提供更精確的裂縫幾何特征,同時,較小分辨率的特征圖提供了更深層的語義信息,能夠優(yōu)化細小目標的預測。不同尺寸裂縫特征圖最后通過一包含3×3卷積層的W運算進行疊加輸出統(tǒng)一尺寸的預測,避免產生混疊效應。
該方法包括使用超大尺寸圖像的數據集構建方法。針對細長裂縫的檢測特征,創(chuàng)新性利用特征金字塔深度學習網絡具備的多層識別能力以及識別小目標的優(yōu)勢,通過充分利用裂縫長細幾何特征,實現了對超大尺寸裂縫圖像進行像素級的裂縫檢測。
數據集是基于深度學習的裂縫自動檢測方法的核心之一。為了充分獲取裂縫細長的幾何特征以及發(fā)揮深度學習網絡的特征提取能力,提出針對超大尺寸細長裂縫圖像的數據集構建方法。該數據集的構建方法包括兩個關鍵部分:訓練集與測試集。下文中將分別對訓練集和測試集的處理、生成和構建方法做詳細介紹。同時,來自International Project Competition for SHM (IPC-SHM 2020) ANCRiSST[13]的鋼箱梁數據集將按提出的數據集構建方法進行處理,以生成后續(xù)試驗用的數據集。
該鋼箱梁數據集中包含120張高清相機拍攝的鋼箱梁表面細長裂縫圖像,這些圖像為三通道RGB圖像,像素為3 264×4 928大小。除這些裂縫圖像外,數據集內還包含每張裂縫圖像相對應的標記圖(label)。標記圖由土木工程領域內專家對裂縫圖像中的每一像素點進行標注分類生成,例如將裂縫像素標注為1,背景像素標注為0進行像素級別的區(qū)分。
在進行處理前,鋼箱梁數據集中的120張圖像首先被隨機分出100張作為初始訓練集,其余20張為初始測試集,命名為DS0。
將超大尺寸的圖像直接放入網絡中通常需要超大的計算機GPU運算空間??紤]到計算機性能的限制,較為簡單直接的方法便是縮小圖像尺寸,減小運算空間。傳統(tǒng)是使用方法的雙線性插值方法是在保證一定質量條件下對圖像進行縮放。
為了與數據集構建方法相對比,試驗中通過傳統(tǒng)的雙線性插值對圖像進行縮放處理,構建了兩個數據集。將原來的高分辨率圖像降采樣為1 600×2 400像素和2 112×3 168像素兩種規(guī)格。為討論方便,將圖像大小調整為1 600×2 400像素的訓練集命名為DS1,將圖像大小調整為2 112×3 168像素的訓練集命名為DS2,其具體參數見表1。對于驗證及測試過程,仍然以原規(guī)格圖像作為驗證和測試對象,但為了和訓練過程相匹配,測試的裂縫圖像均根據雙線性插值方法調整為1 600×2 400像素和2 112×3 168像素大小。模型輸出預測結果(1 600×2 400像素和2 112×3 168像素)后,再利用雙線性插值恢復為3 264×4 928像素,與標注圖像進行比較。
表1 數據集
由于細小裂縫占裂縫背景極少,雙線性插值縮放之后,圖像中裂縫像素急劇減小,預測難度增加,預測準確度降低??紤]到部分裂縫即可提供足夠信息進行識別,即可以拆分的幾何特性與特征金字塔網絡對小目標識別的優(yōu)勢,相應地提出了針對超大尺寸裂縫圖像通用的訓練集和測試集處理方法。
針對實際工程拍攝中裂縫在圖像中分布不確定、長細比例較大、裂縫像素占整體像素比例較低的特點,采用多個步驟對超大尺寸圖像進行處理,以構建訓練集。
步驟1:獲得一張初始的超大尺寸裂縫圖像(假設其大小為h×w,其中,h為圖像的高、w為圖像的寬),選取一大小為32m×32n(m、n為大于1的整數)的固定拆分尺寸。該拆分尺寸的取值主要取決于計算資源。將初始圖像以數值0進行邊緣擴增(Padding),將圖像統(tǒng)一為尺寸32m×32n的倍數。擴增后的圖像大小為H×W。H、W的計算式為
(1)
(2)
步驟2:使用一個大小為32m×32n的滑窗,以行、列步長為16m、16n像素大小對擴充后的圖像進行拆分。
步驟3:保留所有k張帶裂縫的拆分圖像,同時,為保證深度學習能夠充分獲得背景特征,學習背景信息;k張只包含背景的圖像也被隨機選取,進入最終的訓練集。最后,一張初始的超大尺寸裂縫圖像經過上述操作共可生成2k張的32m×32n拆分子圖進入深度學習訓練集。對多張超大尺寸裂縫圖像進行該構建操作便可構建出相應的訓練集。
對于試驗用鋼箱梁數據集,考慮計算機的計算性能,選取m=15、n=20。首先將尺寸為3 264×4 928的圖像(如圖 1(a))填充為3 360×5 120,并置零,保證后續(xù)拆分時能夠覆蓋到圖像的邊緣,見圖1(b),根據重疊分割的步驟2,設定滑窗大小為480×640對圖像以行/列240、320像素的步長,得到拆分子圖,如圖1(c)所示。一些將子圖像包含0填充部分。利用所有的子圖像作為輸入需要大量的訓練時間。因此,根據對應的子標簽,自動篩選出包含裂紋損傷像素的1 923個子圖像,如圖2(a)所示,即k=1 923。這1 923張裂縫子圖像組成了一個訓練集,命名為DS3,作為缺少背景圖像信息的數據集,與本方法進行對比。其余的13 939個子圖像不包含屬于裂紋損傷的像素,只表示背景信息,如圖2(b)所示。在13 939個子圖像中隨機選取1 923張子圖像。1 923張裂縫子圖像和1 923張背景子圖像構成一個訓練集,命名為DS4,見表1,即為本方法提出的數據集構建方法的最終結果。
圖1 訓練圖像處理過程
圖2 代表性的拆分子圖像
在圖像測試方法上,同樣針對細長裂縫的位置和幾何特征提出了新的超大尺寸細長裂縫圖像的測試處理方法。該方法包含3個步驟:
1)輸入測試圖像(假設為h×w),將圖像以0進行擴增,不同于訓練集,為了保證邊緣像素能夠被后續(xù)拆分覆蓋,擴增后尺寸H×W的計算式為
(3)
(4)
式中:m、n的取值同訓練集中的取值。
2)使用32m×32n的滑窗以行、列步長為32m、32n對測試圖像進行第1次拆分,隨后將分割起點定位于圖內的第16m行、第16n列像素,進行第2次拆分。通過此方法,第1次拆分的4張相鄰圖像交點將成為第2次分割圖像的中心。針對裂縫的位置不確定性對分割圖像邊緣進行多次覆蓋。將步驟2生成的一系列拆分圖一同輸入經訓練集訓練后的特征金字塔深度學習網絡,獲得預測結果。
3)最后將該預測結果按照滑窗順序重新拼裝成為帶0增的圖像。去除0增區(qū)域后,便獲得與原測試圖像大小相同的裂縫預測圖。同時,由于預測圖中的每一個像素經過二次分割擁有兩個預測值。本方法從較為安全的角度設定其中只要有一個預測判斷該像素為裂縫,該像素即可認為為裂縫像素,保證盡可能多的裂縫像素被檢測識別。
在測試試驗中,m、n的取值同訓練中的取值,分別為15、20。其余處理按上述3個步驟進行,與訓練集雖然稍有差別,但較為相似。
特征金字塔網絡(Feature Pyramid Network)的結構大致可以分為編碼器(Encoder)、解碼器(Decoder)和組裝(Assembling)3個部分,如圖3所示。編碼器是卷積神經網絡的前饋過程,用來提取不同階段的特征,并不斷降低特征圖分辨率。解碼器是自下而上的特征圖放大過程。通過上采樣,頂層特征圖和底層特征圖實現合并,豐富網絡獲取的語義信息。在融合完成后,網絡使用了3×3的卷積核對每一個融合結果并進行卷積,目的是消除上采樣中的混疊效應(Aliasing Effect)。最后,在組裝部分添加各個階段的特征圖獲取各層信息,這使得特征金字塔網絡擁有較強的語義信息獲取能力,同時也能夠滿足速度和內存的要求。特征金字塔網絡的特別之處在于預測是在不同的特征層中獨立進行的,有助于檢測不同尺寸的裂縫目標,契合工程獲取裂縫圖像中裂縫大小不確定性的特點。
圖3 特征金字塔網絡的結構
編碼器是一個特征提取網絡,一般采用VGG[16]和ResNet[17]作為骨干。在本方法中,為了提高對裂縫的特征提取效果,采用Se_ResNeXt50_32×4d[15]為編碼器。它包括3個部分:ResNet,SE(Squeeze-and-Excitation)模塊和X模塊,使網絡更加深入、更快收斂和更易優(yōu)化。同時,該模型的參數少,復雜度低,適合裂縫檢測任務。SE模塊采用的是SENet[15]的一個計算單元。
壓縮(Squeeze)采用了一個全局平均池化層,獲取具有全局視野的特征圖。激勵(Excitation)利用了一個全連接的神經網絡結構對壓縮后的結果進行非線性變換,然后將其作為一個權重乘以輸入特征。SENet主要對通道之間的相關性進行學習,減弱了對通道本身的關注,雖然稍微增加了計算量,但能夠實現更好的分割效果。X模塊來自ResNeXt[18],一個更優(yōu)版本的ResNet。ResNeXt的核心創(chuàng)新在于采用了聚合轉換(Aggregated Transformations),用相同拓撲結構的并行堆疊取代原始的ResNet的3層卷積塊,提高了模型的準確度,而不顯著增加參數量。同時,由于拓撲結構相同,超參數減少,模型也較原始的ResNet更易移植。ResNeXt50_32×4d從有50層網絡深度的ResNet50改進而來。其中,32×4d代表的是32條路徑,每條路徑的通道數為4個。SE模塊嵌入到ReNext50_32×4d中,最終獲得Se_resnext50_32×4d。其預訓練參數通過imagenet1000得到。
總的來說,編碼器是一個以Se_resnext50_32×4d為骨干的自下而上裂縫特征提取網絡。在編碼器入口,將大小為裂縫圖像輸入(32m×32n)。后續(xù)中,每一個階段便是特征金字塔的一個層次。選取conv2、conv3、conv4和conv5層提取的特征為{C2, C3, C4, C5},這是FPN網絡的4個層次。N是batch size,特征向量則分別為F2=(N, 256, 8m, 8n),F3=(N, 512, 4m, 4n),F4=(N,1 024, 2m, 2n),F5=(N, 2048,m,n)。需要注意的是,由于F5是原圖的1/32大小,所以,拆分滑窗的長度和寬度應是32的倍數。
解碼器是一個自上而下的放大裂縫特征圖的過程。P5=(N,256,m,n)是通過1×1卷積層直接從F5得到的。在接下來的操作中,通過插值算法將P5放大兩倍為(N,256,2m,2n)。F4經過1×1卷積層,變成(N,256,2m,2n)。將上述兩個特征向量相加,得到P4=(N,256,2m,2n)。這些操作被稱為跳躍連接(Skip Connection),如圖4所示,繼續(xù)使用這些操作來獲取P4、P3和P2。跳躍連接的優(yōu)勢在于它既可以利用頂層的高級語義特征(有助于裂縫特征分類),又可以利用底層的高分辨率信息(有助于裂縫特征定位)。
圖4 跳躍連接
組裝部分要求金字塔每一層輸出的特征圖具有相同尺寸大小,為了實現該目的,首先選擇包含3×3卷積層的W運算,采用雙線性插值放大,如圖5所示。
圖5 W操作
P5執(zhí)行3次W操作后,H5=(N,128,8m,8n)。以此類推,H4和H3分別進行兩次和一次W操作。此外,H2不需要放大。然后直接將Hi(i=2~5)相加,得到一個向量(N,256,8m,8n)。該向量經過3×3的卷積層和雙線性插值放大到原始裂紋圖像尺寸(N,1,32m,32n)。為了便于預測過程,通過將激活函數sigmoid的值改為0~1得到掩碼(N,1,480,640)。如果某點的值大于某一固定閾值,則預測該點為裂紋。在試驗中,選擇0.5作為閾值。
所有試驗均在Intel(R) Xeon(R) E5-2678 v3 @ 2.50 GHz、64.0 GB RAM和NVIDIA RTX2080TI、11.0 GB RAM的計算平臺上進行。基于4個不同的訓練集訓練了4個基于特征金字塔網絡結構的預測模型。為了討論方便,用DS1和DS2訓練獲得的特征金字塔網絡稱為Model1和Model2,用DS3和DS4訓練獲得的網絡稱為Model3和Model4。
假設在標簽和預測中均屬于裂縫的像素數為I,在標簽或預測中表示裂縫的像素數為U,交并比(Intersection over Union IoU)是圖像分割任務常用的評價指標,通過式(5)計算。
(5)
另一評價指標Dice Loss不僅可以作為深度學習訓練中的損失函數,也可以在一定程度上評價圖像分割的準確度。假設在裂紋分割任務中X為圖像對應的標記,Y是裂縫預測,Dice Loss通過式(6)計算。
(6)
圖6為4個模型在一些典型測試圖像上的裂縫檢測結果,圖7為基于4個不同訓練集測試中的評價指標IoU和Dice Loss的對比。圖6中展示的IoU值通過單張預測圖片與對應標記計算得到,圖7中展示的IoU和Dice Loss測試指標值為測試中所有圖片的預測同對應標記計算獲得的平均IoU和Dice Loss的值。從圖7可以看出,在IoU和Dice Loss方面,在測試圖像上,Model2比Model1出性能更好,Model2的IoU高于Model1,同時Model2的Dice Loss小于Model1。在分析了Model1和Model2的預測之后,發(fā)現一個值得注意的現象,如圖6所示,Model1和Model2的預測都忽略了測試圖像中的部分裂紋,導致預測中的裂紋長度比標簽中的短,在預測中丟失了部分裂紋。造成這種現象的原因之一是用于調整圖像形狀大小的雙線性插值算法,雙線性插值考慮已知像素值圍繞未知像素計算位置的最接近的2×2鄰域,然后取這4個像素的加權平均值來得到最終的插值值。調整大小的方法不是對測試圖像中的每個像素進行預測,而是對像素的統(tǒng)計值進行預測。一方面,Model1和Model2的預測不能在像素級上進行精確預測,但另一方面,模型仍然可以指出裂縫的位置。根據Model1和Model2預測的裂紋位置,可以采用一些方法改進裂紋預測,如利用擴展閾值算法可以擴展裂縫長度。從圖7(a)可以看出,Model1的IoU僅比Model2的IoU小0.02,但DS1中的圖像大小幾乎是DS2的1/3。這表明,更大的圖像尺寸并不能在很大程度上改善預測,而作為輸入的大尺寸圖像卻需要大量的存儲和計算空間。當需要縮放圖像以獲得一個新的訓練集時,建議首先考慮計算效率,而不是圖像大小。
圖6 不同模型的預測結果(預測1代表Model1對裂縫的預測,其余類似)
圖7 不同模型的測試指標值
使用該方法構建數據集時,測試中評價指標IoU和Dice Loss都有了明顯提升。Model3和Model4的IoU分別為0.70和0.78。由于Model3只在裂紋子圖像(DS3)上進行訓練,因此忽略了一些背景信息。從圖6第3、第4行的預測結果可以看出,Model3錯誤地將邊緣上的一些像素點預測為裂紋,鋼結構的一些凹槽特征也被預測為裂紋。盡管Model3的預測不如Model4準確,但Model3在結構健康監(jiān)測中可以視為提供了較為安全的估計。從圖6第5行可以看出,使用Model3對結構的主裂紋進行了預測,并將一些可疑特征視為裂紋,保證不遺漏裂紋損傷。Model3的IoU雖然不是最好的,但在工程上具有理想的特性。經過DS4的訓練,Model4變得比Model3更加優(yōu)秀和準確。Model4同時學習了背景信息和裂紋信息。在圖6中的預測4,Model4的性能最好,很好地處理了背景和溝槽的干擾。較高的精度意味著Model4可以為下一步的研究或測量提供精確的裂紋信息。在裂紋分割任務中,Model3和Model4的性能優(yōu)于Model1和Model2。對于基本訓練集的圖像,該方法被證明是比直接調整超大尺寸圖像大小方法更好的解決方案。部分裂縫便可以提供足夠的檢測信息。因此,該方法是一種合適的針對超大尺寸細長裂縫的處理方法。此外,該方法對圖像的分辨率沒有任何要求,適用于任意的高分辨率和低分辨率圖像。
針對鋼箱梁內部包含復雜背景和裂縫的超大尺寸圖像,提出了一種基于特征金字塔深度學習網絡的裂縫自動檢測方法,并進行了一系列對比試驗。主要結論如下:
1)基于本方法構建的訓練集,特征金字塔網絡能夠在測試中對3 264×4 928像素的橋鋼箱梁表面裂縫圖像實現最大交并比(IoU)為0.78,最小Dice Loss為0.12,表現優(yōu)于將圖像進行簡單縮放構建數據集訓練的模型。
2)采用雙線性插值方法將超大尺寸圖像(3 264×4 928)縮放至1 600×2 400像素或2 112×3 168像素,將會導致部分裂縫信息丟失,降低裂縫檢測準確度。建議采用本方法對超大尺寸裂縫圖像進行拆分,拆分尺寸大小可設定為480×640。
3)部分裂縫可以為深度學習網絡提供足夠的特征信息。該方法適合于裂縫檢測任務,并且該方法對于裂縫圖像的具體分辨率沒有嚴格的要求,為今后的裂縫自動檢測提供了一個較有潛力的解決方案。