基于YOLO v5的古建筑木结构裂缝检测方法

2021-11-08 08:51阎卫东刘国奇
关键词:木结构古建筑裂缝

马 健,阎卫东,刘国奇

(沈阳建筑大学土木工程学院,辽宁 沈阳 110168)

古建筑具有不可移动和不可再生的特性,在长达几十年、数百年的服役周期中,受到年久失修、气候干扰、人为破坏等因素的影响,古建筑木结构出现了各种形式的损伤现象,而裂缝是最常见的损伤形式。由于裂缝扩展引发了多起古建筑整体结构倒塌的事故[1],严重影响到了我国古建筑木结构的健康发展。因此,探寻一种快速便捷、操作简便的古建筑木结构裂缝检测方法,对于古建筑本体保护及其历史文化传承具有重要意义。

目前,关于古建筑裂缝检测的研究较少,尤其是针对古建筑木结构裂缝检测的研究更是匮乏。奥村运明等[2]利用数字图像技术对古建筑裂缝进行监测,证明数码图像经过处理后得到的裂缝宽度与现场测量结果一致;朱才辉等[3]以现役西安明代城墙及钟楼等古建筑为研究对象,利用人工观察法调研了裂缝程度,并用考虑损伤的砌体力学模型进行了裂缝成因分析。然而,上述研究古建筑本体为钢结构和混凝土结构,而我国古建筑木结构与钢结构和混凝土结构不同,木材水分含量低,裂缝一旦扩展极易出现脆断现象,局部的脆断也将导致整体结构的连续性倒塌。因此,上述方法不适用古建筑木结构的裂缝检测。目前,我国古建筑木结构裂缝检测主要以人工检测为主,只有少部分木结构古建筑运用了应力波法[4-5]、皮螺钉技术[6]、阻抗仪检测法[7]和超声波法[8]。杨娜等[9]总结分析了上述方法存在的缺点和不足,基于无人机与计算机视觉技术设计了古建筑木结构裂缝监测系统,证实能够实现古建筑木结构裂缝的实时长期监测。魏越等[10]基于动力特性试验的损伤识别方法,对有损状态和无损状态的古建筑木梁进行模态试验,证实固有频率、位移模态、曲率模态对木梁干缩裂缝的识别效果都不理想。因此,如何利用人工智能方法精准识别古建筑木结构裂缝是该领域遇到的新问题与新挑战。

基于上述分析,笔者提出利用YOLO v5目标检测方法对古建筑木结构裂缝进行检测和验证,以沈阳建筑大学校园内的八王寺为研究对象,对其结构裂缝进行了识别检验,裂缝检测精度达到91%左右,证明该方法适用于古建筑木结构裂缝检测。

1 裂缝检测方法

近年来,研究人员在道路、桥梁的裂缝检测领域提出了众多深度学习方法[11-13],并证明这些方法在裂缝识别和检测中是可行的。但是,道路和桥梁大多为钢材、混凝土、砂石、沥青等非木质材料,这些结构裂缝图像的像素点占比较少,并且与背景灰度值存在重叠,而又与背景和噪声的形态存在差异,因此,研究学者通常选取CNN[14]、DCNN[15]、R-CNN[16]提取裂缝信息。由于古建筑木结构的裂缝具有像素点占比多、与背景灰度值差别明显、存在木纹噪声等特性,所以桥梁和道路裂缝识别方法具有一定的局限性,无法在古建筑木结构的裂缝检测中直接应用。更重要的是,传统的神经元网络系统在裂缝识别的时候对设备要求较高、训练时间较长,并且通常需要训练上万次[17-18],才能达到较高的裂缝识别精度,不能满足高校低成本、易操作、高效率检测古建筑木结构裂缝的现实需求。

综上所述,笔者针对高等院校古建筑保护面临的实际困难,提出利用兼具速度快、灵活性强、效率高、准确率高等特性的YOLO v5目标检测方法对古建筑木结构裂缝进行检测。YOLO v5目标检测方法,按照网络深度大小和特征图深度大小可以分为YOLO v5s、YOLO v5m、YOLO v5l、YOLO v5x。其中,YOLO v5s是最小最快的模型,采用单个神经网络直接预测物品边界和类别概率,实现端到端的物品检测,更加能适应现场应用环境。因此,笔者提出将YOLO v5s目标检测方法应用到古建筑木结构裂缝检测中,具有较强的创新性。

YOLO v5作为古建筑木结构裂缝检测的网络模型,其结构如图1所示。裂缝识别过程主要包括:一是古建筑木结构裂缝检测木块对输入的裂缝图片进行识别并标注;二是裂缝识别模块对检测到的古建筑木结构裂缝区域裁剪出子图像,并根据是否存在裂缝进行图像二分类;三是得出是否为裂缝的识别结果。

图1 YOLO v5结构图Fig.1 Overview of YOLO v5

2 数据采集及处理

2.1 数据采集

由于国内目前没有公开关于古建筑木结构裂缝的数据集,为了达到研究目的,笔者以沈阳建筑大学校园内的八王寺作为研究对象,采集了474张图片,建立了一个古建筑木结构裂缝数据集。八王寺创建于1415年(明永乐十三年),1638年(清崇德三年)重修,至今已有600余年的历史,在日俄战争中,八王寺只剩下一间主殿,门窗破败、殿柱腐烂,面临全面拆除的窘境。沈阳建筑大学秉承保护历史的情怀和文化育人的理念,历经四年时间,于2009年将八王寺主殿迁移到校园内,现在名为“八王书院”,具有重要的历史文化传承价值。然而,由于专业人员配备不足,高端仪器设备缺失,“八王书院”整体机构出现了诸多裂缝,分布在柱、梁、门、窗等部位。

笔者利用佳能(Canon)EOS 90D单反相机,累计拍摄474张裂缝图片,并以9∶1的比例划分为训练数据集和测试数据集。古建筑木结构裂缝较容易出现在门、窗、柱等部位,因此,笔者选取八王书院的门、窗、柱三类构件裂缝作为研究对象,在拍摄过程中,按照构件局部裂缝和整体裂缝进行分类,部分选样图片如图2所示。

图2 古建筑木结构裂缝样例Fig.2 The crack examples in wooden structure of ancient building

2.2 数据处理

2.2.1 图片选取及裂缝标注

古建筑木结构由于自身材料的独特属性,其裂缝特征和桥梁、路面有较大差异。因此,在进行图片裂缝标注的时候,要充分考虑古建筑木结构裂缝的实际特性。比如,裂缝的深浅不同、木结构表面光滑度不同、裂缝的长短和宽窄不同、裂缝的数量不同、木结构表面的木纹噪声不同等,这些都对古建筑木结构裂缝的标注提出了不同的要求。笔者在474份标注样本中选取了9种典型代表古建筑木结构裂缝图片来展示通常裂缝存在的形式,如图3所示。

由图3(a)可见,古建筑木结构表面粗糙,存在树皮干扰,裂缝特征不明显,此类裂缝在标注的时候需要显示特征较为明显的裂缝,树皮干扰的裂缝不进行标注;由图3(b)

图3 不同类型的古建筑木结构裂缝图Fig.3 Different types of wooden structure cracks in ancient buildings

可见,古建筑木结构表面相对光滑,存在局部风化,裂缝特征明显,同时部分裂缝间距较小,此类裂缝在标注的时候可以将间距较小的裂缝进行合并标注,单独的裂缝进行单独标注;由图3(c)可见,古建筑木结构表面存在油漆且比较光滑,裂缝特征明显,裂缝数量较多且长度较短,此类裂缝在标注的时候需要对所有清晰可见的裂缝进行逐个标注;由图3(d)可见,古建筑木结构表面相对光滑,裂缝特征明显,经过人工辨别后发现存在木纹,此类裂缝在标注的时候仅对裂缝进行标注,木纹不标注;由图3(e)可见,古建筑木结构表面比较粗糙,存在起皮和不同颜色,同时起皮部位也存在很小的裂纹,人工辨别后确定不是木结构裂缝,此类裂缝在标注的时候,可以从清晰和模糊的裂缝里选特征明显的代表进行标注,对于起皮产生的裂纹不做标注;由图3(f)可见,古建筑木结构表面部分油漆已经脱落,裂缝分布清晰,裂缝长短不一,此类裂缝在标注的时候可以全部进行标注;由图3(g)可见,古建筑木结构表面光滑,裂缝对比鲜明,有特别明显和规整的宽裂缝和窄裂缝,此类裂缝在标注的时候可以进行直接标记;由图3(h)可见,古建筑木结构表面光滑,裂缝数量较少,裂缝长短特征比较明显,此类裂缝在标注的时候可以标注长裂缝和短裂缝各1条,裂缝数量多的情况下,可酌情多标注几条;由图3(i)可见,古建筑木结构表面粗糙,木结构存在风化腐蚀,清晰可见原木本体,裂缝数量较多且间距较小,此类裂缝在标注的时候可按照裂缝密度集中区域进行合并标注,对于原木本身的木纹不做处理。

2.2.2 生成数据信息文件

古建筑木结构裂缝图片在进行标注完成之后,保存图片集,使用LabelImg系统生成裂缝图片标注信息的txt文件,包含裂缝标注的个数、位置等信息,命名为crack。其中,“0”表示古建筑木结构裂缝标注的类别,“0”的个数表示标注裂缝的条数,如表1所示。

表1 裂缝标注信息情况表Table 1 Crack labeling information table

3 试验仿真及结果分析

3.1 试验平台

试验采用个人笔记本电脑,机型为联想拯救者R7000p 2020款,系统配置为GeForce RTX2060,6 G显存 GPU,AMD Ryzen 74800H 主频率2.90 GHz,内存16 G,操作系统为Windows10,开发平台使用pycharm,编程语言是Python。基于Facebook开发的Pytorch深度学习框架,使用建立的Pascal VOC数据集训练YOLO v5s模型。

3.2 试验方案

选取474张“八王书院”门、窗、柱、梁的裂缝图片作为训练样本,利用YOLO v5s模型进行训练,从而检测出图片中的裂缝。设置好训练参数,训练350次。根据测试实际需要,定义数据集文件为crack.yaml,模型文为YOLO v5s.yaml,初始权重文件为YOLO v5s.pt,使用单gpu加速训练。

3.3 试验评价指标

对检测目标进行识别时,检验精度指标用mAP表示,代表多个类别AP的平均值。因为笔者检测样本只有古建筑木结构裂缝一个种类,所以可直接用AP作为裂缝检测的评价指标。AP代表模型检测效果的优劣程度,数值越大表示检测结果越好。根据Recall和Precision制作一条曲线,该条曲线下面的区域面积就是AP,AP值就是对该面积进行积分,具体公式为

(1)

(2)

(3)

式中:J为精确率;H为召回率;ZJ为被识别出来含裂缝的正类样本数量;FJ为被识别出来的不含有裂缝的负样本数量;FN为没有被识别的含有裂缝的正类样本数量。

3.4 试验结果

经过350次训练后,试验结果如表2所示。Box结果值在0.04左右,数值较小,训练损失较低,说明生成训练结果比较准确;obj的值在0.06左右,说明对目标的检测准确率较高;因为标注目标类只有一个(裂缝),所以class值为0;裂缝识别精确度Precision在91%左右,检测出目标物体的准确率相对较高,Recall召回率在86%左右,说明找对正类物体的准确率相对较好,详见表2和图4所示。

表2 裂缝训练结果Table 2 Fracture training results

图4 试验结果

表中相关参数解释如下:

Box:YOLO v5使用 GIOU Loss作为bounding box的损失,Box推测为GIoU损失函数均值,该数值越小表示检测出的方框越准。

valBox:验证集bounding box损失。

Objectness:推测为目标检测loss均值,该数值越小表明目标检测越准。

valObjectness:验证集目标检测loss均值。

Classification:推测为分类loss均值,该数值越小表明分类越准。

valClassification:验证集分类loss均值。

Precision:表示精度(找对的数量/找到的所有数量),衡量一个分类器分出来的正类的概率。

Recall:表示召回率(找对的正类/所有本应该被找对的正类),衡量一个分类能把所有的正类都找出来的能力。

mAP@0.5 &mAP@0.5:0.95:就是mAP是用Precision和Recall作为两轴作图后围成的面积,m表示平均,@后面的数表示判定Iou为正负样本的阈值,@0.5:0.95表示阈值取0.5:0.05:0.95(从0.5到0.95,步长为0.05)后取均值。

3.5 测试结果

裂缝图像训练完成后,产生了较好的效果。笔者进一步对其他古建筑木结构裂缝进行测试,在试验中笔者选取了100张不同特征的古建筑木结构图片作为测试数据。测试结果显示,模型能够较好的识别出测试图片中的裂缝,标注效果与人工标注水平相同。笔者在100张测试数据中,选取了两个典型裂缝结构进行分析,如图5所示。

图5 裂缝测试图Fig.5 Fracture testing diagram

从图5中可以看到,对于表面光滑和表面粗糙的古木结构,模型能够非常好的识别并标记出裂缝结构。在表面光滑的古建筑木结构上,形状细小的裂缝都能被准确识别出来。在表面粗糙的古建筑木结构上,模型能够很好地区分木纹和真实的裂缝。

4 结 论

笔者基于YOLO v5自身速度快、易操作、样本要求数量少的特性,对古建筑木结构裂缝进行了检测。经过350次训练之后,总损失率降低到了0.042,AP值为0.915 3,裂缝检测精度达到91%左右,证明该方法在古建筑木结构裂缝检测领域取得了良好的效果。

目前没有公开的古建筑木结构裂缝数据集,笔者采集的裂缝图片样本数量虽然有限,但可以作为一个公开的古建筑木结构裂缝数据集供其他研究者使用。

猜你喜欢
木结构古建筑裂缝
古建筑木结构保护技术在现代园林工程中的应用探讨
碳酸盐岩裂缝描述七大难点
完美“切割”,裂缝之谜
古建筑取名有什么讲究
萨格勒布木结构观景塔
中国古建筑
地球的裂缝
山西古建筑修葺与保护
普陀山古建筑之美
藏式古建筑木结构损伤识别的数值模拟