卞長(zhǎng)庚,郝萬君,馬文琪
(蘇州科技大學(xué) 電子與信息工程學(xué)院,江蘇 蘇州 215009)
混凝土建筑由于自然環(huán)境的長(zhǎng)期腐蝕、長(zhǎng)時(shí)間負(fù)載過重以及施工不當(dāng)?shù)仍驎?huì)產(chǎn)生裂縫,這會(huì)嚴(yán)重影響其以后的使用,并且會(huì)對(duì)人員的生命和財(cái)產(chǎn)造成安全隱患[1]。因此,盡早檢測(cè)出裂縫并對(duì)建筑進(jìn)行加固和維修,具有重要意義。
傳統(tǒng)的裂縫檢測(cè)方法依賴于人工操作,主觀性大,不僅效率低下,且無法保證工作人員的安全[2]。而基于圖像的裂縫識(shí)別算法,雖然替代了人工,但只是提取裂縫的一些淺層特征,檢測(cè)的效果較差,且容易受到光照等外界因素的影響[3]。
近些年來,深度學(xué)習(xí)的發(fā)展為建筑裂縫檢測(cè)提供了新的方法。基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法不依賴于人工,而是通過自主學(xué)習(xí)便可直接對(duì)輸入的圖像進(jìn)行檢測(cè)。目前,目標(biāo)檢測(cè)算法可分為兩類,一類是一階段的算法,如SSD[4]、YOLO[5]等,另一類是二階段的算法,如Faster R-CNN[6]等。一階段的算法雖檢測(cè)速度較快,但檢測(cè)精度不高,相反,二階段的算法檢測(cè)精度較高,但是推理速度較慢。隨著深度學(xué)習(xí)的發(fā)展,眾多研究者開始將目標(biāo)檢測(cè)算法應(yīng)用于建筑裂縫的檢測(cè)。
孫朝云等[7]采用VGG網(wǎng)絡(luò)替換Faster R-CNN的主干特征提取網(wǎng)絡(luò),雖然提高了裂縫檢測(cè)的精度,但模型復(fù)雜,速度較慢。李鵬程等[8]采用MobileNet對(duì)SSD主干做輕量化處理,提升了感受野范圍,具有較快的檢測(cè)速度,但檢測(cè)裂縫的精度較低,以上算法無法兼顧檢測(cè)精度和速度。而隨著YOLO系列算法的發(fā)展,如今YOLO算法檢測(cè)精度和速度都得到了很大提升。楊富強(qiáng)等[9]采用廣義交并比對(duì)YOLOv3損失函數(shù)進(jìn)行改進(jìn),并采用遷移學(xué)習(xí)進(jìn)行訓(xùn)練,模型具有較好的檢測(cè)精度。郝巨鳴等[10]在YOLOv4中引入Ghost模塊,并加入高效注意力機(jī)制ECA,降低了模型的復(fù)雜度,也提高了檢測(cè)精度和速度。然而嵌入式設(shè)備的發(fā)展對(duì)網(wǎng)絡(luò)模型大小、檢測(cè)的精度和速度都提出了更高的要求。
YOLOv5各方面的性能都優(yōu)于之前的算法。為此,基于上述研究,該文在YOLOv5的基礎(chǔ)上進(jìn)一步改進(jìn),采用輕量級(jí)網(wǎng)絡(luò)Xception[11]對(duì)主干網(wǎng)絡(luò)輕量化,同時(shí)加入ASPP[12]模塊擴(kuò)大特征感受野范圍,加強(qiáng)主干網(wǎng)絡(luò)特征提取能力,最后在網(wǎng)絡(luò)的頸部加入Shuffle Attention[13]注意力機(jī)制,進(jìn)一步提高裂縫檢測(cè)的精度,通過在自行構(gòu)建的數(shù)據(jù)集上進(jìn)行訓(xùn)練和實(shí)驗(yàn),驗(yàn)證了改進(jìn)算法的有效性。
對(duì)于建筑裂縫的檢測(cè),考慮其精度和速度的要求,選取YOLOv5s作為檢測(cè)的網(wǎng)絡(luò)模型,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)主要由Backbone、Neck、Head共3部分組成,其輸入端主要對(duì)圖片進(jìn)行縮放、數(shù)據(jù)增強(qiáng)以及自適應(yīng)錨框計(jì)算。
主干Backbone主要是由Focus、CBS、C3、SPP等模塊組成。其中,Focus模塊主要對(duì)圖片進(jìn)行切片操作,將原先圖片的RGB3個(gè)通道擴(kuò)展成12個(gè)通道;CBS是基本的卷積層,由BN以及SiLU構(gòu)成;C3模塊是由CBS模塊與殘差模塊連接構(gòu)成,在不增加網(wǎng)絡(luò)深度的情況下實(shí)現(xiàn)了對(duì)殘差特征的學(xué)習(xí);SPP模塊對(duì)不同大小的卷積核進(jìn)行池化、融合,提取圖片重要特征。
頸部Neck是由FPN和PAN組成,FPN采用上采樣,將語義特征從高層傳遞到低層,而PAN采用下采樣,將定位特征從低層傳遞到高層,提高了特征融合的能力。
輸出端Head負(fù)責(zé)預(yù)測(cè),輸出對(duì)象的概率、置信度和檢測(cè)框的位置,YOLOv5有3層負(fù)責(zé)預(yù)測(cè),分別對(duì)大小不同的物體進(jìn)行檢測(cè)。
由于YOLOv5的主干網(wǎng)絡(luò)CSPDarknet中含有較多的普通卷積層,這加大了計(jì)算量,影響了檢測(cè)速度,因此該文使用Xception輕量化網(wǎng)絡(luò)作為YOLOv5的主干特征提取網(wǎng)絡(luò)。
Xception網(wǎng)絡(luò)識(shí)別性能優(yōu)于CSPDarknet,同時(shí)能減少卷積運(yùn)算,并且在準(zhǔn)確率、效率等方面已經(jīng)超過了MobileNet等輕量化網(wǎng)絡(luò)。Xception是Inception網(wǎng)絡(luò)的“極端”版本,該網(wǎng)絡(luò)首先采用1×1卷積尋找跨通道相關(guān)性,然后分別映射每個(gè)輸出通道的空間相關(guān)性,如圖2所示。
圖2 Xception模塊
Xception網(wǎng)絡(luò)由3個(gè)部分組成,輸入圖片的尺寸為299×299×3,首先在Entry flow中經(jīng)過兩次普通卷積,然后使用深度可分離卷積和殘差結(jié)構(gòu)的組合得到19×19×728的特征圖,所得特征圖輸入到Middle flow中繼續(xù)使用深度可分離卷積進(jìn)行特征提取,重復(fù)八次,最后輸入到Exit flow中處理,最終得到2 048維度的向量。
為直觀反映Xception和CSPDarknet的性能,在YOLOv5s網(wǎng)絡(luò)中分別加入兩種網(wǎng)絡(luò)進(jìn)行測(cè)試,兩者的參數(shù)量對(duì)比如表1所示??梢钥闯鯴ception網(wǎng)絡(luò)層數(shù)和參數(shù)量更少,計(jì)算速度更快,能夠?qū)崿F(xiàn)網(wǎng)絡(luò)輕量化。
表1 主干網(wǎng)絡(luò)性能對(duì)比
YOLOv5采用的是空間金字塔池化SPP,它將輸入的特征并行通過不同大小的池化核,變成固定大小的向量,再進(jìn)行融合。
由于對(duì)主干網(wǎng)絡(luò)進(jìn)行輕量化,使得參數(shù)減少,雖然提高了檢測(cè)速度,但導(dǎo)致檢測(cè)的精度降低。為了加強(qiáng)主干網(wǎng)絡(luò)特征提取能力,該文采用ASPP(Atrous Spatial Pyramid Pooling)模塊替換SPP模塊。ASPP是在SPP的基礎(chǔ)上引入了空洞卷積,當(dāng)提取的特征具有較大的感受野時(shí),特征圖的分辨率會(huì)降低,兩者之間是矛盾的,空洞卷積很好地解決了這個(gè)矛盾。與普通卷積不同的是,空洞卷積引入了“擴(kuò)張率(rate)”參數(shù),它表示卷積核各個(gè)點(diǎn)之間的間隔數(shù)量,其原理如圖3所示。
圖3 普通卷積與空洞卷積
圖3左側(cè)是普通卷積,擴(kuò)張率為1,感受野為3×3,而右側(cè)是空洞卷積,擴(kuò)張率為2,其感受野為7×7,依此類推??斩淳矸e的優(yōu)勢(shì)在于不進(jìn)行池化操作,擴(kuò)大了感受野,使得每個(gè)卷積的輸出信息范圍都較大,ASPP原理如圖4所示,與SPP相比,該模塊使用多個(gè)并行的空洞卷積,單獨(dú)處理不同大小的特征,然后再進(jìn)行融合,在擴(kuò)大了感受野的同時(shí),提高了主干網(wǎng)絡(luò)特征提取的能力,也提高了模型的檢測(cè)速度。
圖4 ASPP模塊
在深度學(xué)習(xí)中,注意力機(jī)制能夠聚焦于基本特征而抑制不必要的特征,從而提高模型提取特征的能力,并且是即插即用,因此目前被廣泛用于目標(biāo)檢測(cè)。為進(jìn)一步增強(qiáng)模型的特征提取能力,提高裂縫檢測(cè)精度,該文在YOLOv5的頸部添加SA注意力機(jī)制,與頸部的C3模塊融合。
目前注意力機(jī)制主要分為通道注意力機(jī)制和空間注意力機(jī)制。這兩種注意力機(jī)制只注意通道或空間一個(gè)方面,效率較低,如SE[14]。此后,有學(xué)者將這兩種注意力機(jī)制整合到一個(gè)模塊中,如CBAM[15],并且效果取得了顯著改善,但加大了計(jì)算量,使得模型收斂困難。當(dāng)然也有學(xué)者簡(jiǎn)化了通道或空間注意力,如ECA[16]使用一維卷積簡(jiǎn)化了SE模塊中權(quán)值的計(jì)算。而該文所采用的SA注意力機(jī)制以一種更輕但更有效的方式將兩種注意力融合到一起,其整體結(jié)構(gòu)如圖5所示。
圖5 SA原理
對(duì)于一個(gè)特征X,SA先沿著通道的維度將X∈RC×H×W分為g組,即X=[X1,X2,…,Xg],每組特征Xk∈RC/g×H×W又被分成兩個(gè)分支,一個(gè)分支根據(jù)通道之間的關(guān)系生成通道注意圖,另一個(gè)分支根據(jù)空間信息生成空間注意圖。其中,SA內(nèi)部的通道注意力和SE實(shí)現(xiàn)類似,而空間注意力的實(shí)現(xiàn)是通過GN(GroupNorm)獲取空間的維度信息,然后進(jìn)行連接,最后使用通道洗牌操作,使得通道之間的信息在不同維度之間傳遞,通道注意力和空間注意力的最終輸出分別如式(1)和式(2)所示。
(1)
(2)
最終,改進(jìn)的YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。當(dāng)輸入為640×640×3時(shí),Entry flow和Middle flow輸出的特征圖大小分別為80×80×256和40×40×512,在頸部進(jìn)行特征融合,而Exit flow輸出特征圖大小為20×20×2 048,需經(jīng)過一次卷積將通道數(shù)2 048調(diào)整為1 024,再輸入到ASPP模塊中,之后進(jìn)行特征融合,頸部C3模塊與SA融合,提高檢測(cè)精度,最后在Head端進(jìn)行檢測(cè)。
圖6 改進(jìn)YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)
由于目前還沒有統(tǒng)一的建筑裂縫檢測(cè)的數(shù)據(jù)集,因此通過網(wǎng)絡(luò)搜索和拍攝自行構(gòu)建數(shù)據(jù)集,同時(shí)對(duì)采集到的圖片采用Mosaic數(shù)據(jù)增強(qiáng),最終得到約6 000張圖片,并按照8∶1∶1比例劃分訓(xùn)練集、驗(yàn)證集、測(cè)試集。
隨后使用labelimg工具標(biāo)注數(shù)據(jù)集,這里由于裂縫比較狹長(zhǎng),若直接采用一個(gè)整框標(biāo)注會(huì)使得背景所占比例較高,無法充分提取特征,若采用小框標(biāo)注,會(huì)加大訓(xùn)練難度。因此采用多個(gè)適中大小的框交替標(biāo)注,覆蓋整條裂縫,標(biāo)注完成生成YOLO格式txt文件。
實(shí)驗(yàn)環(huán)境為W10系統(tǒng)、GPU為RTX3050,深度學(xué)習(xí)的框架為Pytorch,設(shè)置初始學(xué)習(xí)率為0.001,動(dòng)量為0.937,最大迭代次數(shù)為600輪。
將改進(jìn)的YOLOv5模型在數(shù)據(jù)集上進(jìn)行訓(xùn)練,其損失函數(shù)的曲線如圖7所示。
圖7 Loss曲線
如圖7所示,隨著訓(xùn)練輪數(shù)增多,損失逐漸降低。前100輪衰減較快,第200輪迭代曲線有略微震蕩,最終約300輪迭代時(shí),曲線收斂。
深度學(xué)習(xí)模型評(píng)價(jià)指標(biāo)一般采用精確率P、召回率R、平均精度AP、平均精度均值mAP、模型單位時(shí)間檢測(cè)圖片幀數(shù)FPS以及參數(shù)量等,相關(guān)評(píng)價(jià)指標(biāo)的計(jì)算公式如式(3)~式(6)所示。
(3)
(4)
(5)
(6)
其中,TP表示裂縫圖片中正樣本預(yù)測(cè)正確的數(shù)量,TN表示負(fù)樣本預(yù)測(cè)正確的數(shù)量,FP為正樣本預(yù)測(cè)錯(cuò)誤的數(shù)量,FN表示負(fù)樣本預(yù)測(cè)錯(cuò)誤的數(shù)量。
為了驗(yàn)證所加模塊對(duì)模型性能的影響,進(jìn)行消融實(shí)驗(yàn),其結(jié)果如表2所示。
表2 消融實(shí)驗(yàn)
由表2可以看出,首先,僅添加Xception模塊,雖然檢測(cè)速度得到了提高,但mAP降低了0.5百分點(diǎn),因?yàn)閷?duì)主干網(wǎng)絡(luò)輕量化,使得參數(shù)量減少,造成了檢測(cè)的精度降低。其次,僅添加ASPP模塊,mAP提高了0.6百分點(diǎn),FPS提高了1.1 f/s,因?yàn)锳SPP中引入了空洞卷積,擴(kuò)大了感受野,加強(qiáng)了主干的特征提取能力。再者,僅加入SA注意力機(jī)制,mAP提高了1.3百分點(diǎn),同時(shí)由于SA模塊的參數(shù)量較少,屬于真正的輕量級(jí)模塊,FPS也得到了提高。最后,同時(shí)加入3種模塊,提升效果最為明顯,mAP提高了1.6百分點(diǎn),FPS達(dá)到50.8 f/s,且參數(shù)量也和原來一致,從而驗(yàn)證了所改進(jìn)的模型在性能上優(yōu)于原先的模型。
同時(shí),為了驗(yàn)證SA注意力機(jī)制的有效性,在YOLOv5模型中分別加入目前比較常用注意力機(jī)制SE、CBAM以及ECA和SA進(jìn)行對(duì)比,其實(shí)驗(yàn)結(jié)果如表3所示。
表3 注意力對(duì)比實(shí)驗(yàn)
從表3可以看出,由于SE只考慮通道之間的關(guān)系,未考慮空間信息,故mAP和FPS較低。CBAM注意力機(jī)制結(jié)合了通道和空間注意力機(jī)制,雖然提高了檢測(cè)精度,但是CBAM的計(jì)算量大,速度較慢。ECA注意力機(jī)制雖然mAP和CBAM相同,但FPS較SE、CBAM有較大提高,因?yàn)镋CA去掉了SE模塊中的全連接層,在全局平均池化之后直接用一個(gè)1維卷積學(xué)習(xí),提高了檢測(cè)速度。而該文所加入的SA注意力機(jī)制,mAP和FPS比其它3種注意力機(jī)制都高,因?yàn)镾A的參數(shù)量最少,屬于輕量化的模塊,并且結(jié)合了通道和空間特征,既提高了檢測(cè)的精度,也加快了檢測(cè)速度,驗(yàn)證了SA注意力機(jī)制的有效性。
為進(jìn)一步對(duì)改進(jìn)的模型進(jìn)行評(píng)估,將改進(jìn)算法與目前較典型的目標(biāo)檢測(cè)算法進(jìn)行縱向?qū)Ρ?其結(jié)果如表4所示。
表4 目標(biāo)檢測(cè)算法對(duì)比
從表4可以看出,Faster R-CNN作為二階段的目標(biāo)檢測(cè)算法,雖然檢測(cè)精度是所有算法里精度最高的,但是模型復(fù)雜,參數(shù)較多,檢測(cè)速度最慢。Mobile-SSD、YOLOv4-tiny等輕量化模型,雖然檢測(cè)速度快于Faster R-CNN,但檢測(cè)精度不高。而文中算法雖然精度沒有Faster-RCNN高,但mAP仍達(dá)到了91.2%,且檢測(cè)速度是最快的。因此,綜合檢測(cè)的精度和速度兩方面來看,文中算法性能是最優(yōu)的。
最后,為了驗(yàn)證改進(jìn)模型的檢測(cè)效果,選取3組典型的裂縫圖片,其檢測(cè)效果對(duì)比如圖8所示。
圖8 檢測(cè)效果對(duì)比
從圖8可以看到,檢測(cè)以上幾種裂縫,改進(jìn)之后的算法檢測(cè)裂縫的置信度都大于原算法,除此之外,原算法的檢測(cè)框出現(xiàn)了不連續(xù)的情況,沒有完整反映出裂縫的走勢(shì),而改進(jìn)之后的算法的檢測(cè)框都是連續(xù)的,覆蓋整個(gè)裂縫,驗(yàn)證了改進(jìn)算法的有效性。
提出了一種改進(jìn)的YOLOv5建筑裂縫檢測(cè)算法,主要?jiǎng)?chuàng)新點(diǎn)在于使用Xception網(wǎng)絡(luò)對(duì)主干網(wǎng)絡(luò)輕量化,并采用ASPP模塊替換SPP模塊,最后在頸部添加SA注意力機(jī)制。通過實(shí)驗(yàn)證明,改進(jìn)算法滿足了裂縫檢測(cè)精度和實(shí)時(shí)性的要求,但由于檢測(cè)框較多,導(dǎo)致模型的召回率較低,有待進(jìn)一步優(yōu)化。