智慧建筑:基于YOLOv7的建筑外墻缺陷檢測(cè)
01 前景概要
現(xiàn)有的基于深度學(xué)習(xí)的方法在識(shí)別速度和模型復(fù)雜性方面面臨一些挑戰(zhàn)。為了保證建筑外墻缺陷檢測(cè)的準(zhǔn)確性和速度,我們研究了了一種改進(jìn)的YOLOv7方法BFD-YOLO。首先,將YOLOv7中原有的ELAN模塊替換為輕量級(jí)的MobileOne模塊,以減少參數(shù)數(shù)量并提高推理速度。其次,在模型中加入了坐標(biāo)注意力模塊,增強(qiáng)了特征提取能力。接下來(lái),使用SCYLLA-IoU來(lái)加快收斂速度并增加模型的召回率。最后,我們擴(kuò)展了開(kāi)放數(shù)據(jù)集,構(gòu)建了一個(gè)包括三個(gè)典型缺陷的建筑立面損傷數(shù)據(jù)集。BFD-YOLO基于該數(shù)據(jù)集展示了卓越的準(zhǔn)確性和效率。與YOLOv7相比,BFD-YOLO的精度和mAP@.5分別提高了2.2%和2.9%,同時(shí)保持了相當(dāng)?shù)男省?shí)驗(yàn)結(jié)果表明,該方法在保證實(shí)時(shí)性的前提下,獲得了較高的檢測(cè)精度。
02 現(xiàn)狀和項(xiàng)目動(dòng)機(jī)
外墻缺陷的存在是建筑運(yùn)營(yíng)階段的一個(gè)緊迫問(wèn)題,通常歸因于機(jī)械和環(huán)境因素。典型的缺陷表現(xiàn)為混凝土剝落、裝飾剝落、構(gòu)件裂縫、大規(guī)模變形、瓷磚損傷、潮濕損壞等。這些缺陷會(huì)影響外觀,降低建筑物的使用壽命。更嚴(yán)重的是,外墻墜物可能會(huì)造成安全事故和無(wú)法彌補(bǔ)的損失。結(jié)構(gòu)損傷檢測(cè)是結(jié)構(gòu)健康監(jiān)測(cè)的一個(gè)組成部分,對(duì)確保建筑物的安全運(yùn)行至關(guān)重要。作為結(jié)構(gòu)損傷檢測(cè)的一個(gè)組成部分,建筑外墻缺陷的檢測(cè)可以使政府和管理層準(zhǔn)確了解建筑外墻的綜合狀況,從而有助于制定合理的維修方案。這是降低建筑維護(hù)成本、延長(zhǎng)建筑使用壽命和減輕外墻損壞影響的有效方法。許多國(guó)家和地區(qū)正在制定定期標(biāo)準(zhǔn)化目視檢查的政策。建筑外墻缺陷的檢測(cè)已成為建筑維護(hù)的關(guān)鍵組成部分。
目視檢查是評(píng)估建筑外觀狀況的一種簡(jiǎn)單可靠的方法。傳統(tǒng)的建筑外觀檢查通常需要專業(yè)人員帶著專用工具到達(dá)檢查地點(diǎn),在那里使用視覺(jué)觀察、錘擊和其他技術(shù)進(jìn)行評(píng)估。這些方法依賴于檢查員的專業(yè)知識(shí)和經(jīng)驗(yàn),這是主觀的、危險(xiǎn)的和低效的。由于建筑數(shù)量的增加和規(guī)模的擴(kuò)大,人工目視檢查方法已不足以滿足大規(guī)模檢查的要求。隨著技術(shù)的進(jìn)步,許多新方法(如激光掃描、3D熱成像和SLAM)正被用于通過(guò)無(wú)人機(jī)和機(jī)器人平臺(tái)進(jìn)行外墻損傷檢測(cè)。與傳統(tǒng)技術(shù)相比,這些新方法更方便、更安全,但耗時(shí)且成本高。因此,這些方法在滿足大規(guī)模檢查的需求方面也面臨挑戰(zhàn)。因此,有必要開(kāi)發(fā)一種更精確、更有效的表面缺陷檢測(cè)方法,以提高檢測(cè)效率并降低計(jì)算成本。
03 新想法及實(shí)踐細(xì)節(jié)
建筑外墻缺陷有多種類型,不同的檢測(cè)方法都適用。常見(jiàn)的類型包括裂縫、剝落和墻體空鼓。對(duì)于裂紋,有更多的研究使用語(yǔ)義分割進(jìn)行檢測(cè)。對(duì)于墻體空鼓,敲擊法和紅外熱像法應(yīng)用更為廣泛。我們經(jīng)過(guò)調(diào)研和研究,選擇了適合目標(biāo)檢測(cè)方法且易于構(gòu)建數(shù)據(jù)集的缺陷類型。數(shù)據(jù)集中的圖像主要來(lái)自通過(guò)手機(jī)、攝像機(jī)和無(wú)人機(jī)拍攝的建筑立面圖像。此外,一些來(lái)自互聯(lián)網(wǎng)和公共數(shù)據(jù)集的圖像也被用于擴(kuò)展。所有圖像的寬度在1000到3000像素之間,高度在2000到5000像素之間。該數(shù)據(jù)集由三個(gè)建筑外墻缺陷組成:分層、剝落和瓷磚損失。總共收集了1907張?jiān)紙D像,其中包含約2%的背景圖像。背景圖像是添加到數(shù)據(jù)集中以減少錯(cuò)誤位置的沒(méi)有缺陷的圖像。訓(xùn)練集、驗(yàn)證集和測(cè)試集按照7:2:1的比例進(jìn)行劃分。下圖顯示了數(shù)據(jù)集中的缺陷示例。
從左到右分別是分層、剝落和瓷磚損耗。
Data Augmentation
在神經(jīng)網(wǎng)絡(luò)的模型訓(xùn)練中經(jīng)常需要大量的數(shù)據(jù)。然而,獲取建筑外墻缺陷的圖像相對(duì)困難,并且在收集的數(shù)據(jù)中存在類別不平衡的問(wèn)題。為了減輕這個(gè)問(wèn)題的影響,我們將數(shù)據(jù)擴(kuò)充技術(shù)應(yīng)用于訓(xùn)練數(shù)據(jù)。數(shù)據(jù)擴(kuò)充是對(duì)原始數(shù)據(jù)執(zhí)行各種轉(zhuǎn)換的常用技術(shù)。它被廣泛應(yīng)用于深度學(xué)習(xí)領(lǐng)域,以系統(tǒng)地生成更多的訓(xùn)練數(shù)據(jù)。數(shù)據(jù)擴(kuò)充可以幫助模型學(xué)習(xí)更多的數(shù)據(jù)變化,防止其過(guò)度依賴特定的訓(xùn)練樣本。監(jiān)督數(shù)據(jù)增強(qiáng)技術(shù)包括幾何變換(例如,翻轉(zhuǎn)、旋轉(zhuǎn)、縮放、裁剪等)和像素變換(例如噪聲、模糊、亮度調(diào)整、飽和度調(diào)整等)。
新設(shè)計(jì)框架
它可以分為主干和頭。主干網(wǎng)絡(luò)的功能是提取特征。YOLOv7的原始主干由幾個(gè)CBS、MP和ELAN模塊組成。CBS是一個(gè)由卷積核、批處理規(guī)范化和SiLU激活函數(shù)組成的模塊。議員由MaxPooling和CBS組成。改進(jìn)后的主干網(wǎng)用MobileOne模塊取代了ELAN模塊以提高速度,并在每個(gè)MobileOne模件后面添加了一個(gè)協(xié)調(diào)注意力模塊。所提出的改進(jìn)方法能夠關(guān)注輸入圖像中的顯著特征并抑制外來(lái)信息,從而有效地提高檢測(cè)精度。
網(wǎng)絡(luò)的頭是一個(gè)PaFPN結(jié)構(gòu),它由一個(gè)SPPPCC、幾個(gè)ELAN2、CatConv和三個(gè)RepVGG塊組成。ELAN的設(shè)計(jì)采用了梯度路徑設(shè)計(jì)策略。與數(shù)據(jù)路徑設(shè)計(jì)策略相比,梯度路徑設(shè)計(jì)策略側(cè)重于分析梯度的來(lái)源和組成,以設(shè)計(jì)有效利用網(wǎng)絡(luò)參數(shù)的網(wǎng)絡(luò)架構(gòu)。該策略的實(shí)現(xiàn)可以使網(wǎng)絡(luò)架構(gòu)更加輕量級(jí)。ELAN和ELAN2之間的區(qū)別在于它們的通道數(shù)量不同。將結(jié)構(gòu)重新參數(shù)化方法應(yīng)用于RepVGG區(qū)塊。該方法采用多分支訓(xùn)練結(jié)構(gòu)和單分支推理結(jié)構(gòu)來(lái)提高訓(xùn)練性能和推理速度。在輸出三個(gè)特征圖后,頭通過(guò)三個(gè)RepConv模塊生成三個(gè)不同大小的預(yù)測(cè)結(jié)果。
04 項(xiàng)目落地效果
建立了一個(gè)實(shí)驗(yàn)平臺(tái)來(lái)訓(xùn)練模型并進(jìn)行測(cè)試。實(shí)驗(yàn)平臺(tái)的硬件和軟件配置如下表所示。
環(huán)境 | 名稱 |
系統(tǒng) | Win 10 |
CPU | I7-11700 |
GPU | RTX 3090 |
RAM | 32GB |
語(yǔ)言 | Python 3.7 |
框架 | Pytorch 1.11.0 |
在訓(xùn)練中,SGD用于模型訓(xùn)練,動(dòng)量為0.937,權(quán)重衰減率為0.0005。Lr0和lrf分別設(shè)置為00.1和0.1,這意味著初始學(xué)習(xí)率為0.01,最終學(xué)習(xí)率為初始學(xué)習(xí)率的0.1倍。此外,為了使模型更好地?cái)M合數(shù)據(jù),還進(jìn)行了五個(gè)epoch的熱身訓(xùn)練。預(yù)熱訓(xùn)練方法允許模型在最初的幾個(gè)時(shí)期內(nèi)穩(wěn)定下來(lái),然后以預(yù)設(shè)的學(xué)習(xí)速率進(jìn)行訓(xùn)練,以更快地收斂。所有訓(xùn)練都是用150個(gè)epoch進(jìn)行的,批次大小設(shè)置為16。