郑河荣,程思思,王文华,张梦蝶
(1.浙江工业大学 计算机科学与技术学院,浙江 杭州 310023;2.浙江广播电视集团 浙江卫视频道,浙江 杭州 310005;3.浙江中控技术股份有限公司 研发中心,浙江 杭州 310052)
近年来,越来越多的研究者对基于卷积网络的语义分割产生了浓烈的兴趣。卷积语义网络会给每个像素点一个标签,图像中的同一个标签用同一种颜色表示,实现像素级别的分类。目前的语义分割算法主要存在两个挑战:1) 小物体分割的挑战,主要是在提取目标的特征向量上存在对特征学习不彻底的问题;2) 分割边缘处理的挑战,很多检测结果因分割边缘过于不清晰导致检测准确率低。
本研究待检测的车道线同时存在以上两个问题,车道属于细长型目标,在整张图像中占比不高,属于小物体,并且由于图像从近到远,车道线的宽度也会由宽到窄,因此车道线的检测对于分割边缘要求很高,微小的检测误差也会导致整条车道线检测失误。特别是在夜晚等光线昏暗的场景下,对车道线的检测难度更大。虽然有学者已经提出了很多方法来解决该问题,比如基于多任务学习和基于上下文信息等方法,但是这些方法要么需要大量的人工进行数据标注,要么需要分别引入额外的推理公式进行计算。因此,笔者在训练该车道线检测网络前使用了一种基于场景类型转移的数据增强方法。该方法使用生成对抗网络生成弱光条件下的图像,以增加夜晚的场景数据图像,让车道线检测网络能更好地学习夜晚场景下的车道线特征,从而提高车道检测网络的环境适应度。笔者所提方法在进行场景转换数据增强时不需要额外的手动标签或额外的推理公式计算。笔者提出结合残差网络的编码-解码器结构的分割网络算法对图像进行车道线的分割。编码器使用不同尺寸大小的卷积核来改变感受野的大小,从而获得更多的图像上下文信息和检测物体的特征向量。解码器恢复还原到输入图片大小,输出分割概率图。从分割概率图中找到每行最亮的点,用霍夫线连接起来,得到可视化分割图。笔者首先在CULane标准数据集上进行分析和讨论,以验证算法的有效性;然后构建一个包含5 500多张图像的夜晚交通道路场景的数据集用于夜晚类别下的算法评价和分析。
图像分割技术[1]是将图像按照不同种类进行区分,图像被分成很多个有具体特征的区域,每一区域代表一个种类。图像分割是图像处理的基础,可以用来进行图像识别和图像搜索。传统的车道线图像分割技术主要依赖人类专业化的手工制作特征来识别车道线,主要基于颜色、条纹等特征,或者使用边缘检测算子[2-6]和条形滤波器进行制作,它们可以与霍夫变换结合或者通过卡尔曼滤波器[7]识别出车道线,然后采用后处理方法将错误分割目标过滤,形成最终车道线检测结果。这些传统方法虽然速度很快,但会因为道路场景的复杂变化而产生鲁棒性问题,对一些弯道道路和遮挡道路的分割效果不佳,而且计算成本昂贵,不易扩展使用。
为了改进传统分割方法的不足,减少错误分割和缺少分割情况的发生,近年来神经网络已被越来越多的研究人员使用,并取得了极大的发展。相较于目标检测算法,分割算法能对图像进行更精确的识别,在自动驾驶、无人机等领域有很大的优势。2016年,Paszke等[8]提出了高效神经网络(Efficient neural network,ENet),该网络在分割时使用了一种残差结构块,该残差结构块由1×1,3×3,1×1尺寸大小的卷积层组成,在保证分割精度的前提下,大大降低了计算成本。2017年,Romera等[9]在ENet网络的基础上提出了高效残差分解卷积网络(Efficient residual factorized ConvNet,ERFNet),该网络在保证准确率的前提下,提高了网络计算的速度,达到了精度和速度的平衡。该网络使用的残差结构块由尺寸为3×1,1×3,3×1,1×3的卷积层组成,这种残差块比ENet网络参数更少、速度更快。2017年,Pan等[10]为了更好地检测到细长型目标,提出了优化后的空间卷积神经网络(Spatial convolutional neural networks,SCNN),该网络采用切片式设计,将特征图的行和列也看成网络层,使用卷积和非线性激活,从而增大感受野,保存更多像素的空间位置信息。Lee等[11]提出了消失点引导网络(Vanishing point guided network,VPGNet),这是一个端到端的多任务网络,可以实现对车道线和道路标记的分割和检测,该方法先检测出车道线的消失点,再回归该消失点来指导分割车道线,从而提升车道线的分割精度。2018年,Wang等[12]提出了车道检测网络(Lane detection networks,LaneNet),该网络将车道线分割分为车道线边缘提取和车道线定位两个阶段:车道线边缘阶段使用基于编码器-解码器结构的车道线边缘提取网络,并将图像的每个像素点进行车道线边缘分类;车道线定位阶段的网络根据前一阶段得到的边缘分类检测出车道线。2018年,Ghafoorian等[13]提出嵌入损失生成对抗网络(Embedding loss-generative adversarial networks,EL-GAN),该网络将车道线标签也作为输入,并将生成对抗网络添加到网络结构中,从而使分割生成的图像越来越像标签图像。这种增加GAN网络的方法虽然具有良好的分割精度,避免了计算量大、训练时间过长的问题,但存在GAN网络模型的优化过程不太稳定、延展性不足等问题。2019年,Hou等[14]提出基于自我注意力蒸馏算法的车道检测方法(Lane detection CNNs by self attention distillation,SAD),该方法不仅不需要额外的标签数据,还能加强网络的特征学习,在车道线分割网络中成功分割车道线,是一种弱监督学习。SAD算法是将深层次的注意力地图作为低层次的精馏目标。
笔者采用的语义分割网络结构由编码器和解码器组成,如图1所示,在笔者提出的目标语义分割网络结构中,从三维色彩图像(编码器的输入)到像素类别概率(解码器的输出)。该算法1~20层构成了编码器,由残差块和下采样块组成。相比ERFNet网络,该算法在每个卷积块中增加了2层残差层,增加的残差层的空洞[15]尺寸为32和64。下采样层的存在虽然降低了像素分辨率,但可以让更深的卷积层学习收集更多的上下文信息,有助于减少计算量。因此,为了保持良好的平衡,采用了3个2步长的3×3卷积层作为下采样层,分别存在第1,2,8层。第3~7层采用5对残差网络Non-bt-1D层。从第9层开始,该目标分割网络结构在残差网络Non-bt-1D层中交织了一些空洞卷积以收集更多上下文信息,从而提高分割的准确性。一个卷积块的空洞尺寸分别为2,4,8,16,32,64。
图1 车道线分割算法流程框架Fig.1 Lane segmentation algorithm flow framework
解码器部分由21~27层组成,其主要任务是对编码器的特征图进行上采样以匹配输入分辨率。该部分由两个网络块组成:第1个网络块包含一个通道数为128、步长为2、卷积核尺寸为3的反卷积层,两对残差网络Non-bt-1D层;第2个网络块由一个通道数为64、步长为2、卷积核尺寸为3的反卷积层,两对残差网络Non-bt-1D层组成。之后特征图再经过一个通道数为16、步长为2、卷积核尺寸为2的反卷积层,得到一个三维的向量,恢复图片的信息。
随着深度神经卷积网络的网络深度增加,网络的分割或者检测精度逐渐增加至饱和,过了饱和点后会迅速下降。为了解决该问题,引入了残差网络的应用。残差网络构造了一种映射,即
y=F(x,{Wi})+Wsx
(1)
式中:WS是一个身份特征映射;F(x,{Wi})是需要学习的残差映射。
笔者使用的残差网络为一维的非瓶颈模式网络(Non-bottleneck-1D,Non-bt-1D),该网络是对非瓶颈模式网络(Non-bottleneck,Non-bt)和瓶颈模式网络(bottleneck,bt)的改进。瓶颈模式下的输入和输出维度差距较大,网络像一个瓶颈。非瓶颈模式的输入和输出维度差距不大。非瓶颈模式残差网络结构如图2(a)所示,它由两个3×3卷积的非瓶颈设计组成。瓶颈模式残差网络结构如图2(b)所示,它由一个1×1卷积、一个3×3卷积和一个1×1卷积的瓶颈设计组成。实验证明:通过增加网络深度,非瓶颈模式网络下的残差网络精度高于瓶颈模式下的残差网络精度,且瓶颈模式依旧存在网络降级问题。另外,因为非对称性的残差结构能够降低参数量,提高训练速度,所以笔者算法使用了非瓶颈模式网络的残差网络。
图2 残差网络结构Fig.2 Residual network structure
笔者算法使用带一维滤波器的非瓶颈残差网络,如图2(c)所示。1D滤波器可以通过公式表示二维滤波器卷积层的权重,即
W∈RC×dh×dv×F
(2)
式中:C表示输入通道的数量;F表示输出特征图通道的数量;dh×dv表示每个特征图的卷积核尺寸大小。令b∈RF表示每个滤波器偏置项的向量,fi∈Rdh×dv表示该网络层中第i个卷积核。由于二维滤波器在从数据中学习这些滤波器之后还需要微调,故使用一维滤波器,其线性表示为
(3)
将二维卷积记为W2D∈RC×d×d×F,将一维卷积记为WD∈RC×d×F,每个一维卷积在2×(C×d×F)的维度中。一维滤波器的功效与二维滤波器相比大致相同,却比二维滤波器减少了33%的参数,减少了计算量,提升了计算效率。
残差层利用一维分解进行计算,并称其为一维的非瓶颈模式网络。与瓶颈模式相比,非瓶颈模式具有速度更快、计算量和参数更少的优势,同时能保证具有和瓶颈模式差不多的精确度和学习能力。
利用图像语义分割技术将原图转化为n张(n≤4)区分前景、背景的二值概率图,n为n条车道线。该方法规定在每张高度为208的二值概率图像中找特定高度的18行:0,12,24,48,60,70,82,94,106,118,130,142,154,166,178,190,202,207,并找到每行的像素最大值。这些点位置的坐标即检测到车道线的位置坐标,使用三次样条插值算法使直线量化。最终由坐标点确定车道线的位置信息,用霍夫线连接起来,组成一条合适的可视化车道线。
笔者使用了通过强/弱光照条件下场景转换方法生成的弱光照场景下的车道线数据集和公共数据集CULane。通过强/弱光照条件下场景转换方法生成的弱光照场景下的车道线数据集约5 500张,由公共数据集CULane中选取的4 560张强光照场景数据和4 560张弱光照场景数据作为训练集训练模型生成,强光照场景转变为弱光照场景的图片如图3所示。CULane共分为9类,分别为正常、拥挤、高亮光线、阴影、没有车道线的情况下、指示箭头、曲线、十字路口和夜晚。该数据集共有88 880张训练集图片、9 675张验证集图片和34 680张测试集图片。
图3 强光照场景转变为弱光照场景的图片Fig.3 Pictures of a strong-light scene transformed into a low-light scene
系统环境为安装了CUDA 10.0的Ubuntu 16.04,硬件环境为内存为32 G的Intel Xeon E5处理器和4张Titan XP显卡,使用CycleGan和ERFNet框架搭建网络。
为了提升在夜晚、傍晚等弱光环境下的检测精确度,笔者提出使用基于生成对抗网络的数据增强方法。通过该方法可以在同一场景下将白天环境转换成夜晚环境,从而增加夜晚环境的数据。
基于生成对抗网络的数据增强方法网络如图4所示。基于生成对抗网络的数据增强方法包括两个步骤:1) 循环生成对抗网络[16];2) 强/弱光照条件下场景转换。循环生成对抗网络有两个镜像对称的生成对抗网络,其由两个生成器和两个鉴别器组成。每个生成器带有一个鉴别器,当生成器在生成图像的时候,对应的鉴别器用来鉴别该生成器生成的图像是否真实。使用循环生成对抗网络[17]可实现从合适的光照条件到低光照条件的场景转换。在同一个场景下,自动实现白天到夜晚的转换,无需额外人工收集标记数据即可实现数据增强。后续的车道线检测方法在训练前先通过该强/弱光照条件下场景转换对数据集进行数据增强训练。
图4 数据增强网络流程框架Fig.4 Data enhanced network process framework
使用的循环生成对抗网络的生成器包括2个步长为2的卷积层、9个resnet残差块和2个步长为1的卷积层。为了让编码器能适用于不同分辨率的输入图像,编码时自动记录比例的变化情况,并在解码时将其映射到相应的卷积层中。
使用5层卷积层作为鉴别器网络,包括3个步长为2的卷积层和2个步长为1的卷积层,它的初始通道数为3个通道。鉴别器用来判断生成器生成的图像是否真实,把结果反馈给生成器。在笔者算法中,用循环生成对抗网络完成强/弱光照条件下的场景转换。在训练时,生成器根据鉴别器的反馈生成更真实的图像,其主要目的是欺骗鉴别器,让鉴别器可以更准确地判断出生成的图像是否真实,最终实现真假的动态平衡。
实验用到的数据集尺寸为1 640×590,由于车道线属于细长型目标,占全图比例较小,且图片上面部分一般为天空,车道线目标一般位于图片的下端,为了让模型有更好的检测能力,需要对原图的尺寸进行裁剪,剪去图片上端的1 640×200,即留下高度为200~590的图片数据,这样能减少无效信息对车道线分割算法的干扰,增加车道线分割的准确度。
笔者使用开源的深度学习框架PyTorch训练模型。在ERFNet提供的预训练模型基础上,针对弱光照场景增加数据,并对车道线分割网络进行加深。其中初始学习率为0.001,动量为0.9,图片裁剪大小为1 640×390,空洞卷积率分别设置为[2,4,8,16,32,64],训练次数为16次,批次大小为24,网络训练采用SGD作为优化器。
使用公开数据集CULane进行模型训练,模型训练完成耗时约12 h,其损失值达到收敛。将笔者算法得到的准确率和其他算法得到的准确率进行比较,实验准确率结果如表1所示,实验错误正样本结果如表2所示。显然,增加了提取特征向量的编码器层数后,未进行数据增强的算法在各类场景中的准确率已有较大提升。而采用数据增强方法后,因为增强了弱光照场景下的数据,夜晚(Night)和昏暗(Shadow)这两类的准确率进一步得到了提高。
表1 笔者实验准确率结果与其他算法对比Table 1 Comparison between the author’s experimental accuracy results and other algorithms
表2 笔者实验错误正样本数据与其他算法对比Table 2 Comparion between author’s experimental error positive sample data and other algorithms 单位:个
为使精度达到最优,增加对比实验,笔者使用的车道线分割算法在编码器部分的第20层下面再增加5层Non-bt-1D残差层,即增加了1个残差块网络,由原来的2个残差块变为对比实验的3个残差块。这部分的空洞尺寸依旧为2,4,8,16,32,64。该对比实验的实验数据为表1,2的“有3个残差块网络的笔者算法”列。实验数据表明:一味增加网络深度,并不一定能提高分割算法的精度,反而会出现网络梯度爆炸现象,从而降低准确度。
为了验证算法的有效性,利用该算法对实际生活中的图片进行车道线分割。笔者算法分割概率图结果与原ERFNet算法分割概率图结果对比如图5所示,矩形框内为笔者算法与ERFNet算法相比的进步之处。分割可视化结果如图6所示。
图5 分割概率图结果Fig.5 Segmentation probability map
图6 分割可视化结果Fig.6 Segmentation visualization results
笔者提出的车道线语义分割算法通过编码器和解码器提取了车道线的特征,即使在遮挡、弱光照情况下,检测到的车道线位置准确率也较高。基于生成对抗网络的数据增强方法以及基于ERFNet和车道线特征的语义分割算法解决了对车道线的分割检测问题。然而,笔者算法还存在一定的局限性,如因车道线这类目标过于细长,有些边缘部分仍然会出现不够光滑的问题;当检测时被一些无关像素干扰时,一些车道线检测结果会出现弯曲现象,影响车道线分割的效果。接下来可以进一步优化分割网络,提高车道线分割算法的精确率。