卞長庚,郝萬君,馬文琪
(蘇州科技大學 電子與信息工程學院,江蘇 蘇州 215009)
混凝土建筑由于自然環境的長期腐蝕、長時間負載過重以及施工不當等原因會產生裂縫,這會嚴重影響其以后的使用,并且會對人員的生命和財產造成安全隱患[1]。因此,盡早檢測出裂縫并對建筑進行加固和維修,具有重要意義。
傳統的裂縫檢測方法依賴于人工操作,主觀性大,不僅效率低下,且無法保證工作人員的安全[2]。而基于圖像的裂縫識別算法,雖然替代了人工,但只是提取裂縫的一些淺層特征,檢測的效果較差,且容易受到光照等外界因素的影響[3]。
近些年來,深度學習的發展為建筑裂縫檢測提供了新的方法。基于深度學習的目標檢測算法不依賴于人工,而是通過自主學習便可直接對輸入的圖像進行檢測。目前,目標檢測算法可分為兩類,一類是一階段的算法,如SSD[4]、YOLO[5]等,另一類是二階段的算法,如Faster R-CNN[6]等。一階段的算法雖檢測速度較快,但檢測精度不高,相反,二階段的算法檢測精度較高,但是推理速度較慢。隨著深度學習的發展,眾多研究者開始將目標檢測算法應用于建筑裂縫的檢測。
孫朝云等[7]采用VGG網絡替換Faster R-CNN的主干特征提取網絡,雖然提高了裂縫檢測的精度,但模型復雜,速度較慢。李鵬程等[8]采用MobileNet對SSD主干做輕量化處理,提升了感受野范圍,具有較快的檢測速度,但檢測裂縫的精度較低,以上算法無法兼顧檢測精度和速度。而隨著YOLO系列算法的發展,如今YOLO算法檢測精度和速度都得到了很大提升。楊富強等[9]采用廣義交并比對YOLOv3損失函數進行改進,并采用遷移學習進行訓練,模型具有較好的檢測精度。郝巨鳴等[10]在YOLOv4中引入Ghost模塊,并加入高效注意力機制ECA,降低了模型的復雜度,也提高了檢測精度和速度。然而嵌入式設備的發展對網絡模型大小、檢測的精度和速度都提出了更高的要求。
YOLOv5各方面的性能都優于之前的算法。為此,基于上述研究,該文在YOLOv5的基礎上進一步改進,采用輕量級網絡Xception[11]對主干網絡輕量化,同時加入ASPP[12]模塊擴大特征感受野范圍,加強主干網絡特征提取能力,最后在網絡的頸部加入Shuffle Attention[13]注意力機制,進一步提高裂縫檢測的精度,通過在自行構建的數據集上進行訓練和實驗,驗證了改進算法的有效性。
對于建筑裂縫的檢測,考慮其精度和速度的要求,選取YOLOv5s作為檢測的網絡模型,其網絡結構如圖1所示。

圖1 YOLOv5網絡結構
YOLOv5的網絡結構主要由Backbone、Neck、Head共3部分組成,其輸入端主要對圖片進行縮放、數據增強以及自適應錨框計算。
主干Backbone主要是由Focus、CBS、C3、SPP等模塊組成。其中,Focus模塊主要對圖片進行切片操作,將原先圖片的RGB3個通道擴展成12個通道;CBS是基本的卷積層,由BN以及SiLU構成;C3模塊是由CBS模塊與殘差模塊連接構成,在不增加網絡深度的情況下實現了對殘差特征的學習;SPP模塊對不同大小的卷積核進行池化、融合,提取圖片重要特征。
頸部Neck是由FPN和PAN組成,FPN采用上采樣,將語義特征從高層傳遞到低層,而PAN采用下采樣,將定位特征從低層傳遞到高層,提高了特征融合的能力。
輸出端Head負責預測,輸出對象的概率、置信度和檢測框的位置,YOLOv5有3層負責預測,分別對大小不同的物體進行檢測。
由于YOLOv5的主干網絡CSPDarknet中含有較多的普通卷積層,這加大了計算量,影響了檢測速度,因此該文使用Xception輕量化網絡作為YOLOv5的主干特征提取網絡。
Xception網絡識別性能優于CSPDarknet,同時能減少卷積運算,并且在準確率、效率等方面已經超過了MobileNet等輕量化網絡。Xception是Inception網絡的“極端”版本,該網絡首先采用1×1卷積尋找跨通道相關性,然后分別映射每個輸出通道的空間相關性,如圖2所示。

圖2 Xception模塊
Xception網絡由3個部分組成,輸入圖片的尺寸為299×299×3,首先在Entry flow中經過兩次普通卷積,然后使用深度可分離卷積和殘差結構的組合得到19×19×728的特征圖,所得特征圖輸入到Middle flow中繼續使用深度可分離卷積進行特征提取,重復八次,最后輸入到Exit flow中處理,最終得到2 048維度的向量。
為直觀反映Xception和CSPDarknet的性能,在YOLOv5s網絡中分別加入兩種網絡進行測試,兩者的參數量對比如表1所示。可以看出Xception網絡層數和參數量更少,計算速度更快,能夠實現網絡輕量化。

表1 主干網絡性能對比
YOLOv5采用的是空間金字塔池化SPP,它將輸入的特征并行通過不同大小的池化核,變成固定大小的向量,再進行融合。
由于對主干網絡進行輕量化,使得參數減少,雖然提高了檢測速度,但導致檢測的精度降低。為了加強主干網絡特征提取能力,該文采用ASPP(Atrous Spatial Pyramid Pooling)模塊替換SPP模塊。ASPP是在SPP的基礎上引入了空洞卷積,當提取的特征具有較大的感受野時,特征圖的分辨率會降低,兩者之間是矛盾的,空洞卷積很好地解決了這個矛盾。與普通卷積不同的是,空洞卷積引入了“擴張率(rate)”參數,它表示卷積核各個點之間的間隔數量,其原理如圖3所示。

圖3 普通卷積與空洞卷積
圖3左側是普通卷積,擴張率為1,感受野為3×3,而右側是空洞卷積,擴張率為2,其感受野為7×7,依此類推。空洞卷積的優勢在于不進行池化操作,擴大了感受野,使得每個卷積的輸出信息范圍都較大,ASPP原理如圖4所示,與SPP相比,該模塊使用多個并行的空洞卷積,單獨處理不同大小的特征,然后再進行融合,在擴大了感受野的同時,提高了主干網絡特征提取的能力,也提高了模型的檢測速度。

圖4 ASPP模塊
在深度學習中,注意力機制能夠聚焦于基本特征而抑制不必要的特征,從而提高模型提取特征的能力,并且是即插即用,因此目前被廣泛用于目標檢測。為進一步增強模型的特征提取能力,提高裂縫檢測精度,該文在YOLOv5的頸部添加SA注意力機制,與頸部的C3模塊融合。
目前注意力機制主要分為通道注意力機制和空間注意力機制。這兩種注意力機制只注意通道或空間一個方面,效率較低,如SE[14]。此后,有學者將這兩種注意力機制整合到一個模塊中,如CBAM[15],并且效果取得了顯著改善,但加大了計算量,使得模型收斂困難。當然也有學者簡化了通道或空間注意力,如ECA[16]使用一維卷積簡化了SE模塊中權值的計算。而該文所采用的SA注意力機制以一種更輕但更有效的方式將兩種注意力融合到一起,其整體結構如圖5所示。

圖5 SA原理
對于一個特征X,SA先沿著通道的維度將X∈RC×H×W分為g組,即X=[X1,X2,…,Xg],每組特征Xk∈RC/g×H×W又被分成兩個分支,一個分支根據通道之間的關系生成通道注意圖,另一個分支根據空間信息生成空間注意圖。其中,SA內部的通道注意力和SE實現類似,而空間注意力的實現是通過GN(GroupNorm)獲取空間的維度信息,然后進行連接,最后使用通道洗牌操作,使得通道之間的信息在不同維度之間傳遞,通道注意力和空間注意力的最終輸出分別如式(1)和式(2)所示。
(1)
(2)

最終,改進的YOLOv5的網絡結構如圖6所示。當輸入為640×640×3時,Entry flow和Middle flow輸出的特征圖大小分別為80×80×256和40×40×512,在頸部進行特征融合,而Exit flow輸出特征圖大小為20×20×2 048,需經過一次卷積將通道數2 048調整為1 024,再輸入到ASPP模塊中,之后進行特征融合,頸部C3模塊與SA融合,提高檢測精度,最后在Head端進行檢測。

圖6 改進YOLOv5網絡結構
由于目前還沒有統一的建筑裂縫檢測的數據集,因此通過網絡搜索和拍攝自行構建數據集,同時對采集到的圖片采用Mosaic數據增強,最終得到約6 000張圖片,并按照8∶1∶1比例劃分訓練集、驗證集、測試集。
隨后使用labelimg工具標注數據集,這里由于裂縫比較狹長,若直接采用一個整框標注會使得背景所占比例較高,無法充分提取特征,若采用小框標注,會加大訓練難度。因此采用多個適中大小的框交替標注,覆蓋整條裂縫,標注完成生成YOLO格式txt文件。
實驗環境為W10系統、GPU為RTX3050,深度學習的框架為Pytorch,設置初始學習率為0.001,動量為0.937,最大迭代次數為600輪。
將改進的YOLOv5模型在數據集上進行訓練,其損失函數的曲線如圖7所示。

圖7 Loss曲線
如圖7所示,隨著訓練輪數增多,損失逐漸降低。前100輪衰減較快,第200輪迭代曲線有略微震蕩,最終約300輪迭代時,曲線收斂。
深度學習模型評價指標一般采用精確率P、召回率R、平均精度AP、平均精度均值mAP、模型單位時間檢測圖片幀數FPS以及參數量等,相關評價指標的計算公式如式(3)~式(6)所示。
(3)
(4)

(5)
(6)
其中,TP表示裂縫圖片中正樣本預測正確的數量,TN表示負樣本預測正確的數量,FP為正樣本預測錯誤的數量,FN表示負樣本預測錯誤的數量。
為了驗證所加模塊對模型性能的影響,進行消融實驗,其結果如表2所示。

表2 消融實驗
由表2可以看出,首先,僅添加Xception模塊,雖然檢測速度得到了提高,但mAP降低了0.5百分點,因為對主干網絡輕量化,使得參數量減少,造成了檢測的精度降低。其次,僅添加ASPP模塊,mAP提高了0.6百分點,FPS提高了1.1 f/s,因為ASPP中引入了空洞卷積,擴大了感受野,加強了主干的特征提取能力。再者,僅加入SA注意力機制,mAP提高了1.3百分點,同時由于SA模塊的參數量較少,屬于真正的輕量級模塊,FPS也得到了提高。最后,同時加入3種模塊,提升效果最為明顯,mAP提高了1.6百分點,FPS達到50.8 f/s,且參數量也和原來一致,從而驗證了所改進的模型在性能上優于原先的模型。
同時,為了驗證SA注意力機制的有效性,在YOLOv5模型中分別加入目前比較常用注意力機制SE、CBAM以及ECA和SA進行對比,其實驗結果如表3所示。

表3 注意力對比實驗
從表3可以看出,由于SE只考慮通道之間的關系,未考慮空間信息,故mAP和FPS較低。CBAM注意力機制結合了通道和空間注意力機制,雖然提高了檢測精度,但是CBAM的計算量大,速度較慢。ECA注意力機制雖然mAP和CBAM相同,但FPS較SE、CBAM有較大提高,因為ECA去掉了SE模塊中的全連接層,在全局平均池化之后直接用一個1維卷積學習,提高了檢測速度。而該文所加入的SA注意力機制,mAP和FPS比其它3種注意力機制都高,因為SA的參數量最少,屬于輕量化的模塊,并且結合了通道和空間特征,既提高了檢測的精度,也加快了檢測速度,驗證了SA注意力機制的有效性。
為進一步對改進的模型進行評估,將改進算法與目前較典型的目標檢測算法進行縱向對比,其結果如表4所示。

表4 目標檢測算法對比
從表4可以看出,Faster R-CNN作為二階段的目標檢測算法,雖然檢測精度是所有算法里精度最高的,但是模型復雜,參數較多,檢測速度最慢。Mobile-SSD、YOLOv4-tiny等輕量化模型,雖然檢測速度快于Faster R-CNN,但檢測精度不高。而文中算法雖然精度沒有Faster-RCNN高,但mAP仍達到了91.2%,且檢測速度是最快的。因此,綜合檢測的精度和速度兩方面來看,文中算法性能是最優的。
最后,為了驗證改進模型的檢測效果,選取3組典型的裂縫圖片,其檢測效果對比如圖8所示。

圖8 檢測效果對比
從圖8可以看到,檢測以上幾種裂縫,改進之后的算法檢測裂縫的置信度都大于原算法,除此之外,原算法的檢測框出現了不連續的情況,沒有完整反映出裂縫的走勢,而改進之后的算法的檢測框都是連續的,覆蓋整個裂縫,驗證了改進算法的有效性。
提出了一種改進的YOLOv5建筑裂縫檢測算法,主要創新點在于使用Xception網絡對主干網絡輕量化,并采用ASPP模塊替換SPP模塊,最后在頸部添加SA注意力機制。通過實驗證明,改進算法滿足了裂縫檢測精度和實時性的要求,但由于檢測框較多,導致模型的召回率較低,有待進一步優化。