李想,熊進剛,b
(南昌大學a.建筑工程學院;b.江西省近零能耗建筑工程實驗室,江西 南昌 330031)
鋼筋混凝土產生裂縫是土木工程中不可避免的問題。當前,常用的混凝土裂縫檢測方法還是以人工檢測為主,但是人工檢測存在工作量大、效率低、過于依賴經驗等缺點。除了人工檢測外,還存在熱成像檢測、超聲波檢測、熒光磁粉檢測、滲透檢測等無損方法,但都存在工序復雜、價格昂貴等缺點。因此,如何能夠高效而又經濟地檢測混凝土裂縫,成為了土木工程中亟待解決的問題。
人工智能技術正處于第3次發(fā)展浪潮,隨著深度學習理論的發(fā)展、計算機性能的提升和數(shù)據(jù)量的擴大,把人工智能技術應用到土木工程領域將是未來的一個發(fā)展趨勢。當前,已經有許多學者進行了人工智能檢測混凝土裂縫的相關研究。
徐港等[1]采用多種圖像連通域特征分析裂縫和噪聲的差異結合聚類算法提取出裂縫信息。劉立峰等[2]提出了一種基于高斯尺寸空間和支持向量機相結合的裂縫識別算法。張晶晶等[3]提出一種基于多尺度輸入圖像滲透模型的混凝土裂縫檢測方法。徐國整等[4]基于經典的 U-Net 網絡,提出了HU-ResNet卷積神經網絡模型識別混凝土表面裂縫。吳秋怡[5]利用金字塔解析網絡PSPNet實現(xiàn)路面裂縫檢測,實現(xiàn)像素級的裂縫區(qū)域識別。高慶飛等[6]結合神經網絡與滑動窗口算法,提出了橋梁裂縫定位技術。顧書豪等[7]設計了具有注意力機制和語義增強的特征模塊,有效地融合了語義信息和裂縫特征。
根據(jù)已有研究,可以發(fā)現(xiàn)當前基于傳統(tǒng)計算機視覺的裂縫識別方法普遍存在識別受噪聲影響大、精度低和漏檢率高的問題。而現(xiàn)有的基于深度學習的裂縫識別方法雖然在識別效果和精度上有所提升,但普遍是基于語義分割對裂縫進行識別,識別手段較為單一。因此,本文提出了一種基于深度學習單步多框檢測[8](single shot multibox detector,SSD)目標檢測的混凝土結構裂縫物體框識別方法。主要思路是利用深度卷積神經網絡提取裂縫特征,利用分類預測和回歸預測獲得裂縫的信息,最終在原圖上框選出裂縫的位置,從而達到識別裂縫的目的。
本研究以python為編程語言,使用PyTorch深度學習框架,以PyCharm2020為編程環(huán)境、Anaconda為庫管理器,涉及到的依賴庫主要有OpenCV、labelimg、TensorboardX、cuda和cudnn。使用的GPU為Nvidia GeForce RTX 2070 SUPER(8G),CPU為AMD Ryzen 7 3700X 8-Core。
數(shù)據(jù)集分別使用制作的CCIC裂縫圖像數(shù)據(jù)集[9-10]和BCD裂縫圖像數(shù)據(jù)集[11]。CCIC裂縫數(shù)據(jù)集的圖像如圖1所示,BCD裂縫數(shù)據(jù)集的圖像如圖2所示??梢园l(fā)現(xiàn)2個數(shù)據(jù)集幾乎涵蓋了工程中各種常見的混凝土裂縫形式(縱向、橫向和斜向裂縫等),使本文研究樣本具有充分的代表性。
圖1 CCIC數(shù)據(jù)集裂縫圖像Fig.1 Cracks images of CCIC dataset
圖2 BCD數(shù)據(jù)集裂縫圖像Fig.2 Cracks images of BCD dataset
使用labelimg工具生成訓練所用的數(shù)據(jù)標簽。labelimg是深度學習中一種常用的標注工具,它可以方便快捷地標注出圖片內物體的位置和種類。制作數(shù)據(jù)標簽的詳細步驟為:
1) 安裝labelimg工具,工作界面如圖3所示。
圖3 labelimg工作界面Fig.3 Labelimg work interface
2) 打開labelimg工具,通過Open Dir選項指定需要標注的圖片集。
3) 手動框選出裂縫的位置。
4) 設定該框選部分的類別。
5) 標注完每張圖片都會生成一份XML后綴的文件,該文件用來保存放標簽信息,存放XML文件的路徑通過Change Save Dir選項指定。生成XML文件的流程如圖4所示。
圖4 生成XML文件過程Fig.4 Process of generating an XML file
XML標簽文件包含原始圖片的尺寸、物體的類別和物體的位置信息,如圖5所示。其中width=227,height=227,depth=3表示原始圖片的尺寸為227×227×3。xmin=1,ymin=52,xmax=227,ymax=114表示框選的位置的右上角的坐標為(1,52),右下角的坐標為(227,114)。name=crack表示該框選部分的類別為裂縫。
利用voc_annotation.py腳本文件,將所有XML標簽文件里信息進行整合,并最終保存在crack_train.txt文件中。一個XML標簽文件僅僅保存一張圖片的位置信息和類別信息,crack_train.txt文件則保存了所有用來訓練網絡的圖片中的位置信息和類別信息。
圖5 XML文件詳情Fig.5 XML file details
SSD目標檢測算法對輸入的圖片不斷地進行特征提取,提取出許多特征層(Feature map),并將其中的一部分特征層設為有效特征層(Effective Feature map)。每一個有效特征層會將圖像劃分為大小不同的網格,每個有效特征層上的網格存在著一定數(shù)目的先驗框(priors box)。再利用回歸預測和分類預測來調整每個先驗框的位置和種類,結合非極大值抑制(non-maximum suppression)得到最終的預測框。SSD網絡結構如圖6所示。
2.1.1 有效特征層
有效特征層的高度和寬度代表著將輸入進來的圖片劃分成了高×寬的網格。以3×3×256的有效特征層為例,相當于把輸入的圖像劃分成了3×3的網格,如圖7所示。而每個網格上面存在著先驗框,利用這些網格和先驗框對輸入進來的圖片進行目標檢測,從而獲得需要的檢測目標。
2.1.2 先驗框
有效特征層上的每個網格都人為定義了先驗框,這些先驗框以網格的中心為中心。以劃分為3×3網格的圖片為例,如圖8所示。每個有效特征層上的單個網格含有的先驗框個數(shù)不同,先驗框與有效特征層的關系如表1所示。
SSD目標檢測算法中的基礎網絡部分由多個卷積層、最大池化層和ReLU激活函數(shù)層組成。當輸入一張圖片時,SSD目標檢測網絡自動將圖片的尺寸調整為300×300×3(寬×高×通道數(shù))大小。將裂縫圖片看作長寬都為300、通道數(shù)(Channel)為3的特征層。通過卷積核(Kernel)大小為3、填充幅度(Padding)為1的卷積運算和池化核與步長(Stride)都為2的最大池化運算,將特征層的長度和寬度進一步壓縮,并且持續(xù)擴大特征層的通道數(shù)。隨著卷積和池化運算的不斷進行,會產生許多特征層。當進行完最后一次最大池化時,先進行一次卷積核大小為3、填充幅度為6、膨脹因子為6的卷積,用來模擬全連接層。再進行一次卷積核大小為1的卷積。最終輸出的特征層長寬為19,通道數(shù)為512。再將其中一部分特征層劃分為有效特征層。被劃分為有效特征層的特征層有:Conv4-3和Fc7-2,它們的長寬分別為38和19,通道數(shù)都為512?;A網絡各層的信息如表2所示。其中Convolution表示卷積運算、ReLU表示ReLU激活函數(shù),Maxpooling表示最大池化運算,Kernel表示卷積核大小,Padding表示填充幅度,Stride表示步長,Dliation表示膨脹因子。
圖6 SSD網絡結構Fig.6 Single shot multibox detectornetwork structure
圖7 裂縫圖片的網格劃分Fig.7 Grids division of crack images
圖8 網格上的先驗框Fig.8 Priori boxes on the grid
表1 先驗框與有效特征層的關系Tab.1 Relationship between the prior frame and the effective feature layer
特征層經過基礎網絡之后繼續(xù)向后傳遞,進入輔助網絡。輔助網絡利用卷積運算,繼續(xù)壓縮特征層的長度和寬度。隨著卷積運算的進行,同樣會生成許多特征層。當進行完最后一次卷積運算時,會輸出一個長度和寬度都為1、通道數(shù)為256的特征層。將其中一部分特征層劃分為有效特征層。被劃分的有效特征層有:Conv6-2、Conv7-2、Conv8-2、Conv9-2。輔助網絡各層的信息如表3所示。
預測網絡主要用來完成回歸預測和分類預測的任務?;貧w預測用來獲得預測框的位置,分類預測用來獲得預測框的類別。預測網絡的各層信息如表4所示。
進行回歸預測時,需要對有效特征層的所有先驗框進行計算。利用卷積運算對先驗框進行調整,從而得到最終預測框的位置。因此,對獲取到的有效特征層進行通道數(shù)為4×np的卷積,其中np為該有效特征層的單個網格擁有的先驗框數(shù)量。因為調整一個預測框的位置需要中心點坐標的偏移量x0、y0,預測框的寬度w和高度h,所以進行卷積運算的通道數(shù)為4×np。
進行分類預測時,同樣需要對有效特征層的所有先驗框進行計算。所以,對獲取到的有效特征層進行一次通道數(shù)為nc×np卷積,其中nc是需要區(qū)分的類別數(shù)。因為本文只針對圖像是否存在裂縫進行研究,共計2類:背景類和裂縫類,所以nc=2。
表2 基礎網絡的各層信息Tab.2 Layers of information in the basic network
表3 輔助網絡的各層信息Tab.3 Layers of information in the auxiliary network
表4 預測網絡的各層信息Tab.4 Layers of information in the predict network
分別使用2 000、4 000、6 000、8 000張含有裂縫的圖片。其中90%作為訓練集,用于進行模型的訓練;剩下10%作為測試集,用于測試模型檢測的效果與精度。
先進行超參數(shù)設置。由于GPU的顯存不充足,所以將一次訓練所用的樣本數(shù)(Batch Size)設置為8。將學習率(Learning Rate)設置為1×10-5,學習率表示網絡訓練的快慢程度。學習率大,網絡訓練速度快,但是容易出現(xiàn)損失值振蕩;學習率小,損失值收斂效果好,但是訓練速度慢。定義最小置信度為0.5,代表著預測結果的得分若大于0.5,則將這個結果留存待用。總共訓練200個輪次(Epoch),更新一個輪次表示訓練中所有訓練數(shù)據(jù)均被使用過一次,即訓練了一個周期。應用遷移學習的思想,使用預訓練好的權重達到加速模型的訓練的目的。之后讀取crack_train.txt文件獲得進行訓練的樣本信息。
之后開始訓練。載入SSD目標檢測算法模型,將每個批次(Batch)所用的圖片和標簽傳入到網絡當中。然后進行梯度清零、計算損失值和反向傳播進行模型的參數(shù)更新。每一個輪次保存一次權重,共有200份權重文件。之后的預測環(huán)節(jié)使用第200個輪次生成的權重文件進行預測。訓練過程示意圖如圖9所示。
圖9 訓練過程示意圖Fig.9 Schematic diagram of training process
因為使用的圖片尺寸為227×227,而SSD目標檢測算法需要使用300×300尺寸的圖片。因此,需要檢測的圖片進行預處理,具體做法為對進行檢測的圖片進行填充使圖片尺寸變?yōu)?00×300。之后把圖片傳入網絡當中進行檢測并獲得置信度最高的200個預測框的位置信息。之后對這200個預測框的置信度進行遍歷,依次判斷先驗框的置信度是否大于最小置信度,如果預測框的置信度都小于最小置信度,那么將原圖返回。如果存在大于最小置信度的預測框,那么結合非極大值抑制(非極大值抑制就是只保留最大值)只將置信度最大的預測框進行繪制,得到最終的檢測結果。檢測過程示意圖如圖10所示。
圖10 檢測過程示意圖Fig.10 Schematic diagram of detection process
利用測試集圖片進行檢測的結果如圖11所示,列舉出測試集中的部分(40張)圖片的識別結果如圖12所示。其中方框為預測框,將被識別的裂縫框選出來,左上角的標簽“crack 0.84”代表這張圖片識別的種類和置信度??梢园l(fā)現(xiàn),該模型對于橫向、縱向和斜向裂縫都能進行較為精確的識別。再進行隨機圖片的裂縫識別,以驗證模型的普適性,如圖13??梢姡撃P蛯τ诰W絡上隨機選取的裂縫圖片也有較好的識別效果。
圖11 單張測試集圖片識別效果Fig.11 Recognition effect of single test set image
利用損失函數(shù)的收斂情況和所有類的平均精確度(mAP)值來評價模型的好壞。通過損失值這個指標來反映訓練時的狀態(tài),從而更新權重參數(shù)。具體的表現(xiàn)形式為損失值越小,權重越優(yōu)化,模型越精確。通過mAP來量化模型的精確度,具體表現(xiàn)形式為mAP值越大,模型越精確。
圖12 部分測試集圖片識別效果Fig.12 Recognition effect of some test set image
圖13 互聯(lián)網圖片識別效果Fig.13 Recognition effect of Internet image
4.2.1 回歸預測損失值
進行回歸預測的目的是獲得預測框的位置。訓練過程中回歸預測損失值變化曲線如圖14所示。橫坐標為輪次數(shù),最大輪次數(shù)為200;縱坐標代表回歸預測損失值??梢钥闯?,在不同訓練樣本數(shù)的條件下,回歸預測的損失值變化并不明顯,但都是在運行到第40個輪次附近時收斂。當回歸預測的損失值收斂時,表示回歸預測的損失值不會繼續(xù)下降,所以網絡的權重不會更新太多,獲得預測框位置的準確度也不會繼續(xù)提升。
輪次數(shù)圖14 回歸預測損失值變化曲線Fig.14 Regression prediction loss curve
4.2.2 分類預測損失值
進行分類預測的目的是獲得預測框的種類。訓練過程中分類預測損失值變化曲線如圖15所示。橫坐標為輪次數(shù),最大輪次數(shù)為200;縱坐標代表分類預測損失值??梢钥闯?,在運行到第50輪次附近時損失值收斂??梢钥闯?,在訓練樣本越多時,分類預測損失值收斂時越小,且在樣本數(shù)較少時明顯,隨著樣本數(shù)的提升,損失值收斂變化的越小。與回歸預測類似,當分類預測的損失值收斂時,獲得預測框種類的準確度也不會繼續(xù)提升。
輪次數(shù)圖15 分類預測損失值變化曲線Fig.15 Classification prediction loss curve
4.2.3 CCIC數(shù)據(jù)集和BCD數(shù)據(jù)集訓練對比
為了檢驗裂縫訓練圖像的樣本代表性,使用CCIC和BCD 2種不同的數(shù)據(jù)集樣本進行訓練,并將二者的損失值進行對比,圖16為2種數(shù)據(jù)集的分類預測收斂后的損失值對比,圖17為2種數(shù)據(jù)集的回
輪次數(shù)(a) 1 800張裂縫圖片
輪次數(shù)(b) 3 600張裂縫圖片
輪次數(shù)(c) 5 400張裂縫圖片
輪次數(shù)(d) 7 200張裂縫圖片圖16 分類預測損失值對比Fig.16 Comparison of loss value after classification prediction
輪次數(shù)(a) 1 800張裂縫圖片
輪次數(shù)(b) 3 600張裂縫圖片
輪次數(shù)(c) 5 400張裂縫圖片
輪次數(shù)(d) 7 200張裂縫圖片圖17 回歸預測損失值對比Fig.17 Comparison of loss value after regression prediction
歸預測收斂后的損失值對比。結果表明:對于分類預測而言,隨著訓練樣本數(shù)目的提升,不同數(shù)據(jù)集訓練之后的分類預測收斂后的損失值趨于一致。說明數(shù)據(jù)集的種類對于分類預測的影響不大,單一數(shù)據(jù)集的樣本代表性較好。而對于回歸預測而言,CCIC數(shù)據(jù)集的回歸預測收斂后的損失值原本是小于BCD數(shù)據(jù)集的,可隨著訓練樣本數(shù)目的提升,CCIC數(shù)據(jù)集的回歸預測收斂后的損失值變得大于BCD數(shù)據(jù)集的回歸預測收斂后的損失值。說明數(shù)據(jù)集的種類對于回歸預測的影響較大,單一數(shù)據(jù)集的樣本代表性較差。
4.2.4 平均準確度均值(mAP)計算
如圖18、圖19所示,框1為真實框,框2和框3為預測框???為識別準確的框,框3為識別不準確的框。當預測框和真實框的IOU>0.5時被認為是識別準確,IOU<0.5時被認為是識別不準確。其中IOU衡量預測框和真實框的重合程度。計算IOU的公式為:
(1)
其中:Sn為交集的面積;Su為并集的面積。
圖18 識別準確的結果Fig.18 Results of recognition accurate
圖19 識別不準確的結果Fig.19 Results of recognition inaccurate
AP(average precision)表示平均精確度。而mAP表示所有類的AP求平均值。因為本模型為檢測裂縫,所以只有一個類(背景類不算),因此AP=mAP。計算訓練樣本個數(shù)為1 800、3 600、5 400、7 200時的mAP,分別為94.78%、95.29%、96.92%和98.5%。可以發(fā)現(xiàn),mAP普遍在95%以上,因此模型擁有較高的精確度。
1) 本研究基于SSD目標檢測算法為混凝土的裂縫檢測提出了一種新的方式。結合無人機航拍技術可以檢測到那些人工難以到達位置的裂縫,極大地節(jié)省人力物力,并且為深度學習應用到土木工程提供了參考。
2) 本文提出的識別方法對混凝土裂縫的識別效果較好,且具有一定的普適性。
3) 訓練使用的數(shù)據(jù)集的樣本代表性有待提升。
4) 該識別系統(tǒng)對細微裂縫識別效果有待提升。