基于YOLOv3 改进算法的轨枕裂纹检测研究

2021-03-01 08:44童千倩李立明郑丹阳汪晨曦郑树彬
智能计算机与应用 2021年12期
关键词:灰度裂纹投影

童千倩,李立明,郑丹阳,杨 意,汪晨曦,郑树彬

(上海工程技术大学 城市轨道交通学院,上海 201620)

0 引 言

截止2020 年底,中国铁路总保有量达到146.3×103km,营业里程总数达到128×103km,铁路每万平方公里的路网密度达到152.3 km,大规模的铁路建设对铁路基础建设和维护保障提出了较高的需求[1]。维持轨道的几何形位是铁路建设工程与维护保障中重要的部分,轨道线路中,轨枕充当着承载列车负荷、分散钢轨压力至道床的中间角色,在列车运行中起到重要的作用。由于轨枕上截面的荷载弯矩大于轨枕的抗裂强度,易导致混凝土轨枕表面产生裂纹,若不及时检修,会引起混凝土压溃,导致轨枕失效,严重地影响轨枕的使用寿命,威胁轨道交通的行车安全[2]。目前,轨枕裂纹的检测方法主要依靠人工进行,而人工巡检的主观性较强,检测效率低[3]。近年来,部分学者将无损检测,如物理检测手段与计算机检测等手段运用到裂纹检测中。

物理检测通常从声、光、热、磁等角度提出检测方法,对混凝土结构表面的微小异常进行判断,典型的物理无损检测方法,如:声发射技术,散斑干涉技术,红外检测技术等。但是物理检测方法对环境要求较高,检测成本高,具有一定的局限性,例如:声发射技术需要一定的声耦合,需要处于应力状态,红外检测通常需要设备体积较大的仪器,检测环境也有严格的限制[4]。计算机检测通常经过图像预处理,图像特征提取,图像特征处理,最终得到裂纹检测结果,具有低成本,高效率的特点。随着机器视觉技术与深度学习技术的发展,目标检测技术在轨道裂纹检测中应用广泛,例如Faster R-CNN,SSD,YOLO等,已经在裂纹图像检测方面取得了一定的检测成果。目前,Cha 等提出了一种基于Faster R-CNN 的混凝土裂纹检测方法,该种优化后的Faster R-CNN网络能够在多分类的条件下快速地提取裂纹特征,达到较为精确的检测结果[5];Mandal 等基于DCNN对道路混凝土裂纹提出了一种自动化的检测方法,但检测精度较低[6];上述方法均针对路面裂纹提出,在有砟轨道的实际运用中取得的效果较差,Li等基于改进的YOLO 网络,叠加了原始YOLO 中浅层卷积结构的低层特征,提取了深层卷积网络中的抽象语义特征,提高了轨道板裂纹的检测精度,增强了小目标和重叠目标的检测能力,但是由于轨道板数据集的背景信息单一,该方法的通用性较差[7];曹建斌通过结合CF-Net 以及FastCrack模型的两阶段定位法,能满足自动检测轨枕裂纹的需求,但是其召回率与检测速度还需进一步的提升[8]。

针对小目标裂纹检测的方法存在通用性差,精度低,召回率低,检测速度慢的问题,本文设计了一种基于YOLOv3 改进算法的轨枕裂纹检测模型,如图1 所示。本模型首先使用灰度投影法结合经验值定位轨枕坐标并分割轨枕,然后将注意力机制与空间金字塔池化引入本文所述改进的YOLOv3模型中,并改善了裂纹检测损失函数,最终在保持速度的情况下,提高了检测的精度。

图1 基于YOLOv3 改进算法的轨枕裂纹检测模型示意图Fig.1 Schematic diagram of sleeper location segmentation and crack detection method

1 轨枕区域提取

由于道砟与轨枕的灰度存在差异,轨枕边缘特征明显,且轨枕水平放置于道床,垂直于钢轨,同时轨枕尺寸也有着严格的规定,可以利用灰度投影法结合经验值定位轨枕位置,具体流程图如图2 所示。

灰度投影法针对复杂背景的物体边缘检测有着不错的效果,主要依赖波峰和波谷确定物体边缘位置的坐标[9]。针对原图中存在道砟背景的干扰,利用灰度投影法定位得到轨枕与光带边缘坐标,假设图像表示为f(x,y),在y方向的灰度投影函数为fy(x),在x方向的灰度投影函数为fx(x),图像中的像素点坐标为(x,y),则水平与垂直方向的灰度投影函数值为式(1)和式(2):

利用灰度投影法,计算出轨枕与光带边缘的位置,具体实验结果如图2 所示。图2(a)表示有砟道床中钢轨与轨枕原图;图2(b)表示水平投影的波谷表示轨枕与道砟的接触边缘;图2(c)表示垂直投影得到的波峰表示钢轨表面光带所在位置,根据灰度投影的实验结果能够得到光带与轨枕相交点的坐标。

图2 灰度投影实验结果图Fig.2 Grayscale projection experimental results

由于在采集的道床图片中,轨枕边缘的像素宽度相对固定,首先通过灰度投影法得到边缘坐标,然后叠加轨枕像素宽度的经验值,即可得到轨枕顶点坐标,最终定位得到轨枕的位置并完成对轨枕的分割,如图3 所示。

图3 灰度投影分割效果图Fig.3 Grayscale projection segmentation effect

2 基于YOLOv3 改进算法的轨枕裂纹检测模型

YOLOv3 主要改善了主干网络结构,融合多尺度特征,使用独立的逻辑分类器,YOLOv3 网络主要特征为:

(1)Darknet-53模块的预测效率良好。基于Darknet-53 构建的主干网络由于设计了类残差快捷连接(shortcut connections),实现高速的浮点运算,使得预测效率更高[10];

(2)利用逻辑回归输出的多尺度预测。每个网格单元在3 个尺度上预测得到3 个物体框(bounding box),每个物体框包含(x,y,w,h,confidence)5 个基本参数,通过独立的逻辑分类器得出标签为裂纹的概率,根据上采样倍数的不同,输出不同尺度的张量尺寸,张量尺寸计算公式为N ×N ×[3×(5+1)]。

由于YOLOv3 网络在复杂背景下对轨枕裂纹类小目标检测精度低,本文设计了基于YOLOv3 改进算法,使得YOLOv3在保证快速的前提下,进一步提升在混凝土轨枕裂纹检测方面的检测精度。在算法中引入注意力机制中的挤压与激励模块(Squeeze and Excitation,SE)和空间金字塔池化模块(Spatial Pyramid Pooling,SPP),改进后的YOLOv3 网络结构如图4 所示。

图4 改进的YOLOv3 结构图Fig.4 Improved YOLOv3 structure diagram

2.1 挤压与激励模块

由于轨枕裂纹特征存在微小细长、形态多样、与混凝土轨枕背景相似度高等的特点,传统算法存在提取轨枕裂纹特征精确度低等缺点,本算法在YOLOv3 主干网络末端,引入注意力机制中的挤压与激活模块,改善对裂纹特征提取的精度,SE模块的结构如图5 所示。

图5 挤压与激励模块原理Fig.5 Principle of extrusion and excitation module

注意力机制的特点在于其经过特殊设计参数配置,有助于减少无效信息冗余,迅速提取关键特征,所以能够大幅度提高准确率[11]。引入的注意力机制中的挤压与激励模块,能够快速、准确地提取到关键的轨枕裂纹特征。挤压与激励模块首先经过挤压操作(Squeeze),计算公式(3)如下:

其中,uc表示输出轨枕图像中通道的特征;Vc表示轨枕图像中第c个学习的滤波器的参数;X表示输入通道特征;*表示卷积运算。

挤压与激励模块经过1 个全局平均池化层,将轨枕裂纹图像转化为一个1×1×1 024 的向量,该向量代表了轨枕图片中全局的特征通道分布情况,然后放入2 个以全连接层和激活函数为单位的小型模块,针对轨枕裂纹的特征图进行激活(Excitation),最后统一对通道进行加权操作,输出轨枕裂纹特征图。此外,设有残差模块确保有效训练,使得全局特征聚焦于轨枕裂纹的信息特征,有效抑制轨枕图像中其他冗余的特征干扰[12]。

2.2 空间金字塔池化

由于混凝土轨枕在采集的图像中的大小不尽相同,原有的池化层(Pooling)会丢失图片信息,导致裂纹检测效果不理想。如图6 所示,在建立主干网络结构后,通过引入空间金字塔池化操作,能够最终输出固定的图片尺寸,不丢失主要特征,不受输入轨枕图片的尺寸影响,不破坏原始图像比例[13]。首先,将输入的轨枕图像经过一次卷积运算;其次,特征图经过5×5,9×9,13×13 这3 个尺度的池化窗口(pooling window);最后,输出一个同样长度的池化特征(scale-invariance)。

图6 空间金字塔池化模块Fig.6 Pooling module of spatial pyramid

2.3 CIoU 损失函数

轨枕裂纹预测损失函数由回归预测误差Lregression,置信度误差Lconfidence以及分类误差Lclassification3 部分组成[14]。其中,置信度误差由边框内存在轨枕裂纹和不存在轨枕裂纹两种情况叠加计算得到;轨枕裂纹分类误差是基于网格内存在裂纹的前提计算的,若边框内存在轨枕裂纹则分类误差值为1,总体公式(4)如下:

在轨枕裂纹回归预测的损失函数部分,Yolov3使用二分交叉熵损失函数(binary cross-entropy loss),但该函数在误差较大的情况下,会因为小幅度地调整参数,使得训练速度更缓慢。此外,二分交叉熵损失函数较为复杂,运算量较大。

出于对模型收敛速度和精度的考虑,将CIoU损失函数(Complete Intersection over Union Loss,CIoU Loss)作为新的轨枕裂纹回归预测的损失函数,该函数的示意图如图7 所示。

图7 CIoU 损失函数示意图Fig.7 Schematic diagram of CIoU loss function

CIoU部分的损失函数公式(5)为:

其中,IoU表示预测框和实际框的重叠度;ρ2(·)为预测框与实际框的欧式距离;b和bgt分别表示预测框与实际框的中心点位置;c为预测框与实际框组合部分最小外矩形框的对角线;αv是一个带有平衡参数α且用于衡量宽高比相似性v的影响因子。

3 实验结果及分析

3.1 数据集与开发环境

本文的数据集的构建是基于有砟轨道上拍摄和采集的轨枕图片,轨枕状态分为有裂纹和无裂纹两种,本实验获取了共计1 000张裂纹数据集,根据轨枕状态与裂纹条数将其分类,其中含有轨枕裂纹的图像共210 张,不含轨枕裂纹的图像790 张,以7∶3 的训练集与测试集的比例开展实验。本实验是在Win10 操作系统,双CPU Intel Xeon Silver 4214 2.2 GHz,PyTorch 框架以及PyCharm 的集成开发环境下进行。

3.2 轨枕裂纹检测实验

针对灰度投影法分割后的轨枕图像,本实验对训练参数初始值的设置值见表1。

表1 初始参数值的设定Tab.1 Setting of initial parameter values

通过灰度定位法针对道床定位并分割轨枕,用注意力机制中的挤压与激活模块提取重要特征,引入空间金字塔池化,改进损失函数,最终利用改进的YOLOv3 网络完成对轨枕裂纹的检测。评价指标主要从精确度与速度两个角度分析,用到的指标有精确度(Precision,P),召回率(Recall,R),平均准确率(Mean Average Precision,MAP),每秒传输帧数(Frames Per Second,FPS)。实验结果的精确度,召回率和平均准确率的公式(6)~(8)如下:

在精确度与召回率的公式中,Tp(True Positive)表示人工标定为轨枕裂纹,实际被判定存在轨枕裂纹的样本数量;TN(False Positive)表示人工标定背景区域,实际被判定存在轨枕裂纹的样本数量;FN(False Negative)为人工标定背景区域,实际被判定不存在轨枕裂纹的样本数量。在平均准确率的公式中,N表示裂纹分类数量,p(r)表示精确度与召回率的关系函数。

基于本算法实现的轨枕裂纹检测效果如图8 所示。针对输入的整体道床图像与灰度投影法分割后的轨枕图像,分别采用YOLOv3与本算法进行对比实验,结果见表2。经过轨枕区域提取后裂纹检测在YOLOv3 网络上精确度提升了35.0%,召回率提升11.4%,MAP 提升22.4%,证明了轨枕区域提取对轨枕裂纹检测的必要性;将灰度投影法提取的轨枕图像,输入改进的YOLOv3 裂纹检测网络中,裂纹精确度较YOLOv3 网络提升了16.9%,召回率提升了3.5%,MAP 提升了5.9%,证明了本算法在轨枕裂纹检测精度具有显著的优越性。

图8 轨枕裂纹检测效果图Fig.8 Effects of sleeper crack detection

表2 实验量化结果对比Tab.2 Comparison of experimental results

4 结束语

(1)本文提出了一种基于YOLOv3 改进算法的轨枕裂纹检测方法。首先,通过灰度投影法对道床定位并针对轨枕进行了分割;其次,通过改进的YOLOv3 算法对分割得到的轨枕图像进行轨枕裂纹的精确检测。

(2)针对轨枕裂纹检测任务,改进了YOLOv3算法。通过加入注意力机制中的挤压与激活模块,提取轨枕裂纹的重要特征,使得特征提取层部分能够对轨枕裂纹进行精确的定位;引入空间金字塔池化,实现输出相同尺寸的特征图,改进损失函数,最终实现对YOLOv3 的改进。

(3)经实验验证,结果表明对轨枕裂纹的检测精确度达到96.3%,召回率达到91.2%,MAP 达到91.5%,FPS 达到76.6 张/s,检测精确度、召回率和MAP在有砟轨道的轨枕裂纹数据集的表现提升显著。

猜你喜欢
灰度裂纹投影
論詞樂“均拍”對詞體格律之投影
风机增速齿轮含初始裂纹扩展特性及寿命分析
基于二值化灰度图像的大豆蛋白液喷雾相对雾化程度的研究
投影向量问题
有了裂纹的玻璃
有了裂纹的玻璃
天津港智慧工作平台灰度发布系统和流程设计
Arduino小车巡线程序的灰度阈值优化方案
找投影
心生裂纹