1. 引言
钢轨是轨道系统的主要组成部件之一[1],用于引导列车的车轮前进,同时承受列车向下的巨大压力。钢轨表面作为支撑列车运行的直接接触面,受车轮摩擦和振动冲击的影响,不可避免地会产生表面伤损。表面伤损会引起车辆的晃动,加速钢轨的磨耗,严重时会导致钢轨断裂,极大危害行车安全。
近年来,无损检测技术被广泛应用于轨面伤损检测中[2],其中涡流检测[3] [4]、漏磁检测[5] [6]、超声波检测[7] [8]和声发射检测[9] [10]等技术在针对特定的一种或几种钢轨伤损进行检测时,显示出较为优秀的检测效果,但伤损类型判定环节还是需要人工的干预,效率低下。
机器视觉的目标检测方法,因其操作简单、通用性强且精度高等优点,从无损检测领域脱颖而出[11]。机器视觉的检测方法分为传统的数字图像处理法和深度学习法两大类。
传统数字图像处理法通过特征提取与匹配识别图像中的目标对象,如Li [12]等用灰度积分投影定位伤损,Min [13]等则利用形态学与链码特征提升检测速度,但这些方法召回率低且易受噪声影响。后续研究结合图像增强与阈值分割技术,如He [14]等的反向P-M扩散与差分二值化,有效应对光照变化与反射不均,显著改进钢轨伤损检测。但传统数字图像处理法仍受噪声、光照异常制约,且阈值设定缺乏普适性。
深度学习法通过神经网络自主学习图像特征,实现精准识别与定位目标。Choi [15]等和Guo [16]等分别基于Faster R-CNN [17]和Mask R-CNN [18]的检测算法在自建钢轨缺陷数据集上进行实验,结果表明,基于深度学习的方式准确率高且速度快于传统图像处理方法。为进一步提升检测速度,Wang [19]等和Arrosida [20]都是采用基于YOLO (You Only Look Once) [21]的算法,通过回归模型直接预测伤损位置与类别,既保证了高精度又加快了检测速度。
然而针对钢轨表面伤损检测仍然存在一些问题,比如:公开数据集少;伤损在轨面呈现尺度多变情况影响检测精度;在实际检测时,还存在钢轨光带易反光、夜间天窗点光照不均和使用轨检车检测会产生运动模糊等情况,导致检测精度较低。为此,本文以YOLOv8n算法作为基准算法,提出基于改进YOLOv8n的钢轨表面伤损检测算法,主要贡献如下:
1) 收集整理钢轨表面伤损数据,并进行数据清洗和标注,再通过数据增强,加强算法的鲁棒性和泛化性。
2) 使用Triplet Attention [22]结合C2f (Faster Implementation of CSP Bottleneck with 2 Convolutions)模块设计C2f-TA模块加强算法对钢轨表面伤损特征的提取能力。
3) 结合网络层连接模块SDI (Semantic and Detail Infusion) [23]和TFE (Triple feature encoding module),设计新的多尺度特征融合Neck结构,整合不同层级和尺度的特征信息,提高算法的检测精度。
4) 利用SSFF (Scale sequence feature fusion module)模块整合Backbone特征信息、CPAM (Channel and position attention mechanism)模块应用通道和局部注意力机制[24],设计针对小尺度目标检测的新分支。
2. 算法设计思想
钢轨表面伤损在尺度方面呈现以大尺度目标为主、尺度变化较大的情况。针对上述情况,仅使用YOLOv8n原始算法容易出现误检和漏检的情况。如图1所示为改进后YOLOv8n算法的网络结构,通过结合C2f与Triplet Attention形成C2f-TA模块作为主要的特征提取模块,扩大处理后特征图的感受野,帮助算法更好地捕获全局上下文信息,增加对大尺度目标的检测精度;结合SDI模块与TFE模块设计多尺度特征融合Neck结构,通过多路径的信息交流处理检测目标尺度变化大的问题;应用3D卷积、通道和局部注意力机制,设计针对小尺度目标检测的新分支。
Figure 1. Overall structure of the improved YOLOv8n algorithm
图1. 改进YOLOv8n算法总体结构图
2.1. 特征提取模块C2f-TA
C2f是YOLOv8网络结构中最主要的特征提取模块,模块设计中加入了较多的残差结构,使C2f并行了较多的梯度流分支。虽然C2f采用多分支的残差结构,但是不同的分支间仅仅只是卷积层数有所不同,没有关注到输入数据空间维度和通道维度的交互特征。为此本文引入Triplet Attention来提升算法对钢轨表面伤损特征的提取能力。Triplet Attention是利用三个分支结构捕获输入数据的跨维度交互,每个分支负责捕获空间维度(输入张量高度H或宽度W)与通道维度C之间的交互特征。
Triplet Attention模块,如下图2所示,该模块接收一个来自上层网络的输入张量
通过两个分支进行排列变换使张量
分别沿着维度H和W进行逆时针90度旋转,得到张量
和张量
,然后通过Z-Pool操作将张量x的首个维度降至2,并通过一个卷积核大小为
的卷积模块将首个维度进一步降至1,再利用Sigmoid激活函数生成注意力权重将其应用于只经过排列变换的张量x,最后变换回原来的形状进行平均后聚合成输出张量。最下面那条分支,除不对输入张量
进行排列变换外,其他的操作和上面两条分支相同。Triplet Attention模块的这种结构使模型能构建通道与空间维度之间的相互依赖性,扩大特征图的感受野,提高模型对特征的理解能力。
Figure 2. Triplet attention mechanism
图2. 三重注意力机制
从输入张量x经过Triplet Attention的处理得到输出张量y的过程也可以用等式表示:
其中
表示sigmoid激活函数;
、
和
表示Triplet Attention模块三个分支中卷积核大小为K的标准二维卷积层。
如图3所示,为C2f-TA模块结构图,将Triplet Attention添加到C2f结构中的Bottleneck部分,形成新的C2f-TA模块加强对钢轨表面伤损特征的提取能力。将Triplet Attention添加到Bottleneck网络结构层中的最后一层,使Bottleneck模块由原来的两次卷积组成的单条梯度流分支变成了三条梯度流分支,产生更加丰富的梯度信息。还通过旋转输入张量的操作,关注到输入张量中的空间位置和通道维度之间的交互关系,使得网络能够获得更加全面的钢轨表面伤损特征信息。
Figure 3. C2f-TA module structure
图3. C2f-TA模块结构图
2.2. 多尺度特征融合Neck结构设计
YOLO系列网络算法在结构设计时受FPN (Feature Pyramid Networks)结构[25]的影响,通过跨阶段的连接,将低级特征与高级特征进行融合。因为低级特征通常保留更多的细节,但缺乏足够的语义信息和不希望出现的噪声。高级特征则包含更多的语义信息,但由于分辨率显著降低,因此缺乏精确的细节(纹理、对象边界等)。所以通过连接低级特征和高级特征的操作,在不影响网络的计算效率的同时,使得特征信息更加丰富和全面,提高网络的特征提取能力。
YOLOv8网络使用PAFPN (Path Aggregation Feature Pyramid Network)结构[26]进行多尺度特征融合,如图4所示,Neck部分接收Backbone部分的P3、P4和P5作为PAFPN结构的输入,进行多尺度融合得到输出张量,最后不同尺度的输出张量进入Head部分进行对象边界框的回归和分类。但是,YOLOv8网络的PAFPN结构仅使用Concat模块进行两个尺度的简单串联拼接来融合不同尺度的特征信息,这种方式特别依靠网络自身的学习能力,且会增大特征图尺寸,不能有效地利用各级特征图之间的相关性。
Figure 4. PAFPN Structure
图4. PAFPN结构图
2.2.1. Semantics and Detail Infusion Module
SDI模块通过平均池化和线性插值将不同尺度的特征图缩放到同一尺寸,如图5所示,将Input2的尺寸设置为目标尺寸,那么仅仅对Input2进行卷积操作。当输入特征图尺寸大于目标尺寸(如Input1)时,对特征图进行自适应平均池化使尺寸缩放至目标尺寸,当输入特征图尺寸小于目标尺寸(如Input3)时,对特征图进行双线性插值使尺寸缩放至目标尺寸,然后对特征图进行卷积。最后对所有的特征图进行逐元素乘法,得到SDI模块的输出。
Figure 5. Illustration of SDI module effect
图5. SDI模块效果示意图
相较于YOLOv8原网络中Concat模块的简单串联的方式,使用SDI模块代替Concat模块,可以在不增大特征图尺寸的情况下,进行更多尺度的融合,并赋予输出特征图丰富的语义特征和细节特征。
2.2.2. Triple Feature Encoding Module
TFE模块如图6所示,是将大中小三个尺度的特征图对齐到中间尺度进行融合的模块,在大尺度特征图分别使用最大池化和平均池化并将输出结果进行相加,这有助于保留高分辨率特征;在小尺度图像使用最近邻插值法进行上采样,并将调整后的特征图在通道维度上与处理后大尺度和中尺度特征图进行了拼接。这种结构使得模型既能捕捉到全局信息(来自大尺度特征),又能关注到细节信息(来自小尺度特征),从而提升算法的表现力和准确性。拼接过程如等式所示:
其中
、
和
分别表示大、中、小尺寸的特征图;y是
、
和
拼接的结果,其尺度和
相同,但通道数是其的三倍。
Figure 6. TFE Module Structure
图6. TFE模块结构图
2.2.3. 小尺度目标检测分支
为提升算法对小尺度目标的检测精度,网络结构中额外增加了一条由SSFF模块和CPAM模块组成的分支。如图7所示为SSFF模块的结构图,SSFF模块是将中小两个尺度的特征图通过插值的方式对齐到大尺度进行融合,以增强特征表达。SSFF模块在对齐尺度过程中加入2D卷积操作将特征图的通道数改为256,再通过Unsqueeze方法增加特征图的维度,从3D特征图[高度,宽度,通道]变为4D特征图[深度,高度,宽度,通道],并沿深度维度进行拼接,方便后续对特征图进行3D卷积和批量归一化等操作,充分地融合不同尺度特征,进一步增强特征图的表达能力。最后使用Squeeze方法还原为后续网络层所需的3D特征图。
Figure 7. SSFF module structure
图7. SSFF模块结构图
如图8所示,CPAM模块的作用是在输入特征图上应用通道注意力机制和局部注意力机制,以提高特征的表征能力和适应性。该模块接收两个输入Input1 (SSFF模块的输出张量)和Iputut2 (第一个C2f-TA模块的输出张量),首先对Input1应用通道注意力机制,将处理后的Input1与Iputut2相加,再对相加结果应用局部注意力机制获得最后的输出结果Output。CPAM模块通过结合通道和局部注意力机制,能够更好的捕捉和强调重要特征。因为小目标的特征容易被大目标或背景噪声掩盖,通过通道和局部注意力机制增强特征表达,可以突出关键信息,抑制无关信息,特别是对小目标的检测,减少漏检和误检的概率。
Figure 8. CPAM module structure
图8. CPAM模块结构图
2.2.4. 多尺度特征融合Neck网络结构总体布局
新的多尺度特征融合Neck网络结构如图9所示,与YOLOv8网络的原Neck网络结构相比,新的Neck部分中使用两个并行的卷积模块替换上采样模块,卷积模块分别接收来自上一层网络层的特征信息和来自Backbone部分的特征信息,并将卷积处理后的特征信息送入TFE连接层。其中,在第二个TFE连接层之前的其中一个卷积模块中还接收来自Backbone部分P2的特征信息,这在之前的YOLOv8网络结构中是没有出现过的。对于Backbone部分P3、P4和P5的特征信息,新的Neck分别在不同的层中使用了3次、2次和2次,充分利用特征金字塔中自顶向下的多尺度特征图信息。
Figure 9. Detailed layout of the multi-scale feature fusion Neck network structure
图9. 多尺度特征融合Neck网络结构总体布局图
SDI模块除了接收上层网络特征信息还接收已经被处理过的Backbone部分的特征信息,因为SDI模块非常靠近中目标和大目标检测头,需要经过多次卷积和池化操作的特征信息,这些信息能给捕捉到图像中更加抽象和全局的特征,这对中目标和大目标的检测精度的提升非常有效。
新的小尺度目标检测分支中SSFF模块直接接收来自Backbone的三个不同尺度级别的特征信息,并将处理后的输出信息输入CPAM模块,CPAM模块除了接收SSFF模块的输出信息外还接收第一个C2f-TA模块的输出信息,经过CPAM模块处理后的特征信息直接进入检测头进行处理,这些特征信息经过的卷积操作和池化操作较少,拥有更高的空间分辨率和丰富的细节特征,这些信息对小尺度目标检测是非常有效的。
3. 实验结果与分析
3.1. 数据集介绍与处理
钢轨表面伤损数据集的图片来自某铁路局管辖内达到打磨标准的铁路区段,由现场职工使用手持设备拍摄所得,包含钢轨光带[27]、钢轨鱼鳞纹[28]、钢轨踏面斜裂纹[29]和钢轨侧磨[30]这4种钢轨表面常见伤损类型。原始图片中钢轨主体占比较小且图片大小超过YOLOv8默认尺寸640 × 640像素,为了突出检测主体和避免图片进入网络中进行Letter Box时填充过多的黑色边框,将多余的背景进行裁剪使尺寸接近640 × 640像素。
钢轨表面伤损图片初始数量为4924张,经过数据清洗,并使用LabelImg工具对图片进行标注,然后结合检测场景中可能遇到的钢轨光带反光、夜间天窗点光线不均匀、轨检车速度较快造成图片模糊和拍摄角度不同可能会对检测精度造成影响,对原始数据进行高亮、昏暗、运动模糊、角度旋转以及不同增强方式之间的组合来对数据集进行增强,如图10所示,左边为未经数据增强的钢轨表面伤损原图,右边为经过数据增强后的图片。经过处理,数据集图片数量达到6224张,标注样本总数为10,734个。最后将数据集按照8:1:1划分为训练集、验证集和测试集。
Figure 10. Original image of rail surface damage and augmented image
图10. 钢轨表面伤损原图和数据增强后图片
3.2. 实验设置
为了确保实验的公平性和合理性,所有的实验都在相同的实验环境和配置参数下进行。本文的实验环境包括: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,其他参数采用默认值。
3.3. 算法评价指标
为评估本文所提算法的有效性,采用以下评估指标:精确度(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反映算法的复杂度,这些值越小,说明算法越简单,对硬件性能的要求也越低。
3.4. 有效性实验分析
3.4.1. C2f-TA模块有效性分析
C2f-TA模块能够构建输入张量在通道和空间维度之间的相互依赖性,提升特征表达的丰富性和准确性,提高算法特征提取能力。为了探究C2f-TA模块加入网络结构的不同位置对算法检测精度提升最大化问题,本文设计如下表1所示的有效性实验。C2f-TA-A表示将网络结构中所有的C2f模块都替换为C2f-TA模块;C2f-TA-B表示将Backbone部分结构中的4个C2f模块替换成C2f-TA模块;C2f-TA-N表示将Neck部分结构中的4个C2f模块替换成C2f-TA模块;C2f-TA-Self表示将最靠近检测头的3个C2f模块替换成C2f-TA模块。在上述实验过程中,除了替换模块外,其余网络结构均未改变。
根据表1的数据可知,引入Triplet Attention的C2f-TA模块并不是在网络结构的任意位置上进行替换都能提高算法的检测精度。对比4种替换方式,将最靠近检测头的3个C2f模块替换成C2f-TA模块得到的效果最好且算法的复杂度提升也是最小的,主要是因为最靠近检测头的特征层包含丰富的高层语义信息,这些特征对于大尺度目标检测非常重要。Triplet Attention在这些层次增强了通道和空间维度的交互,提升了特征的表达能力,从而显著提高了检测精度。而Backbone部分负责初步特征提取,主要是低层次特征,这些特征对于最终的检测结果贡献较小,在网络结构的前部广泛使用注意力机制也可能会导致梯度的消失或扩散问题。
Table 1. Comparison experiments on the effectiveness of the C2f-TA module
表1. 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 |
3.4.2. SDI模块与TFE模块部署方式设计
多尺度特征融合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模块。
Table 2. Comparison experiments on the effectiveness of the SDI module
表2. 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 |
根据表2中的数据可知,在一定方式下使用SDI模块会提升算法的检测精度,但SDI模块包含额外的卷积操作会提升算法的参数量和计算量,特别是在前两个没有经过下采样操作的连接模块网络层使用,该网络层特征图尺寸较大,使用SDI模块会导致算法参数量和计算量的较大提升。
TFE模块仅使用池化、插值和拼接操作实现特征融合,没有涉及参数量变化的操作,但TFE模块需要接收三个输入层,所以将上层网络层的上采样模块替换为两个卷积模块分别接收不同尺度级别的输入。为了验证单独使用TFE模块和将TFE模块和SDI模块进行组合使用对检测精度的影响,设计了两种算法进行对比,TFE-FT算法表示在新的多尺度特征融合Neck结构中,将前两个连接层替换为TFE模块,后两个依然为Concat模块;而TFE-SDI算法表示在TFE-FT算法的基础上将后两个Concat模块替换为SDI模块。
Table 3. Comparison experiment of TFE module and SDI module combination methods
表3. FE模块和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 |
根据表3的数据可知,单独使用TFE模块并不能提升算法的检测精度,通过在Neck结构中的前部网络层中使用TFE模块进行网络层连接,在经过下采样的后部网络层中使用SDI模块进行网络层连接,建立多路径的特征梯度流和多样化的处理方式,相较于单独使用一个模块,不同路径的信息交互和融合提高了特征图的表达能力和算法的整体性能,进而提升了算法的检测精度。
3.4.3. 小尺度目标检测分支有效性分析
SSFF模块通过3D卷积操作可以有效整合来自Backbone中不同尺度的特征信息;而CPAM模块通过通道和局部注意力机制将整合的特征信息进行处理。表4为3个不同的小目标检测分支的对比结果,YOLOv8n算法为原始的小目标检测分支,将Neck结构中的第二个C2f的输出特征信息送入检测头进行处理;ST-small算法表示将新的多尺度特征融合Neck结构中的第二个C2f模块的输出特征信息送入检测头进行处理;SC-small算法表示在ST-small算法的基础上将SSFF模块和CPAM模块组成的小尺度目标检测分支输出的特征信息送入检测头进行处理;SA-small算法在SC-small算法的基础上将CPAM模块替换为简单相加的Add模块,测试注意力机制的有效性。这四种处理方式输出的特征图尺寸都是用于小尺度目标检测的80 × 80 × 256。
Table 4. Comparison experiments on small-scale object detection branches
表4. 小尺度目标检测分支对比实验
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 |
根据表4的数据可知,SC-small算法能够有效整合来自Backbone的多尺度特征信息,并通过通道和局部注意力机制增强特征表达,这对于小目标检测非常有效,通过整合网络前部未经多次卷积和池化的特征信息和使用注意力机制增强小尺度目标特征表达,可以显著提高检测精度。
3.5. 消融实验结果分析
为验证本文提出的新模块和新结构在钢轨表面伤损检测中的检测精度优势,以YOLOv8n作为基准算法设计了如表5所示的消融实验。在YOLOv8n的基础上加入C2f-TA模块得到算法T,继续加入SDI模块和TFE模块组成新的多尺度特征融合Neck得到算法TST算法,最后加入由SSFF模块和CPAM模块组成的小尺度目标检测分支得到最终的算法TSTSC。实验结果显示,改进后的YOLOv8n算法,Precision提升了1.8%,Recall提升了7.2%,mAP@50和mAP@50-95分别提升了3%和2.8%。在参数量和计算量少量增加的基础上,各项性能指标均有提升,在一定程度上兼顾了检测精度和计算成本的问题。
Table 5. Comparison experiments on small-scale object detection branches
表5. 小尺度目标检测分支对比实验
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的对比折线图。如图11,在折线图中X轴表示Epoch,Y轴则表示对应的性能指标值,每条折线代表一个算法。
通过对比折线图可以看出,本文提出的改进算法在每个性能指标上均有明显提升。特别是mAP相较于原始YOLOv8n算法整体呈现更好的表现,清晰展示了改进算法在检测精度的优势。
Figure 11. Line chart comparison of YOLOv8n and TSTSC algorithm performance
图11. YOLOv8n算法与TSTSC算法性能对比折线图
3.6. 与不同算法检测性能对比
为了进一步验证本文所提出的算法在检测性能上的优势,将本文提出的改进算法TSTCS与近些年的单阶段目标检测算法中性能最优秀的YOLOv9t算法[31]、YOLOv9c算法、YOLOv10n [32]算法和YOLOv10s算法进行对照试验,以及与双阶段目标检测算法中应用最广泛也是性能最强的Faster R-CNN-Resnet50和Faster R-CNN-VGG进行对照实验,这两个算法的区别在于Backbone网络分别采用Resnet50 [33]和VGG [34]。对照实验均在相同硬件平台进行,采用本文所构建的钢轨表面伤损数据集进行训练,确保实验过程的公正性和实验结果的可信度。对照实验结果如表6所示,表中加粗数值表示各项性能指标中的最优值。
Table 6. Performance comparison of different algorithms
表6. 不同算法的性能对比实验
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对钢轨表面伤损检测效果更好,且网络复杂度方面也有一定优势,兼顾了算法的检测精度和计算成本,具有较高的实用性。
3.7. 实际检测能力测试
钢轨表面伤损数据集收集了四种伤损类型,在检测过程中为了防止名称过长影响检测效果图,用band表示钢轨光带,ylw表示钢轨鱼鳞纹,xxw表示钢轨斜裂纹,side表示钢轨侧磨。图12展示了YOLOv8n算法和改进后YOLOv8n算法在实际检测效果中的对比,检测使用的数据均没有在训练集和验证集中出现过。
这五组对比图像可以看出:在组别1中,在正常情况下,本文所提出的改进YOLOv8n算法在对钢轨光带进行检测时呈现出更高的置信度;在组别2中检测场景光线昏暗且摄像头也有偏差的情况下,本文所提出的改进YOLOv8n算法在对钢轨光带进行检测时对比YOLOv8n算法也有更高的置信度;在组别3中YOLOv8n算法还出现将钢轨表面的人工标记误检成钢轨斜裂纹的情况,这种情况在改进后的算法上并没有出现;在组别4中本文所提出的改进算法并没有因为角度倾斜而导致钢轨鱼鳞纹的漏检,而YOLOv8n算法则出现了漏检的情况;在组别5中,钢轨斜裂纹在钢轨光带上呈现裂纹又细又密的情况,导致与钢轨光带差异性较小,YOLOv8n算法出现了漏检的情况,而本文所提出的改进算法还是检测到了该伤损。
上述5组对比结果表明,本文所提出的改进YOLOv8n算法在面对复杂场景和相似伤损时,相较于原始YOLOv8n算法对钢轨表明伤损做出了更加有效的检测,表现出更高的准确性和鲁棒性,具有更高的实际应用价值。
Figure 12. Algorithm actual detection performance comparison
图12. 算法实际检测性能对比图
4. 总结
为解决钢轨表面伤损存在的大尺度为主、尺度变化较大对检测精度的影响,本文在YOLOv8n算法的基础上进行针对性改动,提高检测精度,控制计算成本,并通过自建钢轨表面伤损数据集进行训练、验证和测试。首先,结合Triplet Attention设计C2f-TA模块增大特征图感受野,减少大尺度伤损对检测精度的影响;其次,利用连接模块TFE和SDI设计多尺度特征融合Neck网络结构,提高特征图信息的全面性,解决尺度变化较大对检测精度的影响;最后,设计由SSFF模块和CPAM模块组成的小尺度目标检测分支,进一步提高算法对小目标的检测精度。实验结果表明,改进后的YOLOv8n算法对钢轨表面伤损的检测精度更高,算法的计算成本提升少,兼顾了检测精度和计算成本。未来研究中将围绕提升细小伤损和裂纹检测精度的难题对算法进行优化,提升对是否存在伤损的判断的精确性而不仅仅局限于是否存在某种较大尺度伤损类型,以提高算法的实用价值。
基金项目
山东省重点研发计划项目(Grant No.2019JZZY010428)。