劉永勝,熊吉光,游志杰,吳勛杰,翟天正
(1.華東交通大學(xué)土木建筑學(xué)院,江西南昌330013;2.安徽理工大學(xué)深部煤礦采動響應(yīng)與災(zāi)害防控國家重點實驗室,安徽淮南232001)
裂縫作為土木工程中最為常見的表觀病害形式,常見于隧道、公路、橋梁及墻體表面。 建構(gòu)筑物隨著表面裂縫的進一步擴展,結(jié)構(gòu)的損傷將逐步從表觀轉(zhuǎn)移到內(nèi)部, 嚴重的將影響結(jié)構(gòu)的耐久性,甚至導(dǎo)致其整體性破壞引發(fā)重大事故,故此對結(jié)構(gòu)表觀裂縫進行檢測識別就顯得尤為重要。
近年來,不少學(xué)者將深度學(xué)習(xí)方法運用在土木工程學(xué)科各個領(lǐng)域,Xu 等[1]應(yīng)用深度學(xué)習(xí)目標(biāo)檢測技術(shù)從圖像中識別和定位受損鋼筋混凝土柱的多類型地震損傷,此技術(shù)可為后期研究震害損傷提供資源。 丁楊等[2]將人工智能運用在監(jiān)測大體積混凝土放熱中,結(jié)合7 種人工智能方法,選擇合適的算法并進行優(yōu)化,可為今后土木工程領(lǐng)域監(jiān)測-預(yù)測-預(yù)警提供依據(jù)。 Fang 等[3]利用深度學(xué)習(xí)計算機視覺領(lǐng)域技術(shù),借助監(jiān)控攝像頭對施工現(xiàn)場進行安全檢測實時識別工人有無佩戴安全帽。
學(xué)者利用深度學(xué)習(xí)中卷積神經(jīng)網(wǎng)絡(luò)可將低級特征通過卷積操作抽象成高級特征, 表示這一特點進行了結(jié)構(gòu)表觀裂縫病害檢測研究。 Lei 等[4]利用深度卷積神經(jīng)網(wǎng)絡(luò)對道路路面裂縫進行檢測。黃彩萍等[5]利用卷積神經(jīng)網(wǎng)絡(luò)對混凝土表觀病害進行智能分類達到90%以上的準確率。王麗蘋[6]運用深度學(xué)習(xí)目標(biāo)檢測中Faster R-CNN 模型對混凝土路面裂縫進行檢測。袁澤輝等[7]將卷積神經(jīng)網(wǎng)絡(luò)運用在管道表面缺陷識別研究方面, 取得了較高的識別率。 廖延娜等[8]通過擴充數(shù)據(jù)集、聚類算法對數(shù)據(jù)進行聚類及對YOLOv3 網(wǎng)絡(luò)進行改進的手段,使得修改后的網(wǎng)絡(luò)能提高小裂縫檢測精度。馬健等[9]提出用YOLOv5 網(wǎng)絡(luò)對古建筑木結(jié)構(gòu)裂縫進行檢測,相對于傳統(tǒng)技術(shù)具有高效、便捷等較多優(yōu)點。
除R-CNN 及YOLO 系列之外,SSD 網(wǎng)絡(luò)在目標(biāo)檢測領(lǐng)域也備受關(guān)注。 SSD 網(wǎng)絡(luò)采用回歸思想,網(wǎng)絡(luò)直接輸出類別概率及位置信息, 具有檢測性能較好、檢測速度快、準確率高等特點,但對于小目標(biāo)的識別效果一般。 故論文通過改進SSD 網(wǎng)絡(luò)模型來實現(xiàn)多場景下結(jié)構(gòu)表觀裂縫病害檢測,運用深度學(xué)習(xí)技術(shù)更加智能化的檢測出結(jié)構(gòu)表面裂縫病害。
研究在數(shù)據(jù)集及模型上進行了改進,相比于原SSD 模型在檢測精度和檢測速度上得到明顯提升,主要工作有以下幾個方面: 首先將SSD 網(wǎng)絡(luò)原有Backbone 替換為輕量級的MobileNetV2 網(wǎng)絡(luò),目的是加快網(wǎng)絡(luò)推理速度的同時減小模型的參數(shù),使其能滿足實時檢測, 為后期部署在終端提供現(xiàn)實基礎(chǔ)。 其次引入通道注意力機制SENet 結(jié)構(gòu),使模型學(xué)習(xí)到不同通道的信息,從而實現(xiàn)通道的自動校準來提升檢測的精確率。 然后通過利用多個場景不同環(huán)境下數(shù)據(jù)集進行融合,增強網(wǎng)絡(luò)對裂縫的識別能力, 使模型能運用于多場景條件下。 最后運用Kmeans 聚類算法對目標(biāo)數(shù)據(jù)集先驗框進行分析,根據(jù)所得結(jié)果修改原有數(shù)據(jù)集中的先驗框?qū)捀弑壤?,從而提高網(wǎng)絡(luò)對目標(biāo)的學(xué)習(xí)能力,加快網(wǎng)絡(luò)的收斂。
SSD 全 稱 為Single shot multibox detector,是Liu 等[10]在ECCV2016 上提出的。SSD 網(wǎng)絡(luò)是基于回歸的目標(biāo)檢測算法,相較于其他算法具有速度快以及檢測準確率高的優(yōu)勢。同時結(jié)合了YOLO 的回歸思想和Faster R-CNN 中的Anchor 機制。 采用回歸思想,降低了模型的復(fù)雜度,從而提高算法的實時性; 采用Anchor 機制, 通過設(shè)計不同高寬比先驗框,進行回歸預(yù)測。
SSD 采用VGG16 模型作為前置骨干網(wǎng)絡(luò),并對VGG16 模型進行了一定的修改, 使其用于整個網(wǎng)絡(luò)的特征提取。 骨干網(wǎng)絡(luò)去除了原始VGG16 模型中的Dropout 層與FC8 層,將FC6 和FC7 替換為卷積層Conv6 和Conv7; 之后在末端添加4 個卷積層Conv8_2、Conv9_2、Conv10_2 和Conv11_2, 具體網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。向SSD 網(wǎng)絡(luò)輸入固定尺寸的圖像, 將其傳輸?shù)礁倪M后的VGG16 模型中獲得不同尺寸大小的特征圖,在不同特征圖上對預(yù)先默認的邊界框計算其類別及置信度, 最終通過NMS 方法(非極大值抑制)移除掉一部分檢驗框,從而輸出最優(yōu)的檢測結(jié)果。
圖1 SSD 網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.1 Schematic diagram of SSD network structure
MobileNetV2 是由Sandler 等[11]提出并在Mobile-NetV1 基礎(chǔ)上改進后得到的輕量級、 高效化卷積神經(jīng)網(wǎng)絡(luò)。 MobileNetV2 也被稱之為深度可分離卷積,其主要特征是將傳統(tǒng)的卷積過程分離成了深度卷積和點卷積兩個過程,以及網(wǎng)絡(luò)中添加了倒殘差結(jié)構(gòu)和線性激活函數(shù),這使得網(wǎng)絡(luò)能在加快推理速度的同時,又能不損失模型的檢測精度。 圖2 為深度可分離卷積和傳統(tǒng)卷積計算過程對比圖。
圖2 傳統(tǒng)卷積與深度可分離卷積Fig.2 Traditional convolution with depth-separable convolution
從圖2 可知, 傳統(tǒng)卷積過程的計算量為D×D×M×N,而深度可分離卷積過程的計算量D×D×1×M+1×1×M×N,兩者之比為
本算法使用卷積核尺寸D=3,從上述比值結(jié)果中可得出, 深度可分離卷積可減少8/9 網(wǎng)絡(luò)結(jié)構(gòu)計算量,因此可加快模型的檢測速度。
MobileNetV2 網(wǎng)絡(luò)結(jié)構(gòu)中還加入了倒殘差結(jié)構(gòu),如圖3 所示,參考了ResNet 模型中殘差塊而進行改進的。 與ResNet 模型中不同的是,該結(jié)構(gòu)先利用1×1 卷積對特征進行升維,擴張其深度,再用3×3卷積在高維度空間進行特征提取,可獲得更豐富的特征,最后經(jīng)過1×1 卷積降低通道維度并利用線性激活函數(shù),該結(jié)構(gòu)使得網(wǎng)絡(luò)能夠獲取到圖像更多的特征從而增強網(wǎng)絡(luò)的表達能力。
圖3 倒殘差結(jié)構(gòu)示意圖Fig.3 Diagram of inverted residual structure
為了能更好的滿足工業(yè)中對目標(biāo)實時檢測要求, 論文用輕量級的MobileNetV2 模型作為特征提取網(wǎng)絡(luò)替換掉SSD 中原有VGG16 模型。 具體操作如下,保持原有SSD 算法中輸入圖像尺寸,即300×300×3,去除原本MobileNetV2 模型中的全連接層和池化層,并在尾部添加4 個由倒殘差結(jié)構(gòu)組成的卷積層。 為了實現(xiàn)對不同尺度裂縫均有較好的檢測效果,選取網(wǎng)絡(luò)中6 個不同尺度特征圖來實現(xiàn)裂縫的分類和定位, 分別為19×19,10×10,5×5, 3×3,2×2,1×1,改進后的SSD 算法網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)如表1所示。
表1 改進后SSD 算法網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)Tab.1 Parameters of the network structure of the improved SSD algorithm
注意力機制[12]已廣泛運用在計算機視覺各個領(lǐng)域,利用注意力機制可使網(wǎng)絡(luò)更多關(guān)注特征中的一些細節(jié)信息,從而一定程度上提高特征的表達能力。SENet 是通道注意力機制模塊的縮寫, 該機制主要通過關(guān)注特征圖各通道之間的關(guān)系,從而達到提高性能的效果。
SENet 模塊結(jié)構(gòu)示意圖如圖4 所示,其先對由卷積得到的特征圖進行全局平均池化, 然后對全局特征進行激勵操作,學(xué)習(xí)各通道之間的關(guān)系,此時,網(wǎng)絡(luò)會重點關(guān)注信息量較大的通道特征,而對一些信息量較小的通道進行忽略。 完成上述操作后將得到不同通道的權(quán)重,最后權(quán)重與先前的特征圖相乘得到最終的特征圖,送入到檢測頭進行分類和定位。
圖4 SENet 模塊結(jié)構(gòu)示意圖Fig.4 Schematic diagram of SENet module structure
由于文章更多關(guān)注的是多場景不同環(huán)境下結(jié)構(gòu)表面的裂縫,故將收集到的隧道(混凝土)、公路(瀝青)及橋梁(鋼材)3 種場景下裂縫數(shù)據(jù)進行混合,混合后的數(shù)據(jù)集涵蓋了工程中可能出現(xiàn)的多種常見背景及裂縫形式,豐富了研究樣本數(shù)據(jù)。 與現(xiàn)有文獻數(shù)據(jù)集大多只關(guān)注一類環(huán)境下的裂縫不同,混合構(gòu)建的新數(shù)據(jù)集使網(wǎng)絡(luò)能更好的學(xué)習(xí)到不同環(huán)境下裂縫對象,從而提高網(wǎng)絡(luò)的識別能力(圖5)。
圖5 改進后SSD 模型網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.5 Schematic diagram of the network structure of the improved SSD model
根據(jù)網(wǎng)絡(luò)訓(xùn)練需求,將收集到原始圖像全部分割成統(tǒng)一大小300×300 像素,并確保每張圖片中都至少包含一個目標(biāo),總共得到1 000 張圖片數(shù)據(jù)將割成統(tǒng)一大小300×300 像素,并確保每張圖片中都至少包含一個目標(biāo), 總共得到1 000 張圖片數(shù)據(jù)將其命名為S_Crack(圖6),作為最終網(wǎng)絡(luò)訓(xùn)練驗證數(shù)據(jù)集,對照實驗采用同等數(shù)量的單一裂縫數(shù)據(jù)集。
圖6 S_Crack 部分數(shù)據(jù)Fig.6 S_Crack section data
最后,使用深度學(xué)習(xí)目標(biāo)檢測中常用的標(biāo)注工具Labelimg 進行數(shù)據(jù)標(biāo)簽的制作,該工具可快速便捷的構(gòu)建進行訓(xùn)練所需要的文件。
根據(jù)不同尺度特征圖,網(wǎng)絡(luò)生成對應(yīng)大小與高寬比的先驗框,計算公式如下
式中:Smax和Smin是原SSD 論文[9]中設(shè)定好的最大和最小特征層尺度,默認為0.9 和0.2。 m 為特征層層數(shù),默認取m=6,k 的取值為[1,m],中間各特征層尺度按上述公式計算。
當(dāng)特征層尺度一定時, 變化高寬比設(shè)定Aspect_ratios=[3,2,1,1/2,1/3]來計算先驗框?qū)挕⒏摺?/p>
由于論文數(shù)據(jù)集所關(guān)注的目標(biāo)類型與通用數(shù)據(jù)集相差較大, 采用原始VOC 數(shù)據(jù)集寬高比的先驗框生成候選框,將會造成候選框的冗余,從而增加計算量。 K-means 聚類算法在眾多場景下都有較好的表現(xiàn)[13-15],故為消除人工設(shè)計先驗框存在的主觀因素, 使用K-means 算法設(shè)計自適應(yīng)先驗框,對前文所建立的S_Crack 目標(biāo)檢測數(shù)據(jù)集中裂縫的真實框作聚類分析,從而得到先驗框?qū)捀弑取?圖7 為數(shù)據(jù)集中所有先驗框聚類后的結(jié)果。
圖7 先驗框聚類結(jié)果Fig.7 Priori frame clustering results
根據(jù)聚類后的結(jié)果, 進一步設(shè)定適合文章數(shù)據(jù)集的寬高比Aspect_ratios=[6,3.5,1,1/3.5,1/6]。
運用Google Colab 深度學(xué)習(xí)開放平臺, 以Pytorch 深度學(xué)習(xí)為框架,Python 為編程語言實現(xiàn)論文裂縫目標(biāo)檢測模型訓(xùn)練及驗證。實驗環(huán)境為Ubuntu操作系統(tǒng),GPU Tesla T4,CUDA 11.2,Pytorch 1.2.0。本次實驗數(shù)據(jù)集為S_Crack 共1 000 張混合環(huán)境下的裂縫圖像,按9∶1 劃分訓(xùn)練集和驗證集,故900 張作為訓(xùn)練集,100 張作為驗證集。Epoch 設(shè)置為200,Batch_size 為16,Initial_learning_rate 為1e-4。
本實驗選取的評估指標(biāo)是精確率(precision,P),其可直接反映模型的精確性,公式如下
式中:TP為模型預(yù)測為正的正樣本;FP為模型預(yù)測為正的負樣本。
除上述指標(biāo)外,論文還考慮為滿足實際生產(chǎn)將檢測速度作為該實驗的評估指標(biāo),以每秒傳輸幀數(shù)FPS 作為評估,F(xiàn)PS 越大說明檢測速度越快。
為驗證修改后模型的性能,論文對修改前后算法進行訓(xùn)練并測試,各算法檢測結(jié)果如表2??梢钥闯觯唇?jīng)修改的原始SSD 算法精確率不高且FPS 較小,無法滿足工程實際上的實時性要求,替換Anchor為K-means 聚類優(yōu)化后的算法,精確率和檢測速度都有所提升,這是因為聚類后的先驗框更符合裂縫的寬高比,因此不會造成候選框的冗余,加快網(wǎng)絡(luò)的推理速度。 使用融合數(shù)據(jù)集進行訓(xùn)練,可使算法性能略有提高,說明網(wǎng)絡(luò)從不同環(huán)境下裂縫數(shù)據(jù)中學(xué)習(xí)到了信息。 更換Backbone 為MobileNetV2 且加入通道注意力機制模塊后精確率提高到73.9%, 相比于原始SSD 算法增加了3.6%,且FPS 為122 frame,檢測速度是先前的2 倍多,足以滿足生產(chǎn)生活中的實時檢測。
表2 算法檢測結(jié)果Tab.2 Algorithm detection results
從圖8 損失曲線中可以得出, 經(jīng)論文方法改進后的SSD 算法相較于原始算法, 訓(xùn)練得到的平均損失率更低,說明改進后模型的收斂性更好。
圖8 訓(xùn)練平均損失曲線Fig.8 Training average loss curve
從互聯(lián)網(wǎng)上獲取房屋內(nèi)外墻體表面裂縫圖像進行測試,實驗結(jié)果如圖9 所示,改進后算法對裂縫的置信度明顯高于原始算法,且對未經(jīng)過訓(xùn)練的圖像仍有較高的準確率,說明了模型的普適性。
圖9 算法修改前后效果對比Fig.9 Comparison of the effect before and after algorithm modification
1) 在原有SSD 目標(biāo)檢測算法的基礎(chǔ)上進行修改,提出了一種新的建筑表觀裂縫檢測算法,在提高算法準確率、加快網(wǎng)絡(luò)推理速度的同時框選出裂縫可能出現(xiàn)的位置還在預(yù)測圖像上標(biāo)注出裂縫的個數(shù),方便觀測人員對裂縫數(shù)量進行統(tǒng)計。
2) 改進后算法的精確率較先前增加了3.6%,檢測速度是先前的2 倍多,可滿足實時檢測。
3) 相比于費時費力的傳統(tǒng)檢測方法,利用該算法對裂縫進行檢測可減少檢測人員因視覺疲勞所帶來的誤差。 模型小、推理速度快,后期可將模型部署在無人機或智能小車上,進行房屋建筑外墻和隧道襯砌的表觀裂縫識別,從而更快速、更精確實現(xiàn)大批量場景檢測。