基于YOLOv8模型和LSD算法的列车接触网腕臂识别
2024-03-11奚笑冬顾正隆
奚笑冬,顾正隆
(上海地铁维护保障有限公司,上海 200025)
接触网系统作为轨道交通系统中最重要的子系统之一,其工作环境复杂恶劣,容易发生多种类型的故障[1]。作为接触网系统中重要部件之一,接触网腕臂用以支撑接触网各悬挂部件,承载着绝缘子、接触线等元器件,其运行状态直接影响其他接触网元器件能否正常工作[2]。对接触网腕臂进行检测,可以提前识别接触网系统相关故障及风险,避免列车运行事故的发生,具有重要研究意义和应用价值。
目前,对于接触网腕臂的检测仍主要通过人工目视或利用巡检小车等方式进行巡检[3]。上述方法虽简单易行但效率低下,检测结果会受作业人员的经验、专业素质等主观影响。此外,由于地铁车辆运行空间内环境较为恶劣,上述巡检方式可能危及作业人员的人身安全[4]。
近年来,基于机器视觉的目标检测方法由于具有部署简单、检测效率高等优势,逐渐在目标检测领域得到广泛应用[5]。目标回归检测方法大多是以深度学习网络模型为基础展开,大致可以分为两大类[6]:一种是以Faster R-CNN[7]为代表的两阶段检测模型,其原理是先获取侯选框再进行分类,精度很高,但存在着速度慢的缺点[8];另一种则是以YOLO(you only look once)为代表的一阶段检测模型,因其具有较高的检测速度、良好的检测精度和兼容多种硬件平台等优点而被广泛应用于生产生活中[9]。文献[10]提出了一种基于图像锐化和Hough变换对接触网横腕臂进行识别检测的算法,其识别精度和准确度相对较高。
在对接触网腕臂进行图像采集的过程中,由于图像采集设备一般放置在高速行驶的接触网检测车顶部,列车和接触网腕臂存在着快速的相对位移,在采集图像过程中,相机曝光时会发生腕臂位置的相对变化,造成采集到的图像容易产生运动模糊[10]。因此,需要对原始采集图像进行图像增强处理。
基于上述分析,本文提出了一种基于YOLOv8目标检测模型[11]和直线段识别(line segment detector,LSD)算法[12]的列车接触网腕臂视觉检测系统,可准确识别和提取接触网腕臂信息,提升对腕臂的识别准确度和识别精度。
1 算法总体框架
为识别复杂图像背景中列车接触网腕臂的正反架,首先采用机器视觉中YOLOv8模型对图像进行粗提取,准确分割出腕臂区域;然后对图像进行HIS(hue-intensity-saturation)变换、滤波和补偿,进一步增强图像特征,滤除图像噪声;最后针对腕臂在空间中的镂空特征,通过LSD算法,对腕臂直线段进行提取。具体算法流程如图1所示。
图1 基于YOLOv8与LSD算法流程图
YOLOv8的网络结构[11]如图2所示,主要包括Backbone骨干网络、Neck颈部网络两部分。Backbone骨干网络主要用于提取图片中的信息,并提供给Neck颈部网络,其由Conv模块、C2f模块和SPPF模块组成;Neck颈部网络主要进行特征融合,对从骨干网络提取到的特征进行处理。
图2 YOLOv8网络结构
2 接触网腕臂图像增强预处理流程
图像增强预处理是指对腕臂轮廓进行突出强化,这一过程包含对采集到的腕臂图像中的线条进行分辨识别,即线条的细节表现程度;判断腕臂线条的边缘清晰程度,即图像边缘过渡区域的宽窄。为将图像灰度值产生突变的部位凸显出来,首先,对检测图像进行滤波变换处理以提高图像的对比度,然后利用二值化处理方法进行图像边缘增强处理。
本文采取的图像预处理流程如下:
1) 根据第1节中基于YOLOv8模型得到的腕臂图像,提取图像的R(红色)、G(绿色)、B(蓝色)3种分量,并将其转换到HSI色彩空间,获得H(色调)、I(亮度)以及S(饱和度)3种分量;
2) 对饱和度分量S,使用中值滤波进行处理;
3) 对亮度分量I,使用双边滤波来进行增强;
4) 对整副图像的亮度进行补偿;
5) 将饱和度分量S、亮度分量I以及原色调分量H这3个分量进行组合;
6) 对组合后的图像进行二值化处理,将具有多个灰度级的图像转换为灰度值仅为0或1的图像。
2.1 HIS颜色空间
HIS是由Munseu提出的一种颜色模型[13],从人的视觉系统出发,直接使用色调、饱和度和亮度来描述颜色,可以用一个圆锥空间模型描述,如图3所示。
图3 HIS颜色空间模型
2.2 图像滤波及补偿
列车高速相机在拍摄时采集到的噪声中主要包含椒盐噪声和零均值高斯噪声,噪声易使图像出现模糊、细节丢失及灰度值的失真等情况。为降低噪声对图像的影响,本文针对2.1节中处理后的HIS腕臂图像,对其饱和度分量S使用中值滤波进行处理,对其亮度分量I使用双边滤波进行增强。
2.2.1中值滤波
中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,其运算简单、速度快,滤除噪声的同时还能很好地保留图像的细节信息[14]。
对于二维图像信号Xij,定义滤波窗口的长度为L=2N+1,N∈,其中N为在输入信号边界填充的信号个数,然后在信号序列Xi+r,j+s中进行窗口滑动,其中r和s为窗口维度。接着对窗口中的Xi+r,j+s进行排序操作,位于(i,j)处的序列样本值即为中值滤波的输出Yij,用公式表示为:
Yij=med{Xi+r,j+s}
(1)
式中:med{·}表示取序列的中值。
2.2.2双边滤波
双边滤波[15]是一种非线性的滤波方法,可对图像的空间邻近度和像素值相似度进行折中处理,同时考虑空域信息和灰度相似性,并对图像进行边缘保存,具有简单、非迭代、局部的特点。
假设原始图像在点(x,y)的像素值为U(x,y),双边滤波后像素值对应为V(x,y),则有:
(2)
式中:E(x,y)表示以点(x,y)为中心点、面积为(2N+1)2的正方形范围,N∈;k(i,j)为加权系数。
3 LSD算法
常用的直线段检测算法有Hough直线检测算法和LSD算法等。相较于Hough算法,LSD算法具有识别准确、误差可控、运行速度快、不需要调节参数等诸多优点。本文使用LSD算法进行接触网腕臂直线段识别。
LSD算法是一种直线段检测方法[12],其基本思想是检测图像中梯度变化较大的像素点集,以达到在线性时间(linear-time)内获取亚像素精度的线段检测结果。LSD算法基本流程如下:
1) 高斯降采样,将图像长、宽进行缩放,再进行高斯滤波;
2) 梯度计算,点(x,y)的灰度值为f(x,y),灰度图像x方向的梯度gx(x,y)和y方向的梯度gy(x,y)可由下式计算:
gx(x,y)=[f(x+1,y)+f(x+1,y+1)-f(x,y)-f(x,y+1)]/2
(3)
gy(x,y)=[f(x,y+1)+f(x+1,y+1)-f(x,y)-f(x+1,y)]/2
(4)
3)区域生长,合并基准线场方向近似一致的像素;
4) 更新区域的倾斜度;
5) 直线段确定。
4 接触网腕臂检测实验
本文采集上海地铁8号线实际运营某段监控视频,并对该视频进行了分帧截取,共500张弓网图,使用Open CV完成数据采集、数据标注等数据集前期准备工作。以下实验中,数据集的划分比例和方式相同,首先将制作的数据集(.xml和.jpg)按照固定的比例进行划分,其中训练集占总数据集的80%,测试集占总数据集的20%,两者比例为4∶1,验证检测算法的有效性。本文中所有实验均是基于python+Open CV2开展的。
4.1 基于YOLOv8的接触网腕臂识别训练测试实验
在训练集中对前文所述YOLOv8模型进行模型训练后,在测试集中进行算法检测,部分检测结果如图4所示。从图4可以看出,YOLOv8模型可以对接触网腕臂正反架进行精准检测,达到了预期设计目的。
图4 训练后的腕臂正反架检测图
4.2 基于图像滤波与阈值分割
为进一步提取接触网腕臂信息,针对4.1节基于YOLOv8模型识别出的接触网正反架图片进行图像增强,原始图像及增强后的HIS各分量图像如图5所示。
图5 经过HIS变换后的各分量图像
去噪后,对图像进行二值化灰度处理,然后选择S+I-H作为算子进行阈值分割,如图6所示。
图6 阈值分割后的图像
4.3 基于LSD算法的接触网腕臂直线段检测实验
为了测试文中所述方法的性能,从训练样本中选取部分图像来评估算法的实际效果。图7显示了LSD对接触网腕臂直线段的识别结果。
图7 LSD算法处理后的图像
类似地,采用相同算法流程,对接触网反架腕臂进行处理,结果如图8所示。
图8 列车接触网腕臂反架识别
由图7及图8可知,基于YOLOv8模型先对列车接触网腕臂位置进行检测,然后对腕臂的位置图像进行增强处理,最后基于LSD算法对腕臂直线段信息进行提取的流程可以准确提取接触网腕臂直线段信息。由于相机安装在高速行驶的列车上,在拍摄过程中,相机的倾斜和光线的反射以及抖动等问题难以完全消除,依然存在部分图像模糊等问题,导致图8以及图9中识别到的线段轮廓和实际腕臂形状存在一定误差,对接触网腕臂的识别准确度造成了一些影响。
5 结束语
为实现复杂图像背景中列车腕臂正反架识别,本文首先采用机器视觉中YOLOv8模型进行粗提取,准确分割出腕臂区域;其次对图像进行HIS变换、滤波和补偿,进一步增强了图像特征;针对腕臂在空间中的镂空特征,通过LSD算法,对腕臂直线段信息进行了检测提取。通过实验可以看出:针对小样本数据集, YOLOv8模型依旧拥有很高的识别准确度;同时借助滤波变换等图像增强处理方法以及LSD算法,获得了更加准确的接触网腕臂直线段轮廓。实际应用中,相机抖动以及相机成像质量等因素都会对接触网腕臂的识别准确度造成不利影响,将是本文后续工作重点研究的方向。