朱梦瑞,牛宏侠
(1.甘肃省高原交通信息及控制重点实验室,兰州 730070;2.兰州交通大学a.光电技术与智能控制教育部重点实验室,b.自动化与电气工程学院,兰州 730070)
铁路是国民经济生产的大动脉,承担了全国60%的旅客周转量和70%的货物周转量.交通运输部曾表示[1]:到2025 年,全国铁路营业总里程将达到17 万km 左右,其中 高铁达5 万km 左 右,基本 覆盖城区人口20 万以上的城市.因此保证列车安全、可靠、快速的运行变得尤为重要.但我国大部分铁路的运行场景是相对开放的,常有行人、掉落的货物、自然灾害导致的危险等可能越过铁路防护限界,威胁列车的行驶安全.因此对铁路限界周围异物进行实时检测逐渐成为研究热点.
铁轨异物检测主要分为接触式和非接触式两类.其中接触式检测法主要有电网检测法、光纤光栅检测法等.非接触式检测法主要包括雷达检测法、红外线屏障法、超声波检测法、视频图像检测法等[2].随着铁轨异物检测要求的提高,以视频图像检测为主的非接触式异物检测,尤其是基于深度学习的图像处理方法[3]逐渐成为研究重点.李沛奇等[4]提出把单目视觉技术应用到铁轨异物侵限检测中,改进蚁群算法使检测的轨道线更加完整.但基于机器视觉方法的检测结果容易被外界环境变化影响,因此近几年卷积神经网络[5](Convolutional Natural Network,CNN)在铁轨异物入侵的检测中应用越来越多.王洋等[6]提出改进卷积神经网络的网络结构,通过预先训练卷积核提高准确率,简化网络结构为全连接提升速度,使卷积神经网络更适合铁路异物检测场景.李晓蕊[7]提出了基于深度信念网络和迁移学习的检测算法框架,提高检测速度和泛化能力.李晖晖等[8]提出将图像进行4 个重叠区域的分割,用SSD(Single Shot MultiBox Dector)检测划分的图像,对结果进行整合输出,提升了对小异物的检测能力.徐岩等[9]提出基于快速卷积神经网 络(Faster Region-based Convolutional Natural Network,Faster R-CNN)的铁轨异物侵限检测算法,在其中引入迁移学习,提高检测异物的精度,但模型较为复杂,检测速度不理想.于晓英等[10]提出改进原有YOLO(You Only Look Once)算法的模型结构,通过分组预训练提升异物检测的速度.
铁路运行速度较快,制动距离较大,行车间隔较小,因此对异物检测的实时性也有更高的需求.本文将实时性较好的YOLOv3 算法[11]应用到铁轨异物的识别中,同时对算法模型进行改进,解决其异物识别精度不理想和异物误检漏检的问题.首先,通过对图像预处理用透视变换[12]确定轨道位置后用逆透视拟合轨道[13].为了充分保障行车安全,结合标准轨距铁路限界(GB 146.2—2020)[14]的规定和现场实际,将左右轨道线分别向外扩张1.6 m 的危险防护区域;其次,提出一种改进YOLOv3 算法的铁轨异物入侵识别模型,以提升识别的准确率和实时性,提高小目标检测精度.改进主要针对两个方面:1)针对原有的K-means 算法选取先验框时存在的局部最优而非全局最优的问题,采用K-means++聚类算法[15]使得生成的锚框和特征图层更加匹配.降低尺寸小于32×32 像素的铁轨异物漏检的概率,有效提升识别异物的准确率;2)针对原有模型特征提取参数过多,存在部分冗余以及特征提取具有时滞性的问题,引入MobileNetv2 作为网络的特征提取器.实现模型轻量化,提高整个模型识别的效率和实时性.
本文的铁轨异物识别算法主要包括轨道位置定位和入侵异物识别分类两部分.首先对图像进行预处理,划分感兴趣区域,透视变换检测轨道,然后扩展1.6 m 的危险区域[14],将轨道区域、危险区域与原图进行拟合,得到合适的轨道位置和危险区域范围.最后利用改进后的YOLOv3算法对划分轨道区域、危险区域后的图像进行异物识别.识别的流程如图1所示.
在对含轨道的图像进行边缘检测时,首先借助python 中的OpenCV 工具包将需要处理的三通道RGB 图转换为单通道的灰度化图像[12],如图2(a)所示,再利用Canny 边缘检测对图像进行边缘检测,如图2(b)所示.
图1 铁轨异物入侵识别流程图Fig.1 Flow chart of foreign body intrusion detection on railway tracks
图2 图像预处理Fig.2 Image preprocessing
铁路场景的图像中包含了大量不相关的直线目标会影响轨道区域的检测,因此在图像中需先划分出感兴趣区域(Region of Interest,ROI),如图3(a)所示,其中梯形部分是图像的ROI 区域;利用OpenCV 中的函数进行透视变换,采用滑动窗口法检测到轨道的边缘像素点,最小二乘法[11]对像素点拟合得到轨道线,如图3(b)所示.
图3 检测轨道Fig.3 Detection track
采用OpenCV 函数逆透视变换到之前的视图上并高亮显示.根据铁路建筑限界规定将左右轨道各向外扩展1.6 m 的铁路轨道异物检测区域,满足限界需要的同时也能充分保障行车安全.检测效果如图4 所示,其中绿色区域为铁路钢轨的位置,蓝色区域为扩展后的异物检测区域.轨道区域检测中弯轨和直轨均有较好的检测结果.
图4 轨道位置和异物检测区域显示Fig.4 Display of track position and foreign object detection area
1.2.1 YOLOv3 算法结构
YOLOv3 是典型的one-stage 算法,使用CNN[16]作为特征提取器,直接进行预测框回归和分类预测,YOLOv3 和R-CNN 系 列 算 法、SSD[17]算 法 相 比 有较好的实时性,其模型结构中没有池化层和全连接层,网络结构如图5 所示.
YOLOv3 采用Darknet-53 作为骨干网络,引入特征金字塔网络中的多尺度融合,在13×13、26×26、52×52 三个尺度下进行结果预测,有效改善了对不同大小异物的识别效果.将高层特征上采样堆叠到低层次特征上,增强低层次特征的语义信息,提升对异物的分类定位能力[18].同时为了提高识别的准确性,引入Faster R-CNN 先验框,在3 个尺度下预设先验框,由K-means 算法生成9 种不同尺寸的先验框.使用与标注框有最大交并比(Intersection over Union,IOU)值的先验框进行结果预测,再采用非极大值抑制(Non-Maximum Suppression,NMS)筛选这些预测框,输出置信度最大的预测框.另外,YOLOv3 不再使用softmax 预测对象分类,其采用logistic 的输出进行预测,可支持多标签对象.
1.2.2 YOLOv3 损失函数
铁路异物识别问题既要确定异物位置,也要得到类别信息.以Faster R-CNN 为代表的two-stage算法将损失函数分为对物体位置的回归和物体类别的分类两部分,导致这类算法无法实现端到端检测,训练难度也较大.而YOLOv3 算法用一个损失函数解决了位置和分类两个问题,实现了端到端检测,因此算法检测速度也较快.
图5 YOLOv3 网络结构Fig.5 YOLOv3 network structure
YOLOv3 损失函数由目标定位偏移损失函数、目标置信度损失函数、目标分类损失函数三部分组成,其中置信度损失函数又分为有物体的置信度预测和没有物体的置信度预测两部分.YOLOv3 损失函数函数的计算公式如下
式中:λcoord为协调不同大小矩形框对误差函数贡献的权重系数;λnoobj为不含目标时的置信惩罚系数;(xi,yi)为预测框的中心坐标值;Iobjij表示第i个网格的第j个锚框是否负责这个目标物体,obj指的是目标物体,如果负责,否则为0.wi和hi为预测框的宽和高;Ci为预测目标的置信度;pi为物体类别的预测概率.经过多次调参训练仿真结果表明,当λcoord取值为5,λnoobj取值为0.5 时,本文模型的识别效果最优.
传统的YOLOv3 算法采用Darknet-53 作为特征提取主干网络,虽然可以提取有效的特征信息,但其网络深度高达106 层,且运用大量堆叠的残差结构,导致参数量巨大,异物识别速度不佳.因此本文使用运算复杂度较低,结构简单的轻量级网络MobileNetv2 作为YOLOv3 的特征提取网络,可以减少一定的参数冗余,提升算法实时性.
MobileNetv1 网络采用深度可分离卷积(如图6(a)所示)减少计算量,深度可分离卷积将传统卷积(如图6(b)所示)分为逐通道卷积(Depthwise,DW)和逐点卷积(Ponitwise,PW)两部分,同时将ReLU6 作为激活函数,相比传统卷积操作,其参数量和运算成本较低.假定输入DF×DF×M大小的特征图,输出特征图大小为N×DF×DF,其中DF是特征图的宽度和高度,假定两者是相同的;M和N是通道数.对于标准的卷积DK×DK,传统的卷积操作的计算量为:A=DK×DK×M×N×DF×DF,而深度卷积神经网络中逐通道卷积DW 的计算量为:DK×DK×M×DF×DF,逐点卷积PW 的计算量为:M×N×DF×DF,因此深度卷积神经网络的总计算量为:B=DK×DK×M×DF×DF+N×M×DF×DF,对比两者计算量如下
由式(2)可知,采用深度卷积神经网络极大地减少了参数量.
图6 传统卷积、MobileNetv1、MobileNetv2 微结构对比Fig.6 Microstructure comparison of traditional convolution,MobileNetv1 and MobileNetv2
MobileNetv2(如图6(c)所 示)和MobileNetv1一样仍采用DW 和PW 组成的深度卷积来提取特征,但由于DW 卷积没有改变通道数的能力,如果上一层给的通道数较少,DW 就只能在低维空间提取特征,因此MobileNetv2 在DW 卷积层前再加一个PW 卷积,给每一层DW 配一个PW 用来升维.
同时MobileNetv2 去掉了第2 个PW 激活函数,保留了特征多样性,增强网络的表达能力.Mobile-Netv2 网络如表1 所示.其中t为扩张倍数,c为通道数,n为重复次数,s为步长,k′为一通道数值.
表1 MobileNetv2 网络Tab.1 MobileNetv2 network
YOLOv3 中利用K-means 聚类算法生成目标的先验框,随机选择初始聚类中心.其聚类结果受离群数据的影响,是局部最优但并非全局最优,导致小尺寸异物漏检和识别准确率下降.而铁路场景中,行人距离摄像头距离稍远,就会成为小目标.因此本文采用随机性较低的K-means++算法优化数据集先验框选取部分.K-means++算法以初始聚类中心之间的相互距离尽可能的远作为聚类平均重叠度的度量,使得聚类结果不受随机选择的初始聚类中心的影响,从而生成尺寸更适合的锚框,降低小尺寸铁路异物的漏检概率.
K-means++聚类算法的步骤为
1)从输入的有m个样本点的数据集中随机选择一个点作为第一个聚类中心o1;
2)计算每个点和初始聚类中心o1的距离,并将样本xn到聚类中心oj之间的距离记作d=(xn,oj);
3)从样本中随机选取一个样本点作为下一个聚类中心的概率为
计算每一个样本点到与其最近的聚类中心的距离D(x);
4)选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选为聚类中心的概率较大,即遵循轮盘法则;
5)重复3)、4)步骤直到选择了K个聚类中心;
6)利用这K个初始聚类中心运行标准的Kmeans 聚类.
在使用K-means++聚类算法确定锚框参数的过程中,为减少由于先验框自身大小带来的欧式距离误差,以样本框和先验框之间的交并比代替原来算法中的欧式距离作为目标函数,目标函数值越小则聚类效果越好,目标函数D的计算公式为
式中:IOUboxcen表示样本框和聚类中心的交并比;box为样本标签的目标框;cen为聚类中心;n为样本数;k为类别数.
针对本文的铁轨异物相关数据集重新聚类出不同尺度下的锚框值.特征图尺度越小,对应锚框的面积越大,因此按照面积大小分配不同特征图尺度下的先验框尺寸,如表2 所示.
表2 不同尺度下的先验框尺寸Tab.2 A priori box size at different scales
本文在Tensorflow-gpu1.13.2 版本的深度学习框架下采用Mobilnetv2-YOLOv3 实现铁轨异物识别.电脑配置的CPU 型号为Intel i7-8700K,GPU 型号为NVIDIA GeForceMX150. 操作系统为Windows10,使 用 Python3.6 编 译 器,同 时 配 置CUDA10.0,Cudnn7.5.1 进行GPU 加速处理.
本文数据集包含2 000 张图片,其中1 600 张作为训练集,400 张作为验证集.实验数据集在VOC 数据集的基础上,增加铁路场景下的相关图像.主要的图像数据包括1 000 张VOC2007 和VOC2012 中其他场景下的各类异物图像.另外,按照VOC2007 格式标注了1 000 张铁路场景下的各类异物图像.本文数据集中标注的铁路异物主要包括猫、狗、马、牛、羊、鸟、人、汽车、自行车、摩托车、瓶子、树木.为了防止误检和行车安全数据集中额外标注了火车,但火车不是异物(部分图像如图7 所示).
图7 铁路场景下异物图像Fig.7 Image of foreign objects in railway scene
在训练模型阶段,批尺寸(batch_size)设置为8,IOU 阈值设置为0.05.将上面标注的铁轨异物数据集按照8∶2 的比例进行训练集和验证集的划分,利用本文改进的MobileNetv2-YOLOv3 训练铁轨异物数据集获得异物识别模型.最后对已经进行过轨道区域和危险区域标定的相关图像进行铁轨异物识别.
3.3.1 评价指标
本文选取平均准确率mAP[18]和帧速率FPS 作为模型检测结果的评价指标对本文算法进行评价.其中mAP 的提升体现了改进后的算法对准确率的提高,帧速率FPS 的上升体现了算法实时性的提高.AP 为P-R 曲线与横轴包围的面积,mAP 为所有类的AP 值的平均值,用以下计算公式可得
式中:TP为正样本被正确分类的正样本;FP为被错误分类的负样本;FN为被错误分类的正样本;P()表示为每一级对应的最大P值;Δr(k)表示级别数从k-1 变化到k时,R值变化的差值;n表示铁轨异物的类别.
3.3.2 改进K-means 聚类算法对模型的影响
改进K-means 聚类算法前后的铁路各类异物的AP 值如图8 所示.
由式(8)计算可得,改进前mAP 为79.5%.用K-means++聚类算法进行锚框尺寸选择之后,mAP提升到86.65%.
改进前后的识别对比如图9 所示.图9 中的数字表示物体类别的置信度.通过对比结果可知,改进后,尺寸为12×32 像素的目标未发生漏检,且置信度有所提高.其中两列火车的置信度由图9(a)中的0.80 和0.75 提升到图9(b)中的0.98 和0.94,和火车距离较近光线较暗不易发现的小目标仍能准确检测出来.因此,利用K-means++聚类算法所得的先验框尺寸更适合铁轨异物的数据集,它降低了由于异物位置原因和尺寸导致的漏检概率,同时提升了物体类别识别的置信度.
图8 K-means++聚类算法改进前后的AP 对比Fig.8 AP comparison before and after the improvement of K-means++ clustering algorithm
图9 改进效果对比Fig.9 Comparison of improving effects
3.3.3 骨干网络优化结果
骨干网络优化后的异物识别AP 值如图10 所示.由式(8)计算可得,改进后的以MobileNetv2 为特征提取网络识别异物的mAP 为89.23%.与以Darknet53 为特征提取网络及采用K-means++聚类算法识别异物的mAP 值86.65% 相比,提高了2.58%,有效地提高了异物的识别精度.
图10 骨干网络优化后的AP 图Fig.10 AP diagram after backbone network optimization
同时由于MobileNetv2 的深度可分离卷积特性,使得参数量减少,速度变快,帧速率有明显提高,由改进前的20 f·s-1提高到54.3 f·s-1,这表明调整骨干网络对模型识别异物的准确率有一定提高,采用轻量化的MobileNetv2 特征提取网络对铁轨异物识别的实时性有显著的提升.
3.3.4 实验结果
本文改进后的MobileNetv2-YOLOv3 算法铁路轨道异物识别结果如图11 所示.图11(a)为在实际的铁路场景下,单个异物的识别结果;图11(b)为实际铁路场景下,多个异物的识别结果(置信度均大于0.6);图11(c)为数据集中异物颜色与轨道颜色背景相似时的识别结果(置信度为0.67);图11(d)为黄沙极端天气下异物的识别结果,在此情况下仍然可以将异物准确检测出来(置信度为1).
图11 铁轨异物识别结果Fig.11 Detection results of foreign objects in railway tracks
3.3.5 本文算法与YOLOv3 的性能对比
针对YOLOv3 模型中的特征提取网络层数过多、算法先验框尺寸与特征图层不够契合等缺点.本文算法提出以MobileNetv2 为特征提取网络,采用K-means++聚类得出算法先验框尺寸.用本文的铁轨异物图像数据集对改进前后的模型进行训练,得到500 次迭代后的模型准确率和损失值,如图12 所示.
图12 loss 和mAP 曲 线Fig.12 Loss and mAP curves
从图12(a)中可知,本文改进后的YOLOv3 的损失值在100 轮的时候趋于稳定,趋于0.5 左右;而原YOLOv3 在大约150 轮的时候趋于稳定,趋于0.8左右.图12(b)可知,本文改进的YOLOv3 算法在50轮左右,mAP 值已经上升到0.8 左右,最终稳定在0.89 左 右,而 原YOLOv3 在100 轮 左 右,mAP 值 上升到0.7 左右,最终稳定在0.79 左右.因此相较于原YOLOv3 算法,本文改进的算法在损失函数收敛速度和检测精度上均有显著提升.
3.3.6 本文算法与其他模型的对比
本文算法与Faster R-CNN、SSD、文献[8]、文献[9]等几种主流卷积神经网络模型在本文3.1 所述的同一实验平台和同一铁轨异物数据集上进行识别效果对比,结果如表3 所示.
表3 本文算法与其他模型对比结果Tab.3 Comparison of the proposed model with other models
由表3 对比可知,本文算法的mAP 略低于Faster R-CNN 算 法 和 文 献[8]的mAP,但 由 于Faster-RCNN 检测流程是先用区域建议网络RPN生成2 000 个建议窗口,再用卷积神经网络对候选区域进行分类,导致Faster R-CNN 算法和文献[8]的检测速度不理想.由于SSD 算法金字塔特征层次的网络特性,其对异物检测的准确度不高,检测速度表现一般.本文算法的检测速度和准确度均比文献[9]更理想,对一帧的处理时间也由传统YOLOv3算法的0.053 s 降至0.011 s.综上,本文算法在保证铁路异物识别准确性的前提下,识别速度提升明显,较其他方法有一定的优势.
针对铁路异物识别,构建了一个改进YOLOv3算法的铁路异物识别模型,通过铁路运行现场的实地调研,获取铁路异物图像数据集,对所构建模型进行训练和测试.实验结果表明:
1)逆透视变换确定轨道位置后,根据铁路安全限界的规定将其扩张一定距离作为危险区域,为后续异物检测提供基础,减少误报警情况.
2)通过K-means++聚类算法,生成更适合本文数据集的先验框尺寸,提高识别精度,降低错检和漏检的概率,异物识别精度达到89.23%.
3)采用MobileNetv2 作为特征提取网络,对模型实现轻量化改进,有效降低了参数量过多对模型识别实时性和准确性的影响.最终,模型的帧速率由20 f·s-1提升到54.3 f·s-1,更适合铁路异物检测的场景.