馬 健,閻衛(wèi)東,劉國奇
(沈陽建筑大學(xué)土木工程學(xué)院,遼寧 沈陽 110168)
古建筑具有不可移動和不可再生的特性,在長達(dá)幾十年、數(shù)百年的服役周期中,受到年久失修、氣候干擾、人為破壞等因素的影響,古建筑木結(jié)構(gòu)出現(xiàn)了各種形式的損傷現(xiàn)象,而裂縫是最常見的損傷形式。由于裂縫擴(kuò)展引發(fā)了多起古建筑整體結(jié)構(gòu)倒塌的事故[1],嚴(yán)重影響到了我國古建筑木結(jié)構(gòu)的健康發(fā)展。因此,探尋一種快速便捷、操作簡便的古建筑木結(jié)構(gòu)裂縫檢測方法,對于古建筑本體保護(hù)及其歷史文化傳承具有重要意義。
目前,關(guān)于古建筑裂縫檢測的研究較少,尤其是針對古建筑木結(jié)構(gòu)裂縫檢測的研究更是匱乏。奧村運(yùn)明等[2]利用數(shù)字圖像技術(shù)對古建筑裂縫進(jìn)行監(jiān)測,證明數(shù)碼圖像經(jīng)過處理后得到的裂縫寬度與現(xiàn)場測量結(jié)果一致;朱才輝等[3]以現(xiàn)役西安明代城墻及鐘樓等古建筑為研究對象,利用人工觀察法調(diào)研了裂縫程度,并用考慮損傷的砌體力學(xué)模型進(jìn)行了裂縫成因分析。然而,上述研究古建筑本體為鋼結(jié)構(gòu)和混凝土結(jié)構(gòu),而我國古建筑木結(jié)構(gòu)與鋼結(jié)構(gòu)和混凝土結(jié)構(gòu)不同,木材水分含量低,裂縫一旦擴(kuò)展極易出現(xiàn)脆斷現(xiàn)象,局部的脆斷也將導(dǎo)致整體結(jié)構(gòu)的連續(xù)性倒塌。因此,上述方法不適用古建筑木結(jié)構(gòu)的裂縫檢測。目前,我國古建筑木結(jié)構(gòu)裂縫檢測主要以人工檢測為主,只有少部分木結(jié)構(gòu)古建筑運(yùn)用了應(yīng)力波法[4-5]、皮螺釘技術(shù)[6]、阻抗儀檢測法[7]和超聲波法[8]。楊娜等[9]總結(jié)分析了上述方法存在的缺點(diǎn)和不足,基于無人機(jī)與計(jì)算機(jī)視覺技術(shù)設(shè)計(jì)了古建筑木結(jié)構(gòu)裂縫監(jiān)測系統(tǒng),證實(shí)能夠?qū)崿F(xiàn)古建筑木結(jié)構(gòu)裂縫的實(shí)時(shí)長期監(jiān)測。魏越等[10]基于動力特性試驗(yàn)的損傷識別方法,對有損狀態(tài)和無損狀態(tài)的古建筑木梁進(jìn)行模態(tài)試驗(yàn),證實(shí)固有頻率、位移模態(tài)、曲率模態(tài)對木梁干縮裂縫的識別效果都不理想。因此,如何利用人工智能方法精準(zhǔn)識別古建筑木結(jié)構(gòu)裂縫是該領(lǐng)域遇到的新問題與新挑戰(zhàn)。
基于上述分析,筆者提出利用YOLO v5目標(biāo)檢測方法對古建筑木結(jié)構(gòu)裂縫進(jìn)行檢測和驗(yàn)證,以沈陽建筑大學(xué)校園內(nèi)的八王寺為研究對象,對其結(jié)構(gòu)裂縫進(jìn)行了識別檢驗(yàn),裂縫檢測精度達(dá)到91%左右,證明該方法適用于古建筑木結(jié)構(gòu)裂縫檢測。
近年來,研究人員在道路、橋梁的裂縫檢測領(lǐng)域提出了眾多深度學(xué)習(xí)方法[11-13],并證明這些方法在裂縫識別和檢測中是可行的。但是,道路和橋梁大多為鋼材、混凝土、砂石、瀝青等非木質(zhì)材料,這些結(jié)構(gòu)裂縫圖像的像素點(diǎn)占比較少,并且與背景灰度值存在重疊,而又與背景和噪聲的形態(tài)存在差異,因此,研究學(xué)者通常選取CNN[14]、DCNN[15]、R-CNN[16]提取裂縫信息。由于古建筑木結(jié)構(gòu)的裂縫具有像素點(diǎn)占比多、與背景灰度值差別明顯、存在木紋噪聲等特性,所以橋梁和道路裂縫識別方法具有一定的局限性,無法在古建筑木結(jié)構(gòu)的裂縫檢測中直接應(yīng)用。更重要的是,傳統(tǒng)的神經(jīng)元網(wǎng)絡(luò)系統(tǒng)在裂縫識別的時(shí)候?qū)υO(shè)備要求較高、訓(xùn)練時(shí)間較長,并且通常需要訓(xùn)練上萬次[17-18],才能達(dá)到較高的裂縫識別精度,不能滿足高校低成本、易操作、高效率檢測古建筑木結(jié)構(gòu)裂縫的現(xiàn)實(shí)需求。
綜上所述,筆者針對高等院校古建筑保護(hù)面臨的實(shí)際困難,提出利用兼具速度快、靈活性強(qiáng)、效率高、準(zhǔn)確率高等特性的YOLO v5目標(biāo)檢測方法對古建筑木結(jié)構(gòu)裂縫進(jìn)行檢測。YOLO v5目標(biāo)檢測方法,按照網(wǎng)絡(luò)深度大小和特征圖深度大小可以分為YOLO v5s、YOLO v5m、YOLO v5l、YOLO v5x。其中,YOLO v5s是最小最快的模型,采用單個(gè)神經(jīng)網(wǎng)絡(luò)直接預(yù)測物品邊界和類別概率,實(shí)現(xiàn)端到端的物品檢測,更加能適應(yīng)現(xiàn)場應(yīng)用環(huán)境。因此,筆者提出將YOLO v5s目標(biāo)檢測方法應(yīng)用到古建筑木結(jié)構(gòu)裂縫檢測中,具有較強(qiáng)的創(chuàng)新性。
YOLO v5作為古建筑木結(jié)構(gòu)裂縫檢測的網(wǎng)絡(luò)模型,其結(jié)構(gòu)如圖1所示。裂縫識別過程主要包括:一是古建筑木結(jié)構(gòu)裂縫檢測木塊對輸入的裂縫圖片進(jìn)行識別并標(biāo)注;二是裂縫識別模塊對檢測到的古建筑木結(jié)構(gòu)裂縫區(qū)域裁剪出子圖像,并根據(jù)是否存在裂縫進(jìn)行圖像二分類;三是得出是否為裂縫的識別結(jié)果。
圖1 YOLO v5結(jié)構(gòu)圖Fig.1 Overview of YOLO v5
由于國內(nèi)目前沒有公開關(guān)于古建筑木結(jié)構(gòu)裂縫的數(shù)據(jù)集,為了達(dá)到研究目的,筆者以沈陽建筑大學(xué)校園內(nèi)的八王寺作為研究對象,采集了474張圖片,建立了一個(gè)古建筑木結(jié)構(gòu)裂縫數(shù)據(jù)集。八王寺創(chuàng)建于1415年(明永樂十三年),1638年(清崇德三年)重修,至今已有600余年的歷史,在日俄戰(zhàn)爭中,八王寺只剩下一間主殿,門窗破敗、殿柱腐爛,面臨全面拆除的窘境。沈陽建筑大學(xué)秉承保護(hù)歷史的情懷和文化育人的理念,歷經(jīng)四年時(shí)間,于2009年將八王寺主殿遷移到校園內(nèi),現(xiàn)在名為“八王書院”,具有重要的歷史文化傳承價(jià)值。然而,由于專業(yè)人員配備不足,高端儀器設(shè)備缺失,“八王書院”整體機(jī)構(gòu)出現(xiàn)了諸多裂縫,分布在柱、梁、門、窗等部位。
筆者利用佳能(Canon)EOS 90D單反相機(jī),累計(jì)拍攝474張裂縫圖片,并以9∶1的比例劃分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集。古建筑木結(jié)構(gòu)裂縫較容易出現(xiàn)在門、窗、柱等部位,因此,筆者選取八王書院的門、窗、柱三類構(gòu)件裂縫作為研究對象,在拍攝過程中,按照構(gòu)件局部裂縫和整體裂縫進(jìn)行分類,部分選樣圖片如圖2所示。
圖2 古建筑木結(jié)構(gòu)裂縫樣例Fig.2 The crack examples in wooden structure of ancient building
2.2.1 圖片選取及裂縫標(biāo)注
古建筑木結(jié)構(gòu)由于自身材料的獨(dú)特屬性,其裂縫特征和橋梁、路面有較大差異。因此,在進(jìn)行圖片裂縫標(biāo)注的時(shí)候,要充分考慮古建筑木結(jié)構(gòu)裂縫的實(shí)際特性。比如,裂縫的深淺不同、木結(jié)構(gòu)表面光滑度不同、裂縫的長短和寬窄不同、裂縫的數(shù)量不同、木結(jié)構(gòu)表面的木紋噪聲不同等,這些都對古建筑木結(jié)構(gòu)裂縫的標(biāo)注提出了不同的要求。筆者在474份標(biāo)注樣本中選取了9種典型代表古建筑木結(jié)構(gòu)裂縫圖片來展示通常裂縫存在的形式,如圖3所示。
由圖3(a)可見,古建筑木結(jié)構(gòu)表面粗糙,存在樹皮干擾,裂縫特征不明顯,此類裂縫在標(biāo)注的時(shí)候需要顯示特征較為明顯的裂縫,樹皮干擾的裂縫不進(jìn)行標(biāo)注;由圖3(b)
圖3 不同類型的古建筑木結(jié)構(gòu)裂縫圖Fig.3 Different types of wooden structure cracks in ancient buildings
可見,古建筑木結(jié)構(gòu)表面相對光滑,存在局部風(fēng)化,裂縫特征明顯,同時(shí)部分裂縫間距較小,此類裂縫在標(biāo)注的時(shí)候可以將間距較小的裂縫進(jìn)行合并標(biāo)注,單獨(dú)的裂縫進(jìn)行單獨(dú)標(biāo)注;由圖3(c)可見,古建筑木結(jié)構(gòu)表面存在油漆且比較光滑,裂縫特征明顯,裂縫數(shù)量較多且長度較短,此類裂縫在標(biāo)注的時(shí)候需要對所有清晰可見的裂縫進(jìn)行逐個(gè)標(biāo)注;由圖3(d)可見,古建筑木結(jié)構(gòu)表面相對光滑,裂縫特征明顯,經(jīng)過人工辨別后發(fā)現(xiàn)存在木紋,此類裂縫在標(biāo)注的時(shí)候僅對裂縫進(jìn)行標(biāo)注,木紋不標(biāo)注;由圖3(e)可見,古建筑木結(jié)構(gòu)表面比較粗糙,存在起皮和不同顏色,同時(shí)起皮部位也存在很小的裂紋,人工辨別后確定不是木結(jié)構(gòu)裂縫,此類裂縫在標(biāo)注的時(shí)候,可以從清晰和模糊的裂縫里選特征明顯的代表進(jìn)行標(biāo)注,對于起皮產(chǎn)生的裂紋不做標(biāo)注;由圖3(f)可見,古建筑木結(jié)構(gòu)表面部分油漆已經(jīng)脫落,裂縫分布清晰,裂縫長短不一,此類裂縫在標(biāo)注的時(shí)候可以全部進(jìn)行標(biāo)注;由圖3(g)可見,古建筑木結(jié)構(gòu)表面光滑,裂縫對比鮮明,有特別明顯和規(guī)整的寬裂縫和窄裂縫,此類裂縫在標(biāo)注的時(shí)候可以進(jìn)行直接標(biāo)記;由圖3(h)可見,古建筑木結(jié)構(gòu)表面光滑,裂縫數(shù)量較少,裂縫長短特征比較明顯,此類裂縫在標(biāo)注的時(shí)候可以標(biāo)注長裂縫和短裂縫各1條,裂縫數(shù)量多的情況下,可酌情多標(biāo)注幾條;由圖3(i)可見,古建筑木結(jié)構(gòu)表面粗糙,木結(jié)構(gòu)存在風(fēng)化腐蝕,清晰可見原木本體,裂縫數(shù)量較多且間距較小,此類裂縫在標(biāo)注的時(shí)候可按照裂縫密度集中區(qū)域進(jìn)行合并標(biāo)注,對于原木本身的木紋不做處理。
2.2.2 生成數(shù)據(jù)信息文件
古建筑木結(jié)構(gòu)裂縫圖片在進(jìn)行標(biāo)注完成之后,保存圖片集,使用LabelImg系統(tǒng)生成裂縫圖片標(biāo)注信息的txt文件,包含裂縫標(biāo)注的個(gè)數(shù)、位置等信息,命名為crack。其中,“0”表示古建筑木結(jié)構(gòu)裂縫標(biāo)注的類別,“0”的個(gè)數(shù)表示標(biāo)注裂縫的條數(shù),如表1所示。
表1 裂縫標(biāo)注信息情況表Table 1 Crack labeling information table
試驗(yàn)采用個(gè)人筆記本電腦,機(jī)型為聯(lián)想拯救者R7000p 2020款,系統(tǒng)配置為GeForce RTX2060,6 G顯存 GPU,AMD Ryzen 74800H 主頻率2.90 GHz,內(nèi)存16 G,操作系統(tǒng)為Windows10,開發(fā)平臺使用pycharm,編程語言是Python?;贔acebook開發(fā)的Pytorch深度學(xué)習(xí)框架,使用建立的Pascal VOC數(shù)據(jù)集訓(xùn)練YOLO v5s模型。
選取474張“八王書院”門、窗、柱、梁的裂縫圖片作為訓(xùn)練樣本,利用YOLO v5s模型進(jìn)行訓(xùn)練,從而檢測出圖片中的裂縫。設(shè)置好訓(xùn)練參數(shù),訓(xùn)練350次。根據(jù)測試實(shí)際需要,定義數(shù)據(jù)集文件為crack.yaml,模型文為YOLO v5s.yaml,初始權(quán)重文件為YOLO v5s.pt,使用單gpu加速訓(xùn)練。
對檢測目標(biāo)進(jìn)行識別時(shí),檢驗(yàn)精度指標(biāo)用mAP表示,代表多個(gè)類別AP的平均值。因?yàn)楣P者檢測樣本只有古建筑木結(jié)構(gòu)裂縫一個(gè)種類,所以可直接用AP作為裂縫檢測的評價(jià)指標(biāo)。AP代表模型檢測效果的優(yōu)劣程度,數(shù)值越大表示檢測結(jié)果越好。根據(jù)Recall和Precision制作一條曲線,該條曲線下面的區(qū)域面積就是AP,AP值就是對該面積進(jìn)行積分,具體公式為
(1)
(2)
(3)
式中:J為精確率;H為召回率;ZJ為被識別出來含裂縫的正類樣本數(shù)量;FJ為被識別出來的不含有裂縫的負(fù)樣本數(shù)量;FN為沒有被識別的含有裂縫的正類樣本數(shù)量。
經(jīng)過350次訓(xùn)練后,試驗(yàn)結(jié)果如表2所示。Box結(jié)果值在0.04左右,數(shù)值較小,訓(xùn)練損失較低,說明生成訓(xùn)練結(jié)果比較準(zhǔn)確;obj的值在0.06左右,說明對目標(biāo)的檢測準(zhǔn)確率較高;因?yàn)闃?biāo)注目標(biāo)類只有一個(gè)(裂縫),所以class值為0;裂縫識別精確度Precision在91%左右,檢測出目標(biāo)物體的準(zhǔn)確率相對較高,Recall召回率在86%左右,說明找對正類物體的準(zhǔn)確率相對較好,詳見表2和圖4所示。
表2 裂縫訓(xùn)練結(jié)果Table 2 Fracture training results
圖4 試驗(yàn)結(jié)果
表中相關(guān)參數(shù)解釋如下:
Box:YOLO v5使用 GIOU Loss作為bounding box的損失,Box推測為GIoU損失函數(shù)均值,該數(shù)值越小表示檢測出的方框越準(zhǔn)。
valBox:驗(yàn)證集bounding box損失。
Objectness:推測為目標(biāo)檢測loss均值,該數(shù)值越小表明目標(biāo)檢測越準(zhǔn)。
valObjectness:驗(yàn)證集目標(biāo)檢測loss均值。
Classification:推測為分類loss均值,該數(shù)值越小表明分類越準(zhǔn)。
valClassification:驗(yàn)證集分類loss均值。
Precision:表示精度(找對的數(shù)量/找到的所有數(shù)量),衡量一個(gè)分類器分出來的正類的概率。
Recall:表示召回率(找對的正類/所有本應(yīng)該被找對的正類),衡量一個(gè)分類能把所有的正類都找出來的能力。
mAP@0.5 &mAP@0.5:0.95:就是mAP是用Precision和Recall作為兩軸作圖后圍成的面積,m表示平均,@后面的數(shù)表示判定Iou為正負(fù)樣本的閾值,@0.5:0.95表示閾值取0.5:0.05:0.95(從0.5到0.95,步長為0.05)后取均值。
裂縫圖像訓(xùn)練完成后,產(chǎn)生了較好的效果。筆者進(jìn)一步對其他古建筑木結(jié)構(gòu)裂縫進(jìn)行測試,在試驗(yàn)中筆者選取了100張不同特征的古建筑木結(jié)構(gòu)圖片作為測試數(shù)據(jù)。測試結(jié)果顯示,模型能夠較好的識別出測試圖片中的裂縫,標(biāo)注效果與人工標(biāo)注水平相同。筆者在100張測試數(shù)據(jù)中,選取了兩個(gè)典型裂縫結(jié)構(gòu)進(jìn)行分析,如圖5所示。
圖5 裂縫測試圖Fig.5 Fracture testing diagram
從圖5中可以看到,對于表面光滑和表面粗糙的古木結(jié)構(gòu),模型能夠非常好的識別并標(biāo)記出裂縫結(jié)構(gòu)。在表面光滑的古建筑木結(jié)構(gòu)上,形狀細(xì)小的裂縫都能被準(zhǔn)確識別出來。在表面粗糙的古建筑木結(jié)構(gòu)上,模型能夠很好地區(qū)分木紋和真實(shí)的裂縫。
筆者基于YOLO v5自身速度快、易操作、樣本要求數(shù)量少的特性,對古建筑木結(jié)構(gòu)裂縫進(jìn)行了檢測。經(jīng)過350次訓(xùn)練之后,總損失率降低到了0.042,AP值為0.915 3,裂縫檢測精度達(dá)到91%左右,證明該方法在古建筑木結(jié)構(gòu)裂縫檢測領(lǐng)域取得了良好的效果。
目前沒有公開的古建筑木結(jié)構(gòu)裂縫數(shù)據(jù)集,筆者采集的裂縫圖片樣本數(shù)量雖然有限,但可以作為一個(gè)公開的古建筑木結(jié)構(gòu)裂縫數(shù)據(jù)集供其他研究者使用。