陈雨润,张轩雄
(上海理工大学 光电信息与计算机工程学院,上海 200093)
随着科学技术的不断进步,轨道交通的发展也受到了学界的高度重视,国内在轨道交通的研究与建设上也取得了一系列可观的成就。由于铁路交通网的覆盖网络愈加复杂以及列车行驶速度的提升,轨道交通不仅在物流领域占据着举足轻重的位置,在客运出行方面也发挥着日益重要的作用。与之相适应,社会各界对轨道交通安全性方面的要求也不断提高。在各种轨道交通系统中,轨道交通事故大多是人为操作不当或列车与轨道区域内发生障碍碰撞造成的。因此,使列车能够主动感知障碍已成为一种趋势。为了解决上述问题,轨道交通主动障碍物感知系统的基本功能之一就是轨道区域检测,即确定列车前方的轨道区域。准确的轨道区域检测不仅可以提供列车的精确行驶区域,还可以为检测障碍物划定感兴趣区域。此外,准确的轨道区域检测可以确定图像中轨道面积的最大范围,从而为列车提供速度推荐。因此,如何快速、准确地检测轨道区域是本文研究的重点。
在过去的几十年里,虽然轨道区域检测的研究取得了丰富的成果,但仍存在许多挑战亟待克服。如:在开放的轨道环境中运行,列车将面临光线变化,主要表现在阴影、反射、进入隧道、与地面对比度差等方面;轨道区域除直线外,往往存在弯道较大,曲率不固定的问题;此外,多个轨道结构混乱也使得轨道区域的检测更加困难。
尽管基于视觉的铁路检测方法仍然需要进行许多改进,但由于图像信息丰富、视觉传感器成本低,基于视觉的轨道区域检测仍是一种有前景的方法。随着计算机视觉的快速发展、尤其是深度学习的发展,使得利用视觉方法解决上述问题已成为可能。
目前,针对铁路轨道区域的研究相对较少,而传统的轨道区域检测主要采用形态学的方法,提取出待检测铁路的轨道区域图像和铁路图像的特征差异,如方向、纹理、轮廓、灰度等方面,针对差异对轨道区域进行检测,并将结果进行阈值化处理;通过调整阈值参数,分割出轨道内区域和轨道外区域,最终配合提取的梯度特征,对真实轨道进行曲线拟合。传统方法的原理,本质上是将轨道区域检测的研究抽象成为求解模型最优参数的问题。文献[4]中提出了一种通过对边缘特征点进行聚类的检测方法,提取出车道线的边缘特征点,并对其进行聚类、从而拟合出车道线。文献[5]改进了一种随机抽样一致性算法,实现轨道线识别。但此类型的算法仍然避免不了对噪声的敏感性,在恶劣的场景下、如轨道区域模糊或受到遮挡时稳定性不高。
近年来,随着深度神经网络热潮的兴起,深度神经网络在轨道交通中的应用也受到研究学界的普遍青睐。虽然基于CNN 的方法通过强大的学习能力将场景理解推向了一个新的水平,但CNN 并没有充分探索图像行与列之间像素空间关系,而这些关系对于模型学习具有强形状先验、弱外观(图像像素)连贯性的语义对象来说是非常重要的。由于轨道线在图像视频中出现的形式一般是修长的细弧线或直线,所以需要高、低层次的特征融合来获得大感受野的结构信息,以及精准定位细节处。SCNN改进了CNN 卷积层之间的卷积的方式,采用逐层卷积,使得上下文信息能够在行与列之间传递。SCNN 的结构更适用检测修长的连续形状、但外观线索较少的物体。例如,电线杆、墙壁和轨道线等,但其推理时间上也相应地有了明显增加。VPGNet提出一个统一的端到端的可训练多任务网络,可以检测到极端恶劣天气下的消失点引导的车道和道路标记,并在其贡献的数据集上取得了不错的表现。但是此方法依赖于人工标注消失点信息,加大了研究的工作量。
为了高效解决轨道区域检测的问题,并针对其场景复杂多变的特点,本文提出了一种多分支多尺度的轨道区域检测算法。该方法通过对多尺度输入的图像进行语义分割,充分利用在编码阶段产生的大量特征信息,并将部分编码后的结果进行实例分割,再融合两分支结果得到分割的结果。方法中还加入轻量级CNN 分类网络用于实例数量预测,最终得到图像中多个轨道区域经过分割后的实例。
本文以轨道区域为研究对象,设计了一种三分支轨道区域实例分割深度卷积神经网络,模型整体结构如图1 所示。算法基于laneNet的设计思想,将轨道区域的实例分割任务进行拆分。其中,一条分支用于语义分割,主要负责提取出轨道区域的特征;一条分支用于实例分割,主要负责在类别上区别轨道区域和背景,将特征映射到多维空间;一条分支用于对列车当前所处轨道进行预测。本文提出的多分支轨道区域检测算法,根据语义分割分支所预测出的二值结果,提取实例分割结果中的车道线位置像素的多维特征,以实例数预测分支的结果为监督信息,对结果进行多边形拟合,最终得到预测的轨道预测区域。
图1 模型整体架构Fig.1 Overall architecture of the model
语义分割分支作为整个网络的主干分支,首要功能就是提取特征信息。语义分割是像素级别的分类任务,目前主流的方式是通过编码-解码网络。FCN通过全卷积的方式保留了图像空间信息,丢弃传统CNN 的全连接层,网络的输出不再是类别标量而是heatmap。通过跳级、连接融合不同深度层的结果,即是提高模型整体的鲁棒性和稳定性。同时,FCN 网络恢复阶段采用上采样的方式,来削减池化和卷积对于图像尺寸所带来的影响。语义分割分支的主体网络结构由多尺度融合输入与FCN 网络结合改进的ASPP 模块组成。在已有的轨道区域检测研究基础上,针对车载高清摄像头清晰度不够、列车嵌入式设备计算资源有限导致的精度受损、实时性较差等问题,本文语义分割分支在经典FCN 像素级别语义分割网络的基础上进行了改进。整体采用轻量级的全卷积网络,实现轨道区域的检测;加入改进后的空间空洞金字塔池化模块(ASPP)以保留上下文信息,而后又利用多尺度特征融合的方式,提高模型整体语义分割的效果。
多尺度的含义包括3 个方面:
(1)图像输入多尺度。网络输入图像使用64×128 像素、128×256 像素、256×512 像素三种分辨率。
(2)串行融合多尺度。模型将浅层语义和深层语义进行跳接,将2 种尺度的信息进行融合。
(3)并行融合多尺度。通过改进空洞空间金字塔池化模块,融合多个并行分支的特征信息。设计实现过程具体如下。
(1)编码阶段:首先对高分辨率、低输入图像进行33 卷积预提取特征,再使用ResNet 基础模块进行深度编码和特征提取、并进行1/2 下采样,同时又与经过中分辨率预提取后的特征进行融合,融合后将以类似方式与低分辨率预提取后的特征进行融合。
(2)解码阶段:对融合特征图使用改进后的ASPP 模块提取深度特征的同时扩大感受野,使用反卷积进行上采样;解码过程中通过跳级连接的方式,融合浅层信息和原始信息,而后恢复特征图,进而得到语义分割分支的结果。
池化是卷积神经网络中非常重要的基础操作,能够在保持特征图尺度不变的情况下,增加特征图的感受野,并减少神经网络的计算参数。在VGG这种中小规模级别的网络中,常使用最大池化(max-pooling)或平均池化(average-pooling)的方式,而大型、重型规模的网络中、如ResNet,往往选择使用带有步长的卷积来增大特征图的感受野,但上述2 种下采样方式均会丢失上下文的信息,最终影响模型精度。空间金字塔池化(Spatial Pyramid Pooling)通过拼接上下多层特征图的金字塔信息,用于进行全连接计算,在算法开销几乎不变的情况下,使精度得到提升。Chen 等人首次将ASPP 模块引入到deeplab 系列中,使得在不进行下采样的情况下能实现更精准的特征映射。增大了的卷积核的感受野,能够收集到更大跨度的上下文语义信息,可以更有效地捕捉物体多尺度的特征,同时并行处理不同采样率的空洞卷积,如此可达到加速运算目的。ASPP 模块结构如图2 所示。
图2 ASPP 模块结构图Fig.2 The architecture of ASPP model
为了降低网络的参数量、从而加速模型推理速度,本文对空洞卷积操作进行了简化,使用采样率8、4、2 的卷积层分别可得到31×31、15×15、7×7 尺寸的感受野,并且使用跳层连接的方式,既减少了上下文语义信息的丢失,同时也有助于模型训练时加速收敛。改进后的ASPP 模块如图3 所示。
图3 改进后的ASPP 模块结构图Fig.3 The architecture of improved ASPP model
Brabandere 等人提出一种基于度量学习用于实例分割的算法。研究中,训练了CNN 神经网络并通过自定义的损失函数得到一种度量标准(Metric),其本质是将图像从像素空间映射到高维度空间。在高维度空间中,经过映射后的像素点,若属于相同的实例或者同类,则、距离接近,反之,、距离较远,基于此将通过聚类的方式完成不同实例间的分割。为了使得图像中同实例的像素在映射空间中的向量相互接近,不同实例的像素在映射空间中聚类的中心点要尽可能地相互远离。损失函数设计的原理公式如下:
其中,为实例总数(轨道线);S为该实例(轨道线数目)的像素点数; x为像素点映射之后在高维空间的坐标;μ为实例像素映射后在高维空间的中心坐标;C、C表示不同的实例;‖ * ‖ 表示距离;[] =max(0,);L表示该分支总损失;L表示方差损失;L表示距离损失;L为正则项;超参数设置为δ=0.75、δ=2.0、1、0.005。
在此方法基础上,由于语义分割分支和实例分割分支特征大部分相同,为提高网络推理速度,本文将实例分割分支和语义分割分支在网络初始阶段的部分编码网络进行共享,使得2 个分支在分别拥有独立编码网络结构的情况下,整体网络结构相似。2个不同任务分支的最大差别在于,实例分割分支最后一层卷积所使用的卷积核个数的含义是上述方法中多维空间所代表的维度数量。经过实验比对,选用X=5,在五维空间下的效果最好。
轨道区域预测分支的任务,是预测出当前视频画面中所存在的轨道数目。为了尽可能降低网络的复杂度,提高网络整体的运算速度,网络整体的架构选为轻量级CNN 分类网络,大量采用深度可分离卷积进行计算量上的优化,并且该分支图像的输入尺寸缩小为原始图像的1/4。研究给出的网络设计如图4 所示,网络的最终输出为预测的分支数量。
图4 实例数预测分支网络图Fig.4 Example number prediction branch network diagram
由于训练集中的轨道线数量的分布严重不平衡,多数情况下结果为1。日常图像分类的场景下,损失函数大多选择多分类交叉熵函数(cross entropy,CE)函数,如下所示:
针对上述问题,本文对交叉熵函数引入正则项,避免部分标签拥有过高的置信度,增加类别的内聚,减少类间耦合。经过修正后的函数如下所示:
其中,为修正系数。修正后的损失函数使用标签平滑(Label Smoothing)技术,该技术在图像分类任务上表现优秀,结合本文方法的特点,本分支选用的损失函数为修正后的交叉熵损失函数。
网络输出及拟合后输出如图5 所示。通过本文的方法可以很好地提取出铁路区域,但此时的区域边缘并不是特别精确(参见图5(b)),需要加以改进,其效果见图5(c)。因此,本文改进了多边形拟合方法,用于进一步优化轨道区域。尽管多边形拟合方法在曲线多边形拟合中应用广泛,但由于铁路区域多边形的特殊性,且对需要拟合的铁路轮廓有丰富的先验知识。本文通过拟合轨道区域的2 侧来简化拟合过程,提出了一种快速多边形拟合方法来拟合道路区域。快速多边形拟合算法图解如图6所示。研究实现步骤具体如下:
图5 网络输出及拟合后输出Fig.5 The output image through convolutional neural network and the output image after fitting
由图6(a)可知,提取铁路区域轮廓的4 个边界点,分别用、、、表示。
从直线中找出离直线最远的点,计算到直线的距离。如果大于预设的距离阈值,则将设置为新的边界点。
重复步骤2,继续寻找曲线和曲线之间的边界点,直至找到直线的所有边界点。以同样的方式寻找直线之间的边界点。最终拟合出的多边形见图6(c)。
图6 快速多边形拟合算法图解Fig.6 Illustration of fast polygon fitting
由于对铁路轨道区域检测的研究相对较少,相关的开源数据集十分有限,相比之下公路交通的车道线检测研究上就丰富很多。本文数据来源于真实的铁路轨道实验段线路,利用专业高清摄像头进行录制采集,并通过专业软件对视频的每一帧进行截取。一般情况下,铁路轨道区域处于图像的中下部分,标注时尽量使图片内容与真实拍摄保持一致。此外,由于所采集的视频中部分图像帧比较模糊,需要删除某些无法识别的帧。最终在尽可能保证不丢失原始场景细节的条件下,总计生成1 500张原始图像,分辨率为1 920像素×1 080像素。部分图像数据如图7 所示。
图7 数据样例Fig.7 Data samples
本文使用的图像数据的标注,主要借鉴公路无人驾驶领域的标注方式,使用专业的标注软件labelme,由专业人士对每张图片的上轨道区域逐张标注,最大程度地拟合轨道区域,符合肉眼所观察的效果。此后,将标注点的坐标与每张图片逐一对应,保存为数据-标签对文件。
经过数据处理与标注后,为了提高神经网络的训练效果,本文结合实际情况,对图像在垂直方向和水平方向上进行翻转,并适当调整图像的对比度、亮度、饱和度,对数据进行扩充和增强处理,最终得到了3 000张图像数据用于模型的训练。
本文分割算法效果的评价标准选择平均交并比()和类别平均像素准确率(),其计算公式如下:
其中,(1)表示类别总数;p表示类的像素预计属于类的个数,即真正;p、p分别表示假正和假负像素的个数。由于本文算法的输入分辨率是多尺度的,输出分辨率为1 920×1 080 尺寸的图像,评判结果时需要将图像真实大小调整为与输出相同的分辨率,以1 920×1 080 为基准分辨率进行计算评估。
研究阶段结合传统算法和深度学习相关理论完成算法构建,实验阶段基于Intel i7-8750、Nvidia Titan X、Nvidia GeForceGTX 960 显卡、CUDA8.0,并采用Python3 编程语言、OpenCV 库函数与Pytorch框架实现算法内容。本文将准备好的训练数据和标签数据输入到网络中用来训练模型。
实验结果表明,在不同场景下都能很好地应用本文方法,包括阴影、反射、隧道环境、高架环境和轨道切换场景。为了进一步评价本文方法的有效性,特别是文中提出的多尺度融合方法和改进的ASPP模块。这里分别对未采用多尺度输入模块的模型和未使用改进ASPP 模块的模型进行了对比实验。此外,将本文方法与目前最具代表性的语义分割方法SegNet、LaneNet、SCNN、Enet在SaQiang 数据集上进行了精度的比较,实验比对结果见表1。部分实验结果可视化如图8、图9 所示。
表1 不同算法检测结果对比Tab.1 Comparison results of different detection methods %
图8 实验结果1Fig.8 Experimental results 1
图9 实验结果2Fig.9 Experimental results 2
由表1 所见,本文轨道区域检测方法取得了较好的效果。文中提出的方法在SaQiang 数据集上取得了最好的精度,Mean达到94.54%,达到95.19%。主要原因是本文采用的多尺度融合和多分支方式,综合考虑了轨道区域的整体特征和局部特征,从而充分挖掘了轨道区域的特征。此外,算法最后阶段使用的多边形拟合算法进一步优化了网络模型的输出,从而使得推理出的轨道区域的边缘更加精确。SegNet、SCNN 和Enet 是目前比较流行的语义分割网络,据相关研究分析可知,这2 种网络在大多数的语义分割任务中都能获得很高的准确率,但是在铁路区域的检测中的准确率并不好,归根究底就是这些网络没有充分考虑铁路区域的特点,因此在轨道区域检测上也未能获得良好性能。
除了性能上的分析,还通过实验评价了本文方法速度上的优势。实验中测试了该方法在单个广泛使用的NVIDIA Titan X GPU 上的运行性能,同时,为了评价该方法在普通配置平台上的运行能力,还在Nvidia GeForceGTX 960 显卡上进行了实验。结果见表2。
表2 不同算法检测速度对比Tab.2 Speed comparison of different detection methods
由表2 的对比结果可知,本文的方法在检测速度方面达到了中等的性能。该网络在单个Titan X上达到了23 帧以上的,在Nvidia GeForceGTX 960 上达到了6.5 帧以上的。虽然速度分数不是唯一的评价标准,但考虑到精度的原因,该方法在性能和速度之间取得了很好的平衡。
本文针对轨道区域检测的问题,运用深度学习和传统算法,提出了一种高性能的多分支的轨道区域检测方法。该方法通过语义分割、实例分割、分类网络以及多边形拟合算法获取轨道区域信息,得到优异的钢轨区域轮廓。实验结果表明,该方法能够在阴影、反射、隧道环境、高架环境和轨道切换场景等各种条件下实现高效的轨道区域检测和对轨道区域的像素级分类,同时还一并兼顾了检测的精度和速度。
通过实验结果分析,本文提出的检测方法在某些场景中仍然存在不足。如:在道岔区域对轨道区域的检测还存有一些偏差,效果不是特别理想;算法在速度上的性能还需要进一步提高等。之后的研究中,将致力于克服上述缺点,进一步研究更轻量的网络,将轨道区域识别和障碍物检测相结合,实现列车的实时主动障碍物感知,为深度学习算法在轨道区域检测的应用落地提供一种可行的技术方案。