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