基于自适应锚框的裂缝目标检测算法研究

2022-11-23 09:06赵启林
计算机与现代化 2022年11期
关键词:锚框尺寸裂缝

尹 初,赵启林,芮 挺,袁 辉,王 剑

(1.南京工业大学机械与动力工程学院,江苏 南京 211816; 2.陆军工程大学野战工程学院,江苏 南京 210007)

0 引 言

中国的桥梁修建于不同的历史发展时期,技术水平和施工质量参差不齐,已建成的桥梁多是混凝土桥梁。由于混凝土材料自身的特性和服役环境中各种因素的影响,在绝大多数的混凝土构件中都存在裂缝[1]。相关统计数据显示,裂缝是导致混凝土桥梁损害的主要原因[2]。说明能适应我国情况的裂缝检测技术必须适应各种工况条件下的检测。

传统的桥梁安全检测主要是靠人工近距离观测,但是随着越来越多的跨海、跨江大跨度桥梁的建成,目前的桥梁检测会有越来越多人工难以到达的区域并且工作量巨大,导致人工检测方法难以全面实施。利用非接触远距离观测设备和无人机技术,来获取人工难以到达区域的表面清晰图像[3-4]显得尤为重要。Sanchez-Cuevas等人[5-6]设计了无人机桥梁检测系统。随之而来对于自动获取图像裂缝算法的要求也逐渐提高。目前裂缝识别的算法主要是基于图像处理和深度学习的算法。Prabakar等人[7-9]对图像中像素的灰度值进行相似度判断,以灰度的突变来判断裂缝信息。但由于使用传统图像处理的方法来设置训练太过依赖开发人员的经验,导致该方法在环境复杂且背景多变的桥梁裂缝检测中并不能很好应用。马东群等人[10-11]构建了CNN(Convolutional Neural Networks)网络并训练不同尺寸的裂缝病害照片。随着深度学习的兴起,更多的研究人员开始利用深度神经网络来识别一些低复杂情况下的裂缝。Wang等人[12-16]为了提升深度神经网络对裂缝的训练效果,对投入训练的图片进行了去噪、贴图等强化操作,并且利用翻转、旋转等手段来扩展数据集。陈晓冬等人[17-18]针对裂缝的特征单独训练了滤波器,指定神经网络提取想要的底层特征,以此来提高识别裂缝的准确率。温作林等人[19-20]使用了YOLO系列网络对混凝土裂缝进行了识别,能够得出比传统滑动窗口法更好的效果。张振华等人[21]通过改进网络的激活函数和分类器来提高网络对混凝土裂缝的检测效果。尚欣茹等人[22-23]发现了改变锚框初始信息对结果造成的影响,但是仅针对研究阶段训练一次网络进行改进。陈运忠[24]通过多尺度特征融合,将锚框从位置和形状2个方向进行预测,最终将位置和形状预测结合来调整锚框大小。目前裂缝目标检测算法在面对全新的检测对象时没有较强的适应性,并且对锚框的改进是回归时采用新的预测策略,仍然具有一定的局限性。传统更新锚框的方法依赖人工选择和操作,没有将网络算法当做可以持续进化升级的工程工具。

根据目前裂缝检测效果依赖训练时的数据,难以应对新的工程环境。本文提出一种基于YOLOv3[25]网络模型的目标检测算法。该方法通过使用预处理的数据集进行训练,使用训练完成的模型对实际桥梁安全检测中拍摄的图片进行裂缝检测,得到了91%的准确率,并且可以准确地框选出裂缝所在位置。同时网络采用的自适应锚框机制,使得该算法在面对新工况时,能添加少量数据进行锚框尺寸学习,能针对新样本更新锚框尺寸,提高了算法精度。在实际工程使用中不需要专业人员操作也能进行网络的更新训练,保证了识别精度。

1 桥梁裂缝图片来源与数据集建立

1.1 裂缝图片来源

混凝土桥梁裂缝数据来源于各桥梁安全监测项目,在对桥梁安全监测的过程中利用相机在实际工程环境中采集桥梁各处裂缝图像。本文图片均由佳能450D的APS-C规格数码单反相机在工程现场拍摄,该相机总像素为1240万。对于采集到的图像中的缺陷主要分为裂缝、划线和拼缝。将划线和拼缝也作为缺陷进行检测是由于这2种形态与裂缝类似,都拥有线状物特征,同时拼缝和裂缝还都具有混凝土边缘开裂后的互补性特征,因此为了避免类似裂缝的缺陷影响最终检测效果,本文将拼缝和划线都作为待检测的目标。

1.2 数据集的建立

由于工程中利用相机获得的图片分辨率较大,能够达到1000万~2000万像素,图片大小普遍在5000×4000像素左右。而图片中包含很多细小的裂缝,在大图片中所占的信息量极小,因此单纯使用大尺寸图片训练会导致网络对小裂缝识别不准确。本文采用了切分不同尺寸图片的方法来解决这一问题,通过项目组项目经验和文献查阅对比[19],同时对比裂缝尺寸,希望大部分裂缝能够完整地呈现在一张切片中,因此对700张原始图片按照227×227、1000×1200和2000×2700像素分辨率切分成较小切片,其中各尺寸的数量比例为4∶1∶1,随后使用LbaleImg工具对图片中的裂缝、划线和拼缝进行标注,如图1所示。最终生成的数据库包含了3000张图片。

图1 数据库标注

2 目标检测基本原理

2.1 目标检测

深度学习作为机器学习的重要分支,源自人工神经网络的发展,是通过计算机模仿人脑的神经元,在计算机上构建神经网络来探索数据之间的内部关系。目标检测即是在给定的图像中利用锚框将所需要的物体标注出来。目前目标检测主要分为Two-stage模型和One-stage模型。Two-stage模型是由算法先在大图片中按照一定规则生成候选框,再通过分类网络对每一个候选框进行分类,这类模型主要包括RCNN[26]、Fast-RCNN[27]、Faster-RCNN[28]等。这类模型会产生大量的候选框并且每一个候选框都需要进行分类操作,计算量大,耗时长。One-stage模型则是针对目标检测深度问题提出的新框架,将Two-stage模型的核心思想RoI+分类的2步算法用一步算法替换,即直接在输出层中回归出锚框的位置的物体类别。One-stage模型中最具代表性的YOLO网络是将锚框的定位分类问题转换成了回归问题,省去了生成候选框的操作,大大提升了检测速度。2020年2月,YOLO之父Joseph Redmon因为AI技术的某些伦理问题宣布退出计算机视觉领域,其本人研究发布的YOLO版本也停留在了v3。同年4月和6月发布的v4和v5版本则是由其他开发者在YOLO的大体思路下进行的改进。v4版本的特点是堆料,拆分各种主流检测器的框架后又进行组合、调参,最终形成了v4版本超快速的模型。而v5则是一个非常轻量化的模型,相比darknet框架下的v4模型,v5模型体积减少了接近90%。但是公布时并没有和v4作对比,仅仅宣称速度比v4更快。并且由于v5相对于v4的创新性很小,目前对其命名为YOLOv5仍有大量争议。当YOLO从v1版本发展到v3,YOLOv3吸收了前面各版本的优点进行改进,采用了新的DarkNet-53作为新的网络结构并且用逻辑回归代替Softmax作为分类器。弥补了YOLO网络对小目标检测效果差的问题,在保持快速检测的同时还将检测精度提升到了较高水平。目前仍有大量新研究是基于v3网络进行,综合模型认可度和性能,本文最终确定使用YOLOv3模型而不是后续的v4、v5等模型。

2.2 桥梁裂缝目标检测算法训练流程

本文选择YOLOv3目标检测模型进行裂缝检测的训练。将获得的原始图片进行切分,并在切分后的图片上进行裂缝、划线和拼缝的标注,随后将切分的图片和准备好的标注文件输入YOLOv3模型进行训练并将训练过程中最佳和最终的网络模型参数保存。具体流程如图2所示。第一步为原始图片获取:通过实际工程项目,对工程现场的桥梁裂缝用相机进行拍摄。相机拍摄的图片共有700张分辨率为5400×3600像素的原始图片。第二步为原始图片切分:将700张原始图片切分出3种尺寸的切片。第三步为切分图片标注:将第二步切分出的切片进行缺陷标注,主要是将图片中存在的裂缝、划线和拼缝进行标注并保存标注文件。第四步~第六步为网络训练过程:将做过标注的图片切片按照9∶1的比例划分为训练集和验证集,在训练过程中保存验证效果最好的网络模型和在1000次循环结束后的最终网络模型。测试集和实际测试图片均来自于全新的工程现场,保证测试结果的客观性。其中测试集数量设置和验证集数量相等。

图2 训练流程

2.3 YOLOv3网络框架

(1)

图3 交并比实例

YOLOv3中引入了残差块来加深网络,将原先只有19层的Darknet-19改进到了拥有53层的Darknet-53。改进后的网络主要由一系列1×1和3×3的卷积层构成,卷积的strides默认为1,padding默认为same,当strides为(2,2)时,padding调整为valid。首先是一个有32个过滤器的卷积核,然后是5组重复的残差单元。残差单元由一个单独的卷积层和一组重复的卷积层构成,其中重复的卷积层分别执行1、2、8、8、4次。每组残差单元的第一个单独卷积层操作均是步长为2的卷积操作,因此整个结构一共降维5次,降维32倍,最后输出的特征图尺寸为416/32=13。最后一层的通道数为1024。所以Darknet-53网络的输入是(416,416,3),输出是(13,13,1024)。YOLOv3卷积网络结构如图4所示。

图4 YOLOv3卷积网络结构

3 基于自适应锚框的裂缝目标检测算法

3.1 自适应锚框

YOLOv3继续采用了YOLO的锚框(anchor)机制,并且增加到了9个尺寸的锚框。锚框是一系列尺寸大小不同且能够调整的矩形框,它的数量和初始尺寸都能够人为设置,但是人为设置的尺寸会影响到目标检测的准确率和效率。YOLO网络初始训练的VOC数据集中包括的20类目标都是汽车、人、动物等大小各不相同的物体,这些类的物体在图片中的尺寸和混凝土裂缝的尺寸形状差异很大。即使在本次训练时将锚框设置到了最佳尺寸,那也仅仅是针对本次训练对象的最佳尺寸。考虑到后续面对新的工程情况会需要适应新工况下的裂缝特征,因此需要额外添加图片进行训练。而新图片中的裂缝可能是新的尺寸,从而带来对锚框尺寸的新的要求。为此本文提出一种根据数据集的真实框尺寸来自适应设置锚框尺寸的方法。在识别模型训练过程中先根据训练样本上的标注信息进行锚框聚类,随后筛选出占比最高的九类锚框尺寸作为YOLOv3网络训练与识别中使用的锚框尺寸。在面对新工程对象、获取相片分辨率可能有较大变化的情况,先在待识别的批量样本中选择少量的样本进行人为裂缝标注,随后利用聚类算法针对标注的样本提取出新的锚框尺寸作为进行识别的锚框进行使用,以此更好地适应全新工况,提升识别准确率。

本文使用K-means聚类来统计裂缝标注文件中的真实框尺寸,根据训练集中标注的真实框尺寸的不同来自适应地调整网络中的锚框大小。K-means算法中的K表示聚类类别数量。首先随机选择k个初始点作为初始质心,然后计算每一个样本和质心之间的欧氏距离(距离计算见公式(2)),将样本归类到最近的质心一类中。接着重新计算每一个质心,并重复以上过程直到质心不再改变。

在面对新工程时首先标注出一批新的样本,对新样本中的真实框尺寸使用K-means算法进行聚类。真实框和网络中的锚框均按照尺寸从小到大编号,随后计算相同编号的真实框和网络中锚框的交并比(IoU),并将IoU低于50%的网络锚框调整为新样本中聚类排名最靠前的尺寸,其中新聚类得到的每个锚框尺寸只能被使用一次。文献[19]表明,锚框和真实框的IoU随着数据的丰富而不断提高,当IoU超过50%时,提高的趋势会趋于稳定。因此本文选择50%作为自适应锚框更新的阈值。如图5所示,第一组真实框和网络锚框的IoU小于50%,则将这个网络锚框的尺寸调整为新聚类得到的排名第一的尺寸;第二组~第四组的IoU大于50%,则不对网络中的锚框进行调整;第五组的IoU小于50%,则将该组的网络锚框尺寸调整为新聚类得到的排名第二的尺寸;以此类推直到九组锚框都进行过交并比计算并判断是否进行锚框尺寸调整。详细锚框调整流程如图6所示。

图5 网络锚框与真实框交并比

图6 自适应锚框规则

由于本文训练集中图片仅能代表部分裂缝尺寸特征,在算法后期使用过程中可能会不停添加新的训练样本。采用自适应的锚框选择技术能够让算法自动调整锚框尺寸,避免每次添加样本后都要手动聚类再设置锚框尺寸,大大提高了算法的智能化程度和使用便捷度。

3.2 网络中的超参数设置

本文使用了Darknet-53框架的YOLOv3网络,同时在网络中添加了自适应锚框的处理过程来自动聚类分类并设置初始锚框。改进后的网络在Python3.8环境下使用Pytorch1.9框架运行,进行网络计算的工作站硬件配置为Intel(R) Xeon(R) Gold 6240 CPU @ 2.60 GHz,128 GB内存和RTX 2080TI 11G显卡。训练中考虑到工作站内存限制,batch size设置为4,采用初始学习率为0.001的动态学习率,优化器选择为Adam并使用默认参数,epoch设置为1000。

4 训练及结果分析

4.1 训练结果

4.1.1 box_loss,obj_loss和cls_loss曲线

由于YOLOv3的损失函数是由坐标预测、是否包含目标物体置信度和类别预测3个部分构成,训练对应的损失值也会对应这3个部分。其中box_loss表示的是预测的锚框和真实框的损失,obj_loss表示的是锚框中预测是否存在物体的损失,cls_loss表示的是锚框内的物体类别预测的损失。将原始YOLOv3网络训练结果定为v3,经过自适应锚框改进的网络结果定为autov3。

图7 box_loss损失曲线

由图7可以得到v3的box_loss初始值为2.2247,autov3的初始值为0.34916。经过1000个epoch后v3达到的结果为0.38889,autov3达到的结果为0.02888。v3能达到的最佳结果为0.32603,autov3最佳结果为0.0287。

图8 obj_loss损失曲线

由图8可以得到v3的obj_loss初始值为0.14496,autov3的初始值为0.02467。经过1000个epoch后v3达到的结果为0.05548,autov3达到的结果为0.00639。v3能达到的最佳结果为0.0179,autov3最佳结果为0.0062。

图9 cls_loss损失曲线

由图9可以得到v3的cls_loss初始值为0.71994,autov3的初始值为0.07269。经过1000个epoch后v3达到的结果为0.02213,autov3达到的结果为0.00248。v3能达到的最佳结果为0.00764,autov3最佳结果为0.00103。

可以看出3种损失值的变化状态全部都是由高到低的趋势,但是无论是降低的速率还是初始、最终的结果,采用自适应锚框的autov3网络都要明显优于原始v3网络。证明了本文针对裂缝这类缺陷进行锚框自适应处理的正确的和优越性,不仅能够得到更优的结果,并且优化速度和浮动范围都有明显提升。

4.1.2 mAP评价指标曲线

在本文的裂缝识别任务中图片的标签不止一种,是多标签图像分类任务,因此不能采用简单的单标签分类标准,而是采用了类似信息检索中的方法—mAP(mean Average Precision),该方法相比较简单的Precision和Recall能够更好地衡量模型好坏。由mAP曲线图可以得到v3的初始值为0.17514,autov3的初始值为0.00529。经过1000个epoch后v3达到的结果为0.59828,autov3达到的结果为0.83556。v3能达到的最佳结果为0.64225,autov3最佳结果为0.85729。

图10 mAP指标曲线

由图10可知,autov3网络的mAP明显上升速度快于原始v3网络,且最终结果更优、浮动更小。由训练过程中的3种损失曲线和mAP曲线可以看出经过自适应锚框改进后的autov3网络表现更出色,能够较好地完成工程中的裂缝检测训练。

4.2 实际测试结果

将待识别的图片送入训练好的网络模型进行识别。图片均为佳能450D从新工程中拍摄的原始图片。最终识别效果如图11所示。

(a) 实测结果1

(d) 实测结果4图11 算法实测结果

识别一张大约4000×3000像素的图片耗时在0.025 s左右,在原始大图上能够达到40 fps的速度,已经满足工程即时检测要求。从检测结果中看,有部分划线无法被识别,如果裂缝存在失焦的情况也会导致检测的置信度降低。对于大部分没有经历过人工检测的桥梁一般不存在划线,并且划线的识别率并不会影响检测结果的可靠性。因此,在具体的工程中需要保证获取图像的质量,才能保证算法检测结果的准确性。

4.3 不同算法性能对比

为评价本文算法的性能,本文选取多种裂缝识别方法进行比较,有改进的Faster-RCNN和图像分类加滑动窗口的模型(CNN+SD),还有原始的YOLOv3网络。虽然目前有众多研究者对桥梁裂缝检测进行研究,但是互相之间采用的数据集复杂程度较大,所以本文使用各算法中类似背景的图片进行测试,选用2组复杂度高的检测现场拍摄图片和2组切分后的复杂度较低的裂缝图片作为测试数据。

表1 不同算法性能对比

表1是不同算法的性能对比,由表1可知,CNN+SD的方法作为最初的目标检测思路是能够达到检测目的的,但是效果最差,Faster-RCNN和YOLOv3作为目标检测的2种代表算法,能够将裂缝检测的精度提升至80%和84.52%,召回率提升至57.56%和67.39%。但是作为多标签任务,这3种算法的mAP却没有明显区别。而本文提出的自适应锚框的autov3网络在将精度提升至91.24%、召回率提升至98.02%的同时还将mAP指标提升到了83.51%。综合2项指标可知,本文算法在工程裂缝检测中具有较大的优势。

5 结束语

本文基于YOLOv3模型进行混凝土桥梁裂缝的检测,通过改进原始v3模型中的固定锚框为能够自适应数据集的自适应锚框,大幅提升了模型对裂缝的检测精度,同时还提升了进行多标签分类任务时的性能。经过大量工程数据测试,模型对裂缝检测精度平均超过91%,能够在大部分检测项目中代替人工进行大量重复性检测,减少人工疲惫检测导致的误差。想要深度学习达到人类的检测效果需要极其庞大且丰富的数据样本,只有不停地增加、训练数据才能让模型效果不断提升,从而达到更理想的效果。通过本文的自适应锚框可以在一定程度上解决面对新工程需要增加训练数据带来的问题。在后续的研究工作中还需要不断完善数据和改进模型结构,以此实现真正的自动化裂缝检测。

猜你喜欢
锚框尺寸裂缝
基于YOLOv3锚框优化的侧扫声呐图像目标检测
锚框策略匹配的SSD飞机遥感图像目标检测
基于SSD算法的轻量化仪器表盘检测算法*
基于GA-RoI Transformer的遥感图像任意方向目标检测
CIIE Shows Positive Energy of Chinese Economy
碳酸盐岩裂缝描述七大难点
完美“切割”,裂缝之谜
地球的裂缝
D90:全尺寸硬派SUV
佳石选赏