劉建華,董家修,王念念*,方宏遠
(1.廣州市高速公路有限公司,廣東 廣州 510288;2.鄭州大學 水利科學與工程學院,河南 鄭州 450001)
裂縫是路面常見的病害之一。路面出現(xiàn)裂縫病害時,隨著車輛載荷的作用會導(dǎo)致裂縫兩側(cè)進一步破壞,造成路面大面積損壞,增加道路的維護費用。因此,快速、準確地找到道路裂縫的位置并及時修復(fù),可防止路面結(jié)構(gòu)進一步惡化,并且維護費用也會進一步減少[1]。目前,該項工作已得到了社會各界的高度重視,各類先進的技術(shù)手段都已應(yīng)用到道路裂縫檢測中[2]。
數(shù)字圖像處理技術(shù)應(yīng)用于路面的病害檢測中?;趫D像處理的算法包括閾值分割、區(qū)域增長及邊緣檢測的方法[3-4]。Wang 等[5]提出了一種基于多尺度局部最優(yōu)閾值的分割算法,與其他閾值分割方法相比,該算法更有效、魯棒性更好;Muduli 等[6]結(jié)合雙曲線正切(HBT)濾波和Canny 邊緣檢測算法進行路面裂縫的檢測,可以更加精確地檢測到目標區(qū)域的邊緣,故該方法提高了路面裂縫檢測的精度;Ayenu-Prah 等[7]提出一種基于二維經(jīng)驗?zāi)J椒纸猓˙EMD)與Sobel 邊緣檢測器檢測路面裂縫的方法,該方法使用BEMD 去除路面圖像的噪聲,然后使用Sobel 邊緣檢測器進行裂縫的檢測,以此提高裂縫檢測的精度,但是,這種檢測方法效率較低,并且對于背景復(fù)雜的圖像檢測效果不佳。
基于機器學習的檢測方法已經(jīng)應(yīng)用于路面病害檢測中。Marques 等[8]提出了一種基于支持向量機的路面裂縫檢測算法。該方法首先對圖像進行預(yù)處理,然后使用支持向量機的方法檢測每塊中是否包含裂縫。該方法有效提取了裂縫區(qū)域,但是該方法對圖像質(zhì)量要求較高,不能有效提取模糊圖像的裂縫輪廓。監(jiān)督學習與非監(jiān)督學習的最大不同是用于訓(xùn)練與測試的數(shù)據(jù)中有沒有標簽。Akagic 等[9]提出了一種基于灰度直方圖和Ostu 閾值法的瀝青路面裂縫無監(jiān)督的檢測方法,該方法在低信噪比的情況下取得了令人滿意的性能。
隨著深度學習的發(fā)展,深度學習逐漸應(yīng)用到路面病害的檢測與分割中?;谏疃葘W習的路面病害檢測與分割算法,大大提高了檢測與分割的性能。這些方法可以分為非像素級別檢測方法、像素級別分割方法兩大類。非像素級別檢測的目的是在圖像中使用邊界框定位目標對象并確定目標對象類型。為了提高檢測的效率與精度,科研人員提出了許多深度學習模型,如YOLO[10]、SSD[11]等算法。Zhang等[12]提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的深層深度學習模型來進行混凝土裂縫的檢測;Cha 等[13]提出了一種包含4 個卷積層的卷積神經(jīng)網(wǎng)絡(luò)來提取混凝土子裂縫特征,并且取得了優(yōu)異的效果。但是該方法無法提取裂縫的整體特征。而像素級別的分割方法為圖像中的每個像素分別標簽,可以提取出路面損害的具體輪廓。Zou 等[14]提出了一種Deep Crack模型,主要使用編碼器-解碼器將路面圖像像素有效分割為背景區(qū)域與裂縫區(qū)域;David 等[15]提出了一種基于U-Net 的分割網(wǎng)絡(luò),僅實現(xiàn)了對路面圖像裂紋的像素級的有效分割;Yang 等[16]提出了一種基于全卷積神經(jīng)網(wǎng)絡(luò)的裂縫分割技術(shù),該網(wǎng)絡(luò)有效實現(xiàn)了裂縫的分類與逐像素的裂縫分割,并進一步測量了各類裂縫的長度、寬度。但是該方法對于細小裂縫無法進行有效的分割與測量。
基于以上研究存在的問題,為了進一步提高算法的精度與效率,本文提出一種Crack Mask R-CNN路面裂縫像素級實例分割算法。為了適應(yīng)不同大小的裂縫,通過調(diào)整錨的比例和大小來優(yōu)化RPN。使用IoU-guided NMS[17]代 替 非 極 大 值 抑 制 算 法(NMS),提高分割的精度。為了優(yōu)化模型的超參數(shù),通過多次試驗,選取分割效果最優(yōu)的超參數(shù)組合。然后與其他分割的模型進行了對比分析,證明本文所提出模型的分割有效性。最后,通過提取裂縫的拓撲特征,進一步測量裂縫的像素級別尺寸信息。
Crack Mask R-CNN 的基本結(jié)構(gòu)如圖1 所示,主要由卷積神經(jīng)網(wǎng)絡(luò)、改進的區(qū)域建議網(wǎng)絡(luò)(Region Proposal Network,RPN)、RoIAlign、分割網(wǎng)絡(luò)4 部分組成。通過預(yù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)提取裂縫特征,結(jié)合特征金字塔網(wǎng)絡(luò)(Feature Pyramid network,F(xiàn)PN)[18]自頂向下進行特征融合,然后由改進的RPN網(wǎng)絡(luò)生成若干個候選區(qū)域(RoI),并采用IoU-guided NMS 代替非極大值抑制算法(NMS)保留精確的候選區(qū)域,接著通過RoIAlign 將保留的候選區(qū)域映射到固定維度,最后通過分割網(wǎng)絡(luò),輸出路面損害的類別、像素級別的分割結(jié)果。
圖1 Crack Mask R-CNN 網(wǎng)絡(luò)結(jié)構(gòu)
(1)卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)
Crack Mask R-CNN 算法使用具有5 個卷積層的ResNet101[19]作為卷積神經(jīng)網(wǎng)絡(luò)。該網(wǎng)絡(luò)還采用了特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network,F(xiàn)PN)自頂向下將高分辨率、低語義的底層特征和低分辨率、高語義的頂部特征進行融合,從而豐富了各個尺寸特征的語義信息。卷積的計算方式如式(1)所示:
式中:W(i,j)為卷積核;X(i,j)為神經(jīng)網(wǎng)絡(luò)的輸入;*為 卷 積 操 作。i代 表 第i行,j代 表 第j列,m代 表 裂 縫圖像的最大行,n代表裂縫圖像的最大列。
(2)改進的區(qū)域建議網(wǎng)絡(luò)(Region Proposal Network,RPN)
區(qū)域建議網(wǎng)絡(luò)是在卷積神經(jīng)網(wǎng)絡(luò)提取特征的基礎(chǔ)上獲得多個獲選區(qū)域(Region of Interest,RoI)。區(qū)域建議網(wǎng)絡(luò)采用全卷積神經(jīng)網(wǎng)絡(luò),使用上層網(wǎng)絡(luò)輸出的特征圖作為該網(wǎng)絡(luò)的輸入,通過不同縱橫比、不同尺度anchor 在特征圖中滑動,生成若干個候選區(qū)域,一次全卷積操作可以獲得多個區(qū)域的特征。依據(jù)路面裂縫病害的特征,為了適應(yīng)不同形狀、不同大小的裂縫區(qū)域,本文采用尺度為32×32、64×64、128×128,縱橫比為1∶1、1∶2、2∶1 進行候選區(qū)域的提取。候選區(qū)域計算過程如式(2)所示:
式中:X(P)為特征圖的特征向量;d(P)為模型的預(yù)測區(qū)域值;ωT為參數(shù)矩陣。
通過上述方式,會產(chǎn)生很多候選區(qū)域,并且有冗余候選框。原始RPN 網(wǎng)絡(luò)采用非極大值抑制法(Non-Maximum Suppression,NMS)消除由RPN 產(chǎn)生的冗余候選框,該種方式首先會降序排列每一類別保留的候選區(qū)域并選取得分高的目標框,若其余目標區(qū)域與該區(qū)域重疊面積(IoU)大于一定的閾值時會刪除該區(qū)域框。該種方式只考慮了分類置信度,但是候選區(qū)域框與位置也有密切的聯(lián)系,故本文通過引入IoU-guided NMS 引入位置置信度,解決了分類置信度與位置置信度不匹配的問題。
IoU-guided NMS 首先取出位置置信度最大的候選區(qū)域框,然后過濾掉與該區(qū)域框重疊面積大于一定閾值的區(qū)域框,計算剩下候選區(qū)域框的分類置信度,并更新分類置信度最高的候選區(qū)域框,直至所有的獲選區(qū)域框處理完畢。NMS 是以候選區(qū)域框的分類置信度排序,然后按IoU 過濾得到分類置信度最高的框。IoU-guided NMS 則是以候選區(qū)域框的定位置信度排序,然后按IoU 過濾,并更新分類置信度。以得到定位置信度最高的框,并且分類置信度。
(3)RoIAlign
RPN 保留下來的候選區(qū)域和特征圖在位置上具有對應(yīng)關(guān)系,需要把這些候選區(qū)域映射到與其對應(yīng)的特征圖中。Crack Mask R-CNN 采用RoIAlign 實現(xiàn)了該過程,并將對應(yīng)特征向量固定到一定維度。
(4)分割網(wǎng)絡(luò)
經(jīng)過上述網(wǎng)絡(luò)之后,采用包含Bounding-box 回歸網(wǎng)絡(luò)、分類網(wǎng)絡(luò)及Mask 分支的分割網(wǎng)絡(luò),實現(xiàn)路面裂縫病害的定位、分類及分割。
深度學習訓(xùn)練需要大數(shù)據(jù)的支持,本文主要對裂縫病害的分割進行研究,故在高速公路上使用車載CCD 相機實時拍攝高清道路圖像,并進行篩選,收集具有裂縫病害的2 000 張圖像作為本文試驗的初始數(shù)據(jù)進行研究。
2.2.1 數(shù)據(jù)去噪
首先,在數(shù)據(jù)采集過程中,采集到的圖像通常有各種噪聲的干擾,比如拍攝光線干擾造成的圖像昏暗、拍攝角度干擾造成的圖像灰度分布不均勻等。為了使裂縫病害圖像更加清晰,需要對圖像進行去噪處理。根據(jù)本文裂縫圖像存在噪聲的特點,使用高斯過濾器對圖像進行光滑去噪,消除拍攝過程中產(chǎn)生的噪聲;其次,拍攝到的裂縫圖像,有可能尺寸不同,故需要對圖像進行裁剪,本文試驗將圖像裁剪為512×512 像素。
2.2.2 數(shù)據(jù)增強
可用于試驗的裂縫圖像只有2 000 張,故需要使用數(shù)據(jù)增強技術(shù)進行數(shù)據(jù)集擴充。本文首先采用翻轉(zhuǎn)變換、平移變換,尺度變換及添加高斯噪聲的方式,總計生成用于訓(xùn)練測試的圖像6 000 張。這樣不僅增加模型訓(xùn)練的數(shù)據(jù)量,而且,通過隨機添加高斯噪聲,提升了訓(xùn)練模型的泛化能力及魯棒性。
用于模型訓(xùn)練與測試的圖像都需要相應(yīng)的標簽才能學習到語義信息,所以需要對圖像進行標注。本文使用開源的labelme 軟件對圖像的背景區(qū)域及裂縫區(qū)域進行標注,背景及裂縫區(qū)域分別記為0,1。按照3∶1∶1 的比例將標注后的圖像分為訓(xùn)練集、驗證集、測試集。訓(xùn)練集用來訓(xùn)練本文所提出模型,使用驗證集對訓(xùn)練的模型進行模型驗證并進行超參數(shù)選擇,測試集用來進行模型最終性能的評估。
數(shù)據(jù)處理需要高性能計算的支持,本文的工作是基于linux 系統(tǒng)中的TensorFlow 框架,并且配備了Nvidia 2080Ti 的GPU 以 及32GBRAM 的Intel i9 的CPU。本文使用CUDA 和CUDNN 進一步加快圖像處理的速度。使用的計算機語言為Python3.6。
圖像分割中有許多標準來衡量算法的精度。在本文中采用像素精度來評估算法的分割效果。像素精度(Pixel Accuracy,PA)[20]表示標記正確的像素占總像素的比例。如式(3)所示:
式中:PPA為像素精度;pij為屬于類i而被判定為類j的像素數(shù)量;pii為判定正確的像素數(shù)量。
4.1.1 超參數(shù)的選擇
在Crack Mask R-CNN 中需要設(shè)置許多影響模型訓(xùn)練的超參數(shù),其中常見且重要的超參數(shù)包括初始學習率、動量參數(shù)、權(quán)重衰減參數(shù)。初始學習率影響著模型的學習速率,若初始學習率太大將會導(dǎo)致模型無法收斂;若初始學習率太小,則會導(dǎo)致模型學習速度太慢。動量參數(shù)可以提高學習效率,使用權(quán)重衰減參數(shù)可以有效地防止模型過度擬合。根據(jù)Crack Mask R-CNN 模型訓(xùn)練的需要,開始訓(xùn)練時應(yīng)選擇較大的學習率;訓(xùn)練一段時間后,應(yīng)縮短參數(shù)更新步幅,減小學習率。在本試驗中,最大迭代次數(shù)設(shè)置為10 000,選擇初始學習率為0.001、0.005、0.000 1,并選擇指數(shù)衰減方式,每隔2 000 次迭代學習率衰減一次。為了選擇最優(yōu)的超參數(shù)組合,進行多次對比試驗,并在驗證集進行驗證,試驗結(jié)果如表1 所示。故選擇最優(yōu)的超參數(shù)組合,初始學習率、動量參數(shù)、權(quán)重衰減參數(shù)分別為0.005、0.85、0.000 2。此時像素精度為92.98%。
表1 超參數(shù)選擇
4.1.2 卷積神經(jīng)網(wǎng)絡(luò)對模型的影響
Crack Mask R-CNN 中使用了預(yù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)進行裂縫特征的初步提取。為了驗證卷積神經(jīng)網(wǎng)絡(luò)對Crack Mask R-CNN 分割性能的影響,本文采用VGG16、ResNet50、ResNet101 共3 種卷積神經(jīng)網(wǎng)絡(luò)進行試驗。本試驗對在驗證集上的分割PA 及分割效率進行分析。分割PA 為在驗證集上的像素精度,分割效率為在驗證集上的平均分割時間。表2顯示了基于3 種預(yù)訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)的分割性能。從表2 可以看出:隨著3 種預(yù)訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)深度的增加,分割效率有所下降,平均裂縫分割時間增加了0.8 s,但是,路面裂縫像素精度越來越高,基于ResNet101 的Crack Mask R-CNN 的像素精度達92.38%,增加了3.73%。
表2 3 種卷積神經(jīng)網(wǎng)絡(luò)的性能對比
為了驗證Crack Mask R-CNN 路面裂縫分割的有效性,本試驗使用測試集中的1 200 張裂縫圖像進行Crack Mask R-CNN、Mask R-CNN、FCN、邊緣檢測方法的定量與定性對比分析。圖2 為4 種模型在混凝土及瀝青路面裂縫分割示例。從圖2 可以看出:本文提出的Crack Mask R-CNN 可以較為完整、準確地提取到裂縫輪廓,并且沒有冗余信息,但是Mask R-CNN、FCN 分割模型與Crack Mask R-CNN 相比,分割效果有待提高。邊緣檢測方法裂縫分割效果較差,并且會產(chǎn)生一些冗余信息,這是由于邊緣檢測等數(shù)字圖像處理方法對于目標區(qū)域與背景區(qū)域灰度值變化較大的檢測效果較好,對于變化較小的檢測效果有待提高。
圖2 4 種模型分割效果對比示例
表3 展示了4 種分割模型在測試集上的定量分割性能。可以看出:Crack Mask R-CNN 與其他3 種分割模型相比具有最優(yōu)的分割像素精度值,達93.45%,分別增加了3.18%、3.40%、12.24%。但是由于Crack Mask R-CNN 的網(wǎng)絡(luò)結(jié)構(gòu)更加復(fù)雜,平均分割時間有所提高。邊緣檢測方法的路面裂縫分割時間最短,但是分割效果最差,難以達到有效分割。
表3 四種分割模型性能對比
為了給公路養(yǎng)護部門提供更好的幫助,本文在路面裂縫良好分割的基礎(chǔ)上,對裂縫像素級別的長度、平均寬度及面積展開研究。首先基于分割得到的Mask 掩碼圖像得到裂縫的拓撲特征,然后使用遍歷算法統(tǒng)計裂縫的面積及長度像素級別尺寸信息,通過面積像素尺寸信息/長度像素尺寸信息,從而得到裂縫的平均寬度像素尺寸信息,如圖3 所示。
圖3 路面裂縫像素級別尺寸信息測量示例
針對路面裂縫的精確分割與測量,提出了一種Crack Mask R-CNN 智能分割模型。本文通過預(yù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)并結(jié)合特征金字塔網(wǎng)絡(luò)提取裂縫特征,在RPN 網(wǎng)絡(luò)中通過優(yōu)化錨框的比例和大小提取更加精確的候選區(qū)域,并采用IoU-guided NMS 保留定位置信度及分類置信度較高的候選區(qū)域,以此提高了分割的性能。試驗結(jié)果表明:本文提出的Crack Mask R-CNN 分割模型具有有效的分割效果,與Mask R-CNN、FCN、邊緣檢測方法進行對比,證明了本文提出方法具有更高的分割精度。在良好分割結(jié)果的基礎(chǔ)上,實現(xiàn)了路面裂縫像素級別尺寸信息的測量,可為公路養(yǎng)護部門提供幫助。