Rail Surface Damage Detection Algorithm Based on Improved YOLOv8n
In the process of collecting rail surface damage data and establishing dataset, it is found that there are many large-scale damages and large-scale change of rail surface damage. In response to this, an improved YOLOv8n detection algorithm tailored for multi-scale Rail surface damage was proposed. Firstly, a new feature extraction module, C2f-TA, was designed by integrating C2f with Triplet Attention in the network to expand the receptive field of the feature maps, thereby enhancing the detection accuracy for large-scale targets. Subsequently, a novel multi-scale feature fusion Neck structure was devised by combining the network layer connection modules SDI and TFE. This was achieved by replacing the Concat modules with TFE and SDI modules at different network layers, enabling the fusion of feature maps across four distinct scale levels, thereby enriching the semantic and detailed features of the feature maps. Additionally, a new small-scale target detection branch was constructed using the SSFF and CPAM modules, leveraging channel and local attention mechanisms to strengthen the feature representation of small-scale targets. The results demonstrate that compared to the baseline algorithm, the Precision is improved by 1.8%, the Recall by 7.2%, and the mAP@50 and mAP@50-95 are enhanced by 3% and 2.8%, respectively.
Rail Surface Damage
钢轨是轨道系统的主要组成部件之一
近年来,无损检测技术被广泛应用于轨面伤损检测中
机器视觉的目标检测方法,因其操作简单、通用性强且精度高等优点,从无损检测领域脱颖而出
传统数字图像处理法通过特征提取与匹配识别图像中的目标对象,如Li
深度学习法通过神经网络自主学习图像特征,实现精准识别与定位目标。Choi
然而针对钢轨表面伤损检测仍然存在一些问题,比如:公开数据集少;伤损在轨面呈现尺度多变情况影响检测精度;在实际检测时,还存在钢轨光带易反光、夜间天窗点光照不均和使用轨检车检测会产生运动模糊等情况,导致检测精度较低。为此,本文以YOLOv8n算法作为基准算法,提出基于改进YOLOv8n的钢轨表面伤损检测算法,主要贡献如下:
1) 收集整理钢轨表面伤损数据,并进行数据清洗和标注,再通过数据增强,加强算法的鲁棒性和泛化性。
2) 使用Triplet Attention
3) 结合网络层连接模块SDI (Semantic and Detail Infusion)
4) 利用SSFF (Scale sequence feature fusion module)模块整合Backbone特征信息、CPAM (Channel and position attention mechanism)模块应用通道和局部注意力机制
钢轨表面伤损在尺度方面呈现以大尺度目标为主、尺度变化较大的情况。针对上述情况,仅使用YOLOv8n原始算法容易出现误检和漏检的情况。如
C2f是YOLOv8网络结构中最主要的特征提取模块,模块设计中加入了较多的残差结构,使C2f并行了较多的梯度流分支。虽然C2f采用多分支的残差结构,但是不同的分支间仅仅只是卷积层数有所不同,没有关注到输入数据空间维度和通道维度的交互特征。为此本文引入Triplet Attention来提升算法对钢轨表面伤损特征的提取能力。Triplet Attention是利用三个分支结构捕获输入数据的跨维度交互,每个分支负责捕获空间维度(输入张量高度H或宽度W)与通道维度C之间的交互特征。
从输入张量x经过Triplet Attention的处理得到输出张量y的过程也可以用等式表示:
其中 表示sigmoid激活函数; 、 和 表示Triplet Attention模块三个分支中卷积核大小为K的标准二维卷积层。
如
YOLO系列网络算法在结构设计时受FPN (Feature Pyramid Networks)结构
YOLOv8网络使用PAFPN (Path Aggregation Feature Pyramid Network)结构
SDI模块通过平均池化和线性插值将不同尺度的特征图缩放到同一尺寸,如
相较于YOLOv8原网络中Concat模块的简单串联的方式,使用SDI模块代替Concat模块,可以在不增大特征图尺寸的情况下,进行更多尺度的融合,并赋予输出特征图丰富的语义特征和细节特征。
TFE模块如
其中 、 和 分别表示大、中、小尺寸的特征图;y是 、 和 拼接的结果,其尺度和 相同,但通道数是其的三倍。
为提升算法对小尺度目标的检测精度,网络结构中额外增加了一条由SSFF模块和CPAM模块组成的分支。如
如
新的多尺度特征融合Neck网络结构如
SDI模块除了接收上层网络特征信息还接收已经被处理过的Backbone部分的特征信息,因为SDI模块非常靠近中目标和大目标检测头,需要经过多次卷积和池化操作的特征信息,这些信息能给捕捉到图像中更加抽象和全局的特征,这对中目标和大目标的检测精度的提升非常有效。
新的小尺度目标检测分支中SSFF模块直接接收来自Backbone的三个不同尺度级别的特征信息,并将处理后的输出信息输入CPAM模块,CPAM模块除了接收SSFF模块的输出信息外还接收第一个C2f-TA模块的输出信息,经过CPAM模块处理后的特征信息直接进入检测头进行处理,这些特征信息经过的卷积操作和池化操作较少,拥有更高的空间分辨率和丰富的细节特征,这些信息对小尺度目标检测是非常有效的。
钢轨表面伤损数据集的图片来自某铁路局管辖内达到打磨标准的铁路区段,由现场职工使用手持设备拍摄所得,包含钢轨光带
钢轨表面伤损图片初始数量为4924张,经过数据清洗,并使用LabelImg工具对图片进行标注,然后结合检测场景中可能遇到的钢轨光带反光、夜间天窗点光线不均匀、轨检车速度较快造成图片模糊和拍摄角度不同可能会对检测精度造成影响,对原始数据进行高亮、昏暗、运动模糊、角度旋转以及不同增强方式之间的组合来对数据集进行增强,如
为了确保实验的公平性和合理性,所有的实验都在相同的实验环境和配置参数下进行。本文的实验环境包括:Windows 11操作系统、NVIDIA RTX 5000显卡、Python 3.8.17、CUDA 11.8和torch 2.0.0作为编译环境,使用Ultralytics YOLOv8.1.29作为网络结构的基础框架。训练参数如下:输入图像的分辨率为640 × 640像素,使用随机梯度下降(SGD)优化器对模型进行优化,总训练轮数(epoch)设置为200,批次大小(batch)设置为8,工作线程数(works)设为4,其他参数采用默认值。
为评估本文所提算法的有效性,采用以下评估指标:精确度(Precision)、召回率(Recall)、平均精度(mean Average Precision, mAP)、参数量(Params/M)和每秒10亿次浮点运算数(Giga Floating-point Operations Per Second, GFLOPs)。其中,精确度衡量模型预测的正样本中实际为正样本的比例,计算公式如下:
其中,TP (True Positive)表示算法将实际为正类的样本正确地预测为正类,FP (False Positive)表示算法将实际为负类的样本错误地预测为正类。召回率衡量的是算法能够正确识别的正类实例占所有实际正类实例的比例,计算公式如下:
其中,FN (False Negative)表示算法将实际为正类的样本错误地预测为负类。mAP根据IOU阈值分为mAP@0.5和mAP@0.5-95,不同的阈值得到不同的mAP,具体计算公式如下:
其中,AP (Average Precision)是精确度-召回率曲线下面的面积,N是类别的总数,i表示第i个类别。
精确度、召回率和mA的值越大,模型检测的精度越高。Params和GFLOPs反映算法的复杂度,这些值越小,说明算法越简单,对硬件性能的要求也越低。
C2f-TA模块能够构建输入张量在通道和空间维度之间的相互依赖性,提升特征表达的丰富性和准确性,提高算法特征提取能力。为了探究C2f-TA模块加入网络结构的不同位置对算法检测精度提升最大化问题,本文设计如下
根据
Algorithm |
Precision |
Recall |
mAP@50 |
mAP@50-95 |
Params |
GFLOPs |
YOLOv8n |
0.849 |
0.809 |
0.884 |
0.702 |
3,006,428 |
8.1 |
C2f-TA-A |
0.849 |
0.821 |
0.896 |
0.709 |
3,012,788 |
8.4 |
C2f-TA-B |
0.875 |
0.875 |
0.876 |
0.705 |
3,009,860 |
8.3 |
C2f-TA-N |
0.871 |
0.835 |
0.893 |
0.714 |
3,009,356 |
8.2 |
C2f-TA-Self |
0.843 |
0.85 |
0.895 |
0.716 |
3,008,672 |
8.2 |
多尺度特征融合Neck部分通过对特征金字塔的各级特征信息的充分利用能有效的进行多尺度特征信息的融合,避免了简单拼接造成的特征信息损失。其中,SDI模块和TFE模块都可以作为连接模块替换YOLOv8网络中Neck部分负责连接的Concat模块,能给在不增加特征图尺寸的前提下,保留丰富特征信息。
由于SDI模块中存在卷积操作会导致参数量的提升,所以优先考虑SDI模块在Neck结构中的位置。为了最大化算法的检测精度和效率,对比SDI模块不同的数量和位置对算法的影响。YOLOv8的Neck结构中一共有4个连接层,按照是否替换为SDI模块设计了3组对比实验,SDI-all算法表示将所有的Concat模块全部替换为SDI模块;SDI-FT算法表示将前两个Concat模块替换为SDI模块;SDI-LT算法表示将后两个Concat模块替换为SDI模块。
Algorithm |
Precision |
Recall |
mAP@50 |
mAP@50-95 |
Params |
GFLOPs |
YOLOv8n |
0.849 |
0.809 |
0.884 |
0.702 |
3,006,428 |
8.1 |
SDI-all |
0.89 |
0.827 |
0.888 |
0.711 |
4,564,060 |
14.2 |
SDI-FT |
0.823 |
0.816 |
0.874 |
0.692 |
4,092,636 |
13.6 |
SDI-LT |
0.813 |
0.842 |
0.88 |
0.693 |
3,477,852 |
8.7 |
根据
TFE模块仅使用池化、插值和拼接操作实现特征融合,没有涉及参数量变化的操作,但TFE模块需要接收三个输入层,所以将上层网络层的上采样模块替换为两个卷积模块分别接收不同尺度级别的输入。为了验证单独使用TFE模块和将TFE模块和SDI模块进行组合使用对检测精度的影响,设计了两种算法进行对比,TFE-FT算法表示在新的多尺度特征融合Neck结构中,将前两个连接层替换为TFE模块,后两个依然为Concat模块;而TFE-SDI算法表示在TFE-FT算法的基础上将后两个Concat模块替换为SDI模块。
Algorithm |
Precision |
Recall |
mAP@50 |
mAP@50-95 |
Params |
GFLOPs |
YOLOv8n |
0.849 |
0.809 |
0.884 |
0.702 |
3,006,428 |
8.1 |
TFE-FT |
0.813 |
0.869 |
0.886 |
0.69 |
3,051,175 |
8.6 |
TFE-SDI |
0.854 |
0.842 |
0.905 |
0.723 |
3,379,239 |
9 |
根据
SSFF模块通过3D卷积操作可以有效整合来自Backbone中不同尺度的特征信息;而CPAM模块通过通道和局部注意力机制将整合的特征信息进行处理。
Algorithm |
Precision |
Recall |
mAP@50 |
mAP@50-95 |
Params |
GFLOPs |
YOLOv8n |
0.849 |
0.809 |
0.884 |
0.702 |
3,006,428 |
8.1 |
ST-small |
0.852 |
0.822 |
0.886 |
0.718 |
3,347,360 |
8.8 |
SC-small |
0.867 |
0.881 |
0.914 |
0.723 |
3,379,239 |
9 |
SA-small |
0.825 |
0.851 |
0.886 |
0.659 |
3,378,460 |
9 |
根据
为验证本文提出的新模块和新结构在钢轨表面伤损检测中的检测精度优势,以YOLOv8n作为基准算法设计了如
Algorithm |
Precision |
Recall |
mAP@50 |
mAP@50-95 |
Params |
GFLOPs |
YOLOv8n |
0.849 |
0.809 |
0.884 |
0.702 |
3,006,428 |
8.1 |
T |
0.843 |
0.85 |
0.895 |
0.716 |
3,008,672 |
8.2 |
TST |
0.854 |
0.842 |
0.905 |
0.723 |
3,379,239 |
9 |
TSTSC |
0.867 |
0.881 |
0.914 |
0.73 |
3,381,483 |
9.1 |
为了直观展现本文提出的改进算法TSTSC相较于原始YOLOv8n算法在检测精度方面的提升,绘制了Precision、Recall以及mAP的对比折线图。如
通过对比折线图可以看出,本文提出的改进算法在每个性能指标上均有明显提升。特别是mAP相较于原始YOLOv8n算法整体呈现更好的表现,清晰展示了改进算法在检测精度的优势。
为了进一步验证本文所提出的算法在检测性能上的优势,将本文提出的改进算法TSTCS与近些年的单阶段目标检测算法中性能最优秀的YOLOv9t算法
Algorithm |
Precision |
Recall |
mAP@50 |
mAP@50-95 |
Params |
GFLOPs |
YOLOv8n |
0.849 |
0.809 |
0.884 |
0.702 |
3,006,428 |
8.1 |
YOLOv9t |
0.876 |
0.811 |
0.881 |
0.694 |
2,618,120 |
10.7 |
YOLOv9c |
0.847 |
0.864 |
0.91 |
0.733 |
50,705,208 |
236.7 |
YOLOv10n |
0.781 |
0.779 |
0.822 |
0.594 |
2,695,976 |
8.2 |
YOLOv10s |
0.87 |
0.769 |
0.853 |
0.685 |
8,038,056 |
24.5 |
Faster R-CNN-Resnet50 |
0.50 |
0.75 |
0.701 |
0.43 |
28,306,000 |
470.5 |
Faster R-CNN-VGG |
0.594 |
0.862 |
0.815 |
0.43 |
136,750,000 |
184.9 |
TSTSC |
0.867 |
0.881 |
0.914 |
0.73 |
3,381,483 |
9.1 |
在以上8种算法中,本文所提出的YOLOv8n改进算法TSTSC在Recall和mAP@50这两个性能指标上均表现最优,在Precision和mAP@50-95这两个性能指标较其他算法也有明显优势,通过分析Params和GFLOPs的值得知本算法相较于其他算法的算法复杂度更低,且明显优于Faster R-CNN-Resnet50算法和Faster R-CNN-VGG算法。总体而言,本文所提出的基于YOLOv8n的改进算法TSTSC对钢轨表面伤损检测效果更好,且网络复杂度方面也有一定优势,兼顾了算法的检测精度和计算成本,具有较高的实用性。
钢轨表面伤损数据集收集了四种伤损类型,在检测过程中为了防止名称过长影响检测效果图,用band表示钢轨光带,ylw表示钢轨鱼鳞纹,xxw表示钢轨斜裂纹,side表示钢轨侧磨。
这五组对比图像可以看出:在组别1中,在正常情况下,本文所提出的改进YOLOv8n算法在对钢轨光带进行检测时呈现出更高的置信度;在组别2中检测场景光线昏暗且摄像头也有偏差的情况下,本文所提出的改进YOLOv8n算法在对钢轨光带进行检测时对比YOLOv8n算法也有更高的置信度;在组别3中YOLOv8n算法还出现将钢轨表面的人工标记误检成钢轨斜裂纹的情况,这种情况在改进后的算法上并没有出现;在组别4中本文所提出的改进算法并没有因为角度倾斜而导致钢轨鱼鳞纹的漏检,而YOLOv8n算法则出现了漏检的情况;在组别5中,钢轨斜裂纹在钢轨光带上呈现裂纹又细又密的情况,导致与钢轨光带差异性较小,YOLOv8n算法出现了漏检的情况,而本文所提出的改进算法还是检测到了该伤损。
上述5组对比结果表明,本文所提出的改进YOLOv8n算法在面对复杂场景和相似伤损时,相较于原始YOLOv8n算法对钢轨表明伤损做出了更加有效的检测,表现出更高的准确性和鲁棒性,具有更高的实际应用价值。
为解决钢轨表面伤损存在的大尺度为主、尺度变化较大对检测精度的影响,本文在YOLOv8n算法的基础上进行针对性改动,提高检测精度,控制计算成本,并通过自建钢轨表面伤损数据集进行训练、验证和测试。首先,结合Triplet Attention设计C2f-TA模块增大特征图感受野,减少大尺度伤损对检测精度的影响;其次,利用连接模块TFE和SDI设计多尺度特征融合Neck网络结构,提高特征图信息的全面性,解决尺度变化较大对检测精度的影响;最后,设计由SSFF模块和CPAM模块组成的小尺度目标检测分支,进一步提高算法对小目标的检测精度。实验结果表明,改进后的YOLOv8n算法对钢轨表面伤损的检测精度更高,算法的计算成本提升少,兼顾了检测精度和计算成本。未来研究中将围绕提升细小伤损和裂纹检测精度的难题对算法进行优化,提升对是否存在伤损的判断的精确性而不仅仅局限于是否存在某种较大尺度伤损类型,以提高算法的实用价值。
山东省重点研发计划项目(Grant No.2019JZZY010428)。