曾祥银,郑伯川,刘 丹
(西华师范大学计算机学院,四川南充 637002)
由于中国社会经济发展的需要,国家大力发展铁路运输,因此中国铁路事业取得了举世瞩目的成就,为中国经济的发展提供了强劲动力[1]。随着铁路网络覆盖范围的不断增加以及列车运行速度的不断提高,使得铁路运输已成为国民出行和物流运输的基本交通工具之一,安全性也越来越受到人们的重视[2]。
异物侵入铁路安全限界(异物侵限)严重影响列车安全运行,如山体滑坡堆积的沙土和石块,非法入侵的行人、动物和车辆等对列车的安全构成巨大威胁。异物侵限不仅会中断铁路交通正常运行,破坏铁路轨道和列车,还可能会危害到人民生命和财产安全,给国家和人民带来严重损失,因此对异物侵限事件检测是保障列车安全运行的重要内容。
随着计算机视觉和神经网络技术的发展,智能视频监测在铁路安全监测中的应用越来越广泛,基于视频图像的铁路轨道异物侵限检测,首先需要从图像中划定铁路限界,铁路限界是指为保证运输安全而制定的建筑物、设备与机车车辆相互间在线路上不能逾越的轮廓尺寸线,因此快速准确地检测出铁路轨道线是异物侵限检测的第一个关键步骤。只有正确检测出了轨道线才能正确划定铁路限界,才能进行异物侵限检测。
目前,对铁路轨道线检测的研究相对较少,现有研究文献主要采用传统的基于图像特征的检测方法和基于模型匹配的检测方法。基于图像特征的检测方法主要利用轨道区域和背景区域在轮廓、方向、灰度、纹理等方面的特征差异来分割轨道线[3-4],其中文献[4]中的轨道线检测准确率为77%,检测速度为0.30 frame/s。文献[5]中应用图像处理与识别技术提出基于主方向迭代校正的铁轨检测算法,该算法首先基于梯度图像的霍夫(Hough)变换,估计出轨道的主方向,然后结合判定准则进行轨道检测与定位,它的轨道线检测准确率为90%,检测速度为1.36 frame/s。针对道砟、轨枕等噪声对传统的边缘检测算法影响较大,文献[6]中提出一种基于灰度形态学的轨道边缘检测算法,实现轨道边缘的自适应检测,并利用多约束霍夫变换对检测结果进行优化提高了检测精度。基于模型匹配的检测方法建立局部线性模型或建立直线、抛物线和曲线等全局线性模型来检测轨道线[7]。文献[8]中结合轨道在图像中的特征和拉东(Radon)变换思想,基于布雷森汉姆直线算法(Bresenham’s line algorithm)提出了铁路轨道直线检测方法。直线模型只能拟合出铁轨直线的部分,不能刻画出轨道弯轨部分,文献[9]中提出了一种基于直线和双曲线相结合的分段曲线模型来检测轨道线,进一步提高了对轨道线描述的准确性,它的轨道线检测准确率为89%,检测速度为17.76 frame/s。复杂的线性模型虽能更好地拟合出轨道线边界,但当轨道周围出现较多噪声时,拟合的轨道线可能会出现较大的波动。由于铁路轨道线周围区域包含大量复杂的背景信息,有轨道扣件、轨枕、地面应答器和道砟等设施设备,还有道岔、信号灯、光照和阴影等变化影响,因此轨道线检测具有较大的难度,在精确度和鲁棒性方面还有很大的提升空间。
与铁路轨道线检测相似的研究是车道线检测研究,铁路轨道线检测可以借鉴车道线检测的思想进行研究。现有的车道线检测主要分为两大类。一类是通过传统的数字图像处理方法进行检测,主要包括模型匹配的检测方法[10]和特征提取的检测方法[11]。基于模型匹配的方法,使用数学中的线性模型来拟合道路图像中的车道线。如文献[12]中在近景中使用线性抛物线模型,在远景中使用二次函数曲线来拟合车道线。文献[13]中使用带有附加非线性的双曲线模型来匹配曲率连续变化的道路。文献[14]中基于随机采样一致算法和改进的River Flow算法,提出了一种曲线车道线检测方法,该方法使用近视野中检测到的直线或最后一帧的曲线结果来指导远视野中的特征点搜索,在虚线车道和车辆遮挡情况下提高了车道线检测的鲁棒性能。基于特征的方法,主要是利用车道线的颜色、纹理、亮度等与背景差异较大的车道线特征信息识别检测图像中的车道线[15]。文献[16-17]中主要利用在灰度图像中车道线像素的灰度通常要大于非车道线像素的灰度的特点来设置合适的阈值寻找车道线。文献[18]中使用贝叶斯分类来确定缩小图像中每个像素属于路面的概率,接着和理想道路面的似然度图像进行匹配,找到最佳的道路面候选区域,最后利用霍夫变换检测车道线。文献[19]中提出了一种基于形态学的车道线检测算法,该算法通过对原始图像进行滤波,然后利用具有车道模型特征的结构元素对处理后的图像进行特定目标提取,最后进行霍夫变换标记车道线。另一类是通过神经网络的方式进行检测,文献[20]中提出SCNN(Spatial CNN)模型,通过将常规的逐层卷积(layer-by-layer convolutions)换成了逐条卷积(slice-by-slice convolutions),使得信息可以跨行和跨列传递,更好地检测到车道线。文献[21]中将车道检测问题看作一个实例分割问题,设计了两个网络分支,车道分割分支负责区分车道和背景,而车道嵌入分支则把分段的车道像素分解成不同的车道线实例。文献[22]中将生成对抗网络(Generative Adversarial Network,GAN)引入车道线检测,增加分割网络中像素之间的关联,提高了检测精度。文献[23]中提出了Line-CNN网络模型,使用目标检测方法检测车道线。由于车道线的区域远小于目标检测中的物体区域,该模型使用候选线(line proposal)来替换传统目标检测的候选区域(region proposal)。文献[24]中在候选线的基础上引入注意力机制,提出了一个速度与性能兼备的车道线检测模型。更多的使用神经网络方式用于车道线检测请参阅文献[25-28]。由于神经网络可以自动从训练数据中学习潜在特征,并把学习结果向同类型未知数据泛化,因此基于神经网络方式的车道线检测准确率远高于传统检测方式。
基于神经网络的车道线检测方法具有检测准的优点,但多数神经网络模型层级深、结构复杂导致计算量特别大,对软硬件条件要求高,实用性不强。本文在借鉴已有的车道线和铁路轨道线检测方法的基础上,结合铁路轨道线的特征,提出了一种简单高效的基于深度卷积神经网络的铁路轨道线线检测方法,该方法能快速、准确地检测出轨道线。本文的主要工作包括:
1)使用网格分割法缩小标注图像的尺寸,用一个像素点代替网格局部区域的轨道线信息。基于缩小的轨道线标注图,提出一种新的用于轨道线分割检测的深度卷积神经网络。与一般分割网络输出整张分割图像不同,该网络输出的分割图像与缩小后的轨道线标注图大小相同,因此该网络具有结构简单、参数量少、推理速度快等优点。
2)针对检测出的轨道线,提出了一种基于几何信息的左右轨道线点聚类方法,该方法能够正确区分出左右轨道线点。
本文数据集来源于真实铁路轨道上的录制视频,通过视频处理软件对视频进行每秒截取一帧的方式,总共获取到2 996张原始图像,部分图像如图1所示。
图1 铁路轨道图像Fig.1 Railway track images
由于采集视频的设备不具备防抖功能,导致截取的部分图像存在模糊的现象,需要对模糊图像进行数据清理,最终删除1 976张无法标注轨道线的模糊图像,剩下1 020张较为清晰的图像。截取的图像大小为1 920像素×1 080像素。由于铁路轨道区域集中在图像的中下区域,为了保留轨道区域的情况下提高模型性能,对原始图像进行裁剪。对每张原始图像裁剪左上角坐标点(460,80)和图像右下角坐标点(1 460,1 080)所形成的矩形区域作为最终的图像,裁剪所得的图像大小为1000像素×1000像素。
铁路轨道线检测相关的研究相对较少,因此参考车道线检测相关研究对铁路轨道线进行标注。具体方式是使用专业车道线数据集标注软件labelme,手工对每张图像上的轨道线进行标注,尽可能标注更多点来体现铁路轨道线本身的直线和弧线形状,然后将这些标注点坐标保存到标签文件中。原图标注效果如图2所示。
图2 标注图像Fig.2 Labeled images
本文数据集的原始标注图像是二值图像,将原始标注图像沿水平方向和垂直方向分别进行50等分,划分成50×50个网格。每一个网格代表20像素×20像素信息,转换后的标注图像Thw(1≤h≤50,1≤w≤50),每个像素的取值如下:
其中,标注图像网格分割如图3所示:图3(a)是原标注图像中有轨道线点超过10个的情况,缩小为一个轨道线点,并将此网格的像素值设置为1,表示存在轨道线;图3(b)是原标注图中轨道线点少于10个情况,缩小为一个非轨道线点,并将此网格的像素值设置为0,表示不存在轨道线;图3(c)是对原始标注图像经过网格化后处理的标签结果。
图3 网格分割定位示意图Fig.3 Schematic diagram of grid division and location
本文基于对比实验结果,将网格分割阈值设置为10个轨道线点。如图4所示:图4(a)是原始标注图,大小为1 000像素×1 000像素;图4(b)~(d)是分割定位图,大小为50像素×50像素。图4(b)是设置阈值为10的情况,能够很好保留原始标注图的信息。图4(c)和(d)分别是阈值为15和20的情况,可以看出,阈值太大就不能很好地保留原始标注图的信息。因此,本文选择一个能够相对较好保留原始标注信息的阈值。
图4 不同阈值的网格分割效果对比Fig.4 Comparison of grid division effect with different thresholds
经过数据处理后,剩下1 020张图像及其对应的标签文件,考虑到数据量过小不能达到训练神经网络的要求,结合现实中数据的情况采用水平和垂直翻转对数据集进行扩充。数据扩充后的数据集包含4 080张图像,并且在模型训练时,实时对数据进行亮度、对比度、饱和度以及颜色方式的增强。
本文提出一种可区分左右轨道线的铁路轨道线检测方法,该方法主要分为3个部分:第1部分采用深度卷积神经网络模型将图像中的列车行驶前方的两条轨道线检测出来;第2部分则采用几何信息聚类方法区分并聚类左右两条铁路轨道线;第3部分将检测到的轨道线还原到原始图像中。
通常基于深度卷积神经网络的图像分割是对每一个像素进行判断,因此存在分割速度不够快的问题。为了改进图像逐像素分割方法速度不够快的问题,本文提出一种基于深度卷积神经网络的轨道线分割方法。提出的深度卷积神经网络模型主体呈线性结构,由卷积层、池化层、归一化层以及激活层所组成,具体结构如图5所示。
图5 所提方法的网络结构Fig.5 Network structureof the proposed method
其中ConvBlock是一个由3×3卷积、BatchNorm2D归一化和LekyRelu激活所构成的模块,每次进行ConvBlock操作可以选择输出结果的通道数,多次ConvBlock操作使得输入数据的通道数由3增长到256再减少到1,输入图像大小为800像素×800像素,通道数为3,卷积过程采用填充方式不改变图像大小。每次经过最大池化操作后,图像大小变为原来的一半,总共经过4次池化操作,最终输出层图像大小变为50像素×50像素,通道数为1。每个像素点也是概率点,代表原始图像每个20像素×20像素大小网格区域是否存在轨道线。模型整体参数量为100万级别,模型参数体积为4.3 MB。
采用二分类交叉熵损失函数(Binary CrossEntropy)计算模型损失。设P为模型推理得到的检测图中所有像素点构成的集合,G为真实的标注掩模图中所有像素点构成的集合,损失函数定义为:
其中:pi为模型检测图中像素点i的值,gi为标注图像中像素点i的值,N是图像的像素点总个数。
神经网络检测出铁路轨道线位置信息后,还需要通过位置信息聚类出左右轨道线。本文采用几何信息聚类方法将检测出的轨道线点进行轨道线归类,具体算法步骤如下:
1)对每张检测概率图,从下往上、从左往右沿着密度上升的方向移动,依次处理每个检测为轨道线的像素概率点。
2)对每个轨道线点,判断是否确定了轨道线的起点,若没有则执行步骤3),若有则执行步骤4)。
3)将当前轨道线点作为一条轨道线的起点。
4)计算与已归类轨道线点集合的距离、角度相关性。计算归类判断方法如图6所示,设已归类轨道线点集合Ω构成的线为L2,欲归类检测点为P1,已归类轨道线点集合中距离P1最近的点为P2,P1和P2构成的线为L1,P1和P2之间的距离为S,L1和L2之间的夹角为α,具体判断如下:如果S≥width/3并且|α|≥π/4,其中width为检测概率图的宽度,那么P1作为一条新的轨道线起点;否则计算P1点和每个已归类好的轨道线点集合的相关性:R=1/α+1/S,排序相关性,将P1归入到相关性最大的轨道线集合。
图6 相关属性计算Fig.6 Calculation of related attributes
5)重复步骤1)~4),直到所有像素概率点处理完成。
得到了区分左右轨道线的位置信息,可视化效果如图7所示。
图7 左右轨道线聚类部分结果Fig.7 Some resultsof clusteringof left and right railway tracks
检测图大小为50像素×50像素,其中一个像素点代表原图中的一个20像素×20像素区域,为了将检测图中的轨道线点还原到原图轨道线上,只需要将检测图中轨道线点的坐标做相应的放大就可以了。具体做法为:
其中,xi、yi是检测图中轨道线点i的坐标,xi'、yi'是原图中对应的轨道线点i的坐标。检测图与原图中对应轨道线点如图8所示。
图8 检测结果还原到原始图Fig.8 Detection results returning to original images
分别对左右轨道线点集合,采用直接连线轨道线点方式获得完整的轨道线。如图9是绘制了完整轨道线的部分原图。可以看出,检测得到的轨道线与真实轨道贴合很紧密,并且左右轨道也能够正确区分。
图9 部分轨道线检测结果Fig.9 Some resultsof railway track detection
实验使用硬件环境:CPU为Inter Xeon 4114,2个CPU 2.20 GHz,RAM大小为32 GB,GPU为NVIDIA GP100,GPU内存16 GB。软件环境:Ubuntu18.04、Pytorch1.4、Python3.6.9。
数据集被分为训练集(80%)、验证集(10%)和测试集(10%)进行模型优化和性能评价。由于模型输入数据大小为800像素×800像素,而预处理后的图片大小为1 000像素×1 000像素,在进行模型训练、测试和检测的过程中,本文使用了双立方插值实时对读取数据进行Resize操作。
训练过程得到的训练和验证损失曲线如图10所示,训练初始模型的训练集和验证集损失都比较高,第2到第5个批次(epochs)损失迅速下降,接着损失缓慢下降;当训练批次达到15次左右,模型达到最佳效果。在后续的训练中,训练损失和验证损失都无明显变化,说明对于当前数据集,模型已经得到了充分的训练。
图10 损失函数的变化情况Fig.10 Changeof loss functions
为了判断一条轨道线是否被检测出来,本文借鉴车道线检测中的相关方法将铁路轨道视为宽度等于10像素的线[20-22],并计算标注图像中的线和模型检测图中线之间的交并比(Intersection over Union,IoU)。当IoU大于等于某个阈值(0.30/0.35/0.40/0.45/0.50)则认为是正确检测到轨道线(True Positive,TP),若IoU小于设定的阈值则认为是假正例(False Positive,FP),除此之外,标注图中存在的轨道线而模型没有检测到则是假负例(False Negative,FN)。另外,使用F1作为最后的评价指标:
其中:Precision为精确率、Recall为召回率。它们的计算方式如下:
准确率(Accuracy)的计算参考并结合文献[9]和文献[20]的计算方式:
其中n为测试数据集中标注轨道线的总数量,Oi是第i轨道线的检测结果,每个结果的取值如下:
Thr为设定的阈值。
利用上述评价指标,对测试数据集使用本文提出的方法检测轨道线的性能如表1所示。当阈值取值为0.30,0.30为车道线检测中容差率的最低标准(最高标准为0.50),F1最高达到了98.82%。随着阈值取值的增大,召回率、精确率和F1性能指标都开始下降。当阈值由0.35增大到0.50时,F1指标快速下降了29.61%。结合可视化结果发现在视觉远端的轨道线检测的准确率比较低,近端的准确率高。而作为高速行驶的列车,它的危险区域要大于传统的车道区域,因此本文使用0.35作为轨道线检测最终的阈值。
表1 所提方法的轨道线检测性能 单位:%Tab.1 Railway track detection performanceof the proposed method unit:%
其中测试数据集中总共有204条标注轨道线,模型正确检测出196条轨道线,准确率达到96%,多次实验计算得到平均检测速度为155 frame/s,能够实时地对视频监控图像进行轨道线检测,部分轨道线检测结果如图9所示。
通过研究已有的车道线和铁路轨道线检测方法,提出一种新的可区分左右轨道的铁路轨道线检测方法。该方法首先构建一个深度卷积神经网络模型用于检测铁路轨道线,然后使用几何信息聚类方法区分左右轨道线,最终对铁路轨道线的检测达到了96%的检测准确率和155 frame/s的检测速度。所提出的深度卷积神经网络模型的体积和计算量都比较小,适合部署到边缘移动设备进行实时轨道线检测。本文虽然能快速从视频图像中提取轨道线,但是对远端轨道线的检测准确率不高。下一步的研究工作主要考虑对远端和近端使用不同大小的网格分割以提高检测准确率。