一种基于改进YOLOv5s的车道线检测方法

2022-05-11 05:47舒小华杨明俊
湖南工业大学学报 2022年3期
关键词:车道准确率函数

韩 逸,舒小华,杨明俊

(湖南工业大学 轨道交通学院,湖南 株洲 412007)

0 引言

随着城市交通的迅速发展以及图像处理技术的逐渐成熟,应用在车辆上的辅助视觉功能被越来越广泛地应用。智能驾驶逐渐成为当下的热门技术与话题,其中图像与视频处理是其主要的研究对象。而在车辆对道路信息的收集中,车道线的信息收集尤为重要。它不仅可以为车辆导航提供参考,而且可以被应用于目标检测和汽车预警等方面。在传统算法方面,车道线检测主要是提取图像的边缘信息,一般先用Canny算子或者Sobel算子对图像进行边缘检测,然后用高斯算法或者最小二乘法进行拟合。而随着机器学习的不断发展,深度学习的方法也被应用到车道线检测中。

目前,基于目标识别的深度学习方法主要分为两种:一是two stage的R-CNN(region convolutional neural networks)系列,其框架精度较高,网络结构较深,训练时间较长;二是one stage的YOLO(you only look once)、SDD(system definition directive)系列[1],这种框架训练速度快、结构简单、检测速度快,具有可实时检测性[2]。YOLO系列至今已发展到YOLOv5系列。相较于之前的YOLOv3和YOLOv4系列,YOLOv5系列具有体积小、检测速度快、检测精度高等特点[3]。王沣[4]对YOLOv5框架进行了改进,增加了k-means++算法,对anchor先进行聚类,以提升检测框的检测率,并将GIoU(generalized intersection-over-union)损失函数改成CIoU(complete intersection-over-union)函数,改进后的框架对于安全帽的检测率有所提高。林清平等[5]对于YOLOv5框架的改进方法体现在特征金字塔网络(feature pyramid networkimage,FPN)结构上,其在FPN中增加了一个平衡系数,以增大小目标在相邻特征层融合过程中保留的比例。崔文靓等[6]在YOLOv3框架上增加了k-means++算法进行先验框计算,并用GPU(graphics processing unit)进行训练和检测,实验结果表明该处理的检测率提升了11%。杨晓玲等[7]在数据集方面进行了Mosaic增强,随机选取训练数据中的4张图片,采用随机缩放、随机排布、随机裁剪的方式进行拼接以丰富图像数据,这种方法增加了数据的鲁棒性,对于图像中小物件对象的检测率有所增加。Qu Z.等[8]将车道线的整体问题转化成局部特征点与这个点关联的特征点问题,并通过由粗到细的方法调整曲线,该方法可以嵌套到任意的深度学习网络结构中。对车道线中心点进行高斯编码,再用偏移量进行区域搜索,可拟合到其他特征点,连接这些特征点即可得到拟合曲线。周卫林等[9]基于GoogLeNet建立了一种端到端的车道线检测网络模型,先用YOLOv3框架对车道前方的障碍物进行识别检测,再用长短期记忆网络做决策,最后根据历史编码信息描绘车辆运动模式,结合当前状态得到驾驶参数。

基于以上研究,为了提高车道线检测的实时性与准确性,本研究在机器学习的框架下,提出了一种基于改进的YOLOv5s模型检测算法。改进算法中,对于车道线的检测,因为YOLO系列在神经网络结构方面具有检测速率较快、网络架构较简单、检测精度较高等优点,故采用该系列的神经网络进行实验。又因YOLOv5是该系列中的新产品,在网络结构上相较于前几代具有创新性,检测速率和准确率又有所提升,所以采用one stage的YOLOv5模型进行检测。在回归框损失函数方面,将其改进为EIOU(efficient input/output unit)损失函数;在数据处理方面,增加图像预处理之后的二值化图像参数进行参考,并且采用anchor-free,以提高先验框的准确度。为了验证改进算法的有效性,通过实验,将得到的检测结果与YOLOv5的检测结果进行对比,发现改进算法的平均精度均值(mean average precision,mAP)增加了约11%,能够实现较为准确的车道线检测,并具有良好的鲁棒性。

1 YOLOv5目标检测算法

1.1 YOLOv5框架

YOLOv5分为S、M、L、X 4种模型,其中S模型网络结构最为简单,训练和检测速率最快;X模型网络结构最为复杂,深度最深,但是检测效果最佳。本研究采用L模型网络结构进行训练和检测,在训练速度和检测效果两者中折中取舍。相比于YOLOv3,YOLOv5的改进网络结构如图1所示。

图1 YOLOv5改进网络结构框图Fig.1 YOLOv5 improved network architecture block diagram

图1中,每个结构框层后面都连接着一个CBL(conv + BN + LeakyReLU)层,其作用是添加一个BN(batch normalization)层和一个激活函数,具有神经网络的功能。 Backbone是YOLOv5的主体部分,其中Focus层是YOLOv3和YOLOv4两者所不具备的,它的功能是进行切片操作,即将图像切片后进行下采样操作。虽然其步骤比其他下采样算法复杂,但能保持信息较为完整。CSPNet(cross stage partial network)层进行局部跨层融合,通过每层的特征信息来获得更加丰富的特征图[10];Neck部分采用FPN+PAN(perceptual adversarial network)结构,FPN是自顶向下的,将高层的特征信息通过上采样的方式进行传递融合,得到进行预测的特征图。FPN主要应用了分治法(divide-and-conquer)解决目标检测问题[11]。PAN是自底向上,将底层的特征信息通过下采样方式进行传递融合。两者相辅相成,从不同的主干层对不同的检测层进行特征聚合;在锚框拟合方面,YOLOv5采用GIoU损失函数,现将其改为EIOU函数,相较而言,EIOU将目标框的宽和高分别进行处理,回归速度更快、效果更好。

1.2 YOLOv5数据增强

YOLOv5在数据增强方面采用的是Mosaic(马赛克)增强,即将数据集中的3张或4张图片通过旋转、翻转、平移等一系列图像变换操作后,融合成一张新的图像,新图像中的目标作为一副新的图像数据与原数据集一起进行训练,达到扩大数据集的效果,增强对目标物体的识别能力。

这种方法是由YOLOv4首先提出来的,现已被很好地运用于YOLOv5中。Mosaic算法将原数据集的图片进行融合,相当于变相地增加了batch_size,这样在训练过程中能减少显存的消耗,让显存不是很大的GPU也能进行训练。

2 算法改进

2.1 图像数据

一般的车道线检测数据集大多是对彩色图像信息的采集,而在数据信息复杂度较高且对应图像数量较少的情况下,训练效果不明显,会导致检测时产生漏检或者误检的现象。针对这一问题,本研究提出加入黑白图像信息通道,将彩色图像对应的预处理后的二值化图像一起加入数据集中进行训练,以提高检测准确率。

2.2 损失函数

YOLOv5采用的损失函数为GIoU函数,GIoU函数是交并比(intersection-over-union,IoU)函数[12]的改进版。IoU函数用于计算预测检测框和真实检测框的相交占比,可以反映两个框的检测效果,其表达式为

式中:A为预测检测框;

B为真实检测框。

IoU函数存在的问题是,当A和B两个框并没有相交时,即A∩B=0时,则IoU不能体现两者之间的距离,且loss=0无法回归,无法进行训练。为了解决这一问题,提出了GIoU函数,其先计算两个框的最小闭包区域面积Ac,再计算出IoU;然后计算闭包区域中不属于两个框的区域占闭包区域的比例;最后,用IoU减去计算所得比例值得到GIoU,具体的计算公式如下:

式中U为两个框的重叠区域。

当两个框完全相交时,GIoU=1;而两个框不相交时,距离越远,GIoU越接近-1。它的缺点是在两者出现图2情况时,GIoU会退化成IoU,无法体现出两者的相对位置。

图2 预测框与真实框位置关系示意图Fig.2 Position relationship between prediction frame and real frame

为了解决这个问题,提出了DIoU损失函数,其表达式如下:

式中:b、bgt分别为预测框和真实框的中心点位置;

p为两点之间的欧氏距离;

c为能包含两个框的最小闭包区域的对角线距离。

引入损失函数后,不仅能反映两者完全包含情况下的位置距离,并且DIoU可以直接最小化两个框的距离,比GIoU的收敛速度更快。

CIoU则是在DIoU的基础上,考虑了Bounding box的纵横比,因而进一步提升了其回归精度,CIoU的表达式如下:

式中:α为trade-off参数,其计算式为

v是用来衡量长宽比一致的参数,其计算式为

其中,w和h分别为锚框的宽和高。

CIoU loss的梯度在宽高比属于[0, 1]区间内时会爆炸,因为w2+h2的值会很小,所以令这个值等于1即可[13]。CIoU考虑的东西最全面,相较而言是目前比较好的一种损失函数[14]。

而EIOU[15]则是在CIoU的基础上,将纵横比因子拆开分别计算目标框的长和宽,其计算式如下:

式中:Cw、Ch分别为覆盖两个BOX的最小外界框的宽度和高度。

图3是GIoU和EIOU在同一数据集训练下的收敛效果图。

图3 GIoU与EIOU的收敛效果图Fig.3 Convergence effect diagrams of GIoU and EIOU

图3中横坐标为训练轮数,纵坐标为损失(loss)。由图可以得知,EIOU的收敛效果比GIoU的收敛效果更好。

2.3 锚框机制

在YOLOv5s中,对于anchor先验框的计算,是通过k-means聚类方法进行的。人工标注之后的检测框通过k-means聚类得到先验框,将其与真实框进行对比、更新等一系列操作后,得到新的数据框。这一操作太过复杂,计算量较大,在车道线的标注上体现得不是很好。根据这一问题,提出anchor-free的锚框算法。

现有锚框机制主要有anchor-based和anchor-free两种。YOLOv3、YOLOv5系列都是用anchor-based直接在特征图上对锚框进行回归和预测,这样能避免重复的卷积运算,加快检测速率。但是会降低检测精确度,对于小物体目标的检测效果不显著。

anchor-free检测器以两种不同的方式检测物体,一种是首先定位到多个预定义或自学习的关键点,然后约束物体的空间范围,称为Keypoint-based方法;另一种是利用中心点或中心目标区域来定义正样本,然后预测其到目标4个边的距离,称为Center-based方法。这种方法能让检测流程进一步精简,减少许多超参数的存在,提高系统的泛化能力。

根据车道线在目标检测中的锚框标定,采用Center-based方法进行检测。将图像分为S×S个网格,只要车道线的中心点落在网格内,则用这个网格负责本车道线的检测。通过计算中心点到网格4个端点的距离来进行检测和锚定[16]。

2.4 数据增强算法

在1.2中介绍过Mosaic的数据增强算法,其优点是能够增强神经网络对目标的学习能力,而且能让机器不太依赖batch_size的大小,让显存小的GPU也能很好地进行训练。该方法仍然是在数据集上进行工作。

而mixup数据增强,则是一种与数据无关,更为简单的数据增强算法[17],相较Mosaic算法而言,其计算量更小、操作更简单。其操作如下:在样本中随机抽取两个样本,读取它们的样本标签数据,进行融合计算后得到一个新的样本标签数据,再将该数据加入样本中进行训练。mixup数据增强的计算公式如下:

式中:λ为权重,根据α与β两个超参数的贝塔分布计算获得;

x1、x2分别为两个图像样本;

y1、y2分别为对应的两个样本标签。

这样,就获得了一个新的图像样本和一个新的标签数据。根据文献[17]中的实验数据,α和β的超参数无论怎么设置,其期望都不会超过0.5,这可能是因为权重在训练过程中期望近似0.5,所以将α和β都设置为0.5时,效果会比较好。

为了能保证GPU训练最大化,并丰富数据特征,本研究采用Mosaic和mixup算法相结合的方式,一起进行数据增强。

3 实验及结果分析

3.1 实验流程

1)从Tusimple数据集中挑选3 000张公路图像,这些图像具有一定的标志性(如不同的天气状况、不同的道路信息状况等),然后用labelimg软件进行标注,生成xml文件。

2)将这3 000张公路图像转换为二值化图像,并进行标注,生成label文件,然后与原图像和原标签文件汇总成新的数据集。

3)将YOLOv5s中的autoanchor改为center_based算法,将GIoU算法改为CIoU算法,并加入mixup算法,与Mosaic一起进行数据增强。

4)设置对应的超参数,以及训练代码中的batch_ size大小,然后输入图像大小,进行训练。

5)保存训练后的结果权重文件,并进行检测实验,得出结果。

3.2 实验数据准备

实验的数据集采用Tusimple数据集中的3 000张随机图像,将其压缩为320*180的图像,这样的图像训练完成后,能在实际应用中增加识别小目标的准确度。在labelimg软件中对每一张图像的车道线信息进行标注,然后将每张图像进行图像预处理后的二值化图像加入数据集中,增加参考量。

Tusimple数据集如图4所示,a图为天气良好的情况,b图为光照条件不好的情况。由图可知,不同场景结合下的训练效果鲁棒性较好。

图4 Tusimple数据集Fig.4 Tusimple data set

3.3 实验平台及参数设置

实验在CPU为Intel(R) Core(TM) i5-9300H CPU@ 2.40 GHz,GPU为NVIDIA GeForce GTX 1650,CUDA为11.0版,Cudnn为8.0版的配置上完成,并使用pytorch软件,调用opencv库,搭建TensorFlow框架,完成实验。

设置的训练参数如表1所示。

表1 训练参数设置Table 1 Training parameter setting

3.4 实验结果分析

下面主要对于上文论述的相关内容进行消融实验,表2是加入二值化图像前后的对比实验结果。

表2 不同图像数据处理方式的实验结果对比Table 2 Image data processing comparison %

由表2中的数据可知,加入二值化图像数据后,mAP数值上升了2.8%,但准确率基本保持不变,说明加入二值化图像对于车道线信息的识别准确率具有一定的提升效果。

表3是选用YOLOv5s时,采用不同损失函数的检测结果。

表3 不同损失函数下的检测结果对比Table 3 Comparison of detection results under different loss functions

由表3中的数据可以得知,EIOU的检测效果更好,且收敛效果也比GIoU的效果更加显著。

表4为对YOLOv5s修改锚框机制前后的mAP与准确率检测结果对比。

表4 不同神经网络下的检测效果对比Table 4 Comparison of detection effects under different neural networks %

由表4可知,将anchor-based改为anchor-free后,对车道线的检测mAP与准确率均约提高了1%,且不用进行k-means聚类预选锚框,节省了实验步骤。

表5给出在YOLOv5s增加了mixup增强算法前后的mAP检测结果。

表5 增加混合增强算法前后的检测结果对比表Table 5 Comparison table of hybrid enhancement algorithms %

由表5 可知,当在YOLOv5s中加入了mixup后,进一步对数据集进行了数据增强,因此数据集的mAP和准确率都得到了提升。

最终的实验结果测试标准采用mAP因子,并参考召回率和准确率,三者结合进行分析。本实验分别用YOLOv3[17]、YOLOv5s以及改进方法进行对比实验。在实验之前,由于YOLOv5s的深度和宽度是YOLOv3的1/3,所以,为了确保实验的准确性,将YOLOv3的深度和宽度修改为与YOLOv5s一样。得到的训练效果图见图5,其中a图为YOLOv3的训练结果,b图为YOLOv5s的训练结果,c图为改进算法的训练结果。从图5中可以看出,YOLOv3的整体检测率较低,且存在较多的误检情况,改进之后的方法相较于YOLOv5整体上的检测率有所提高,锚框机制也有所改进。

图5 不同算法的实验效果对比图Fig.5 Comparison of experimental results of different algorithms

SSD(single shot detection)因其网络结构简单,检测速率快,也经常被用来识别目标,故加入一组SSD+VGG(Visual Geometry Group)16的对照实验,不同算法的实验结果数据见表6。

表6 不同算法的实验结果数据对比表Table 6 Comparison table of experimental results %

由表6中的数据可以得知,对比YOLOv3,YOLOv5s在速度和准确率上均有大幅度提升;在改进了损失函数以及加入了二值化通道后,相较而言,约增加了6%的准确率。

由表6还可以得出,相较其他方法,改进方法在准确率和mAP上都有明显提升,召回率也有所提升,改进之后的模型检测效果明显提升。且相较于SSD+VGG16的网络结构,YOLO系列在检测精度上都大大提升。

表7给出了YOLOv3、YOLOv5s与改进后的YOLOv5s训练后的模型大小,以及检测速率的结果对比。

表7 YOLOv系列网络的模型性能对比Table 7 Model performance comparison of series YOLOv networks

结合表6和表7可以得出,对YOLOv5s进行改进之后,训练后得到的模型大小与原来相比是一样的,虽然检测速率下降了一些,但仍在可接受范围内。在仅牺牲约0.05%的检测速率后,得到了比较明显的准确率提升,并且mAP提高了近11%,准确率提高了13%,可见改进方法模型更加适用于车道线的检测。

4 结语

在目前的深度学习算法中,YOLO系列由于其结构简单、训练速度快等特点,能够实时完成一些视频流的检测,具有较好的鲁棒性与实时性。其最新的YOLOv5大大增加了检测速率和准确率,使用起来十分方便。通过对YOLOv5s和YOLOv3的比较,在车道线检测方面,YOLOv5s的提升效果十分明显,不仅训练速度约是YOLOv3的3倍,准确度也得到了明显的提升。目前传统的模型缩放方法是改变模型深度,即增加更多的卷积层[19],所以在增加准确度的同时,训练速度也会有所减缓。因此结合二者的特性进行改进,并选择了YOLOv5s模型进行训练。同时采用了EIOU损失函数,以加快其收敛速度,提高检测准确性。在数据准备阶段,采用了anchor-free,使锚框更加符合车道线的锚定框。增加了二值化通道,以提高道路信息不太明确时的检测准确度。改进方法相比YOLOv5s原模型而言,其准确率约提升了13%,mAP值提升了11%左右,且达到了80%以上的准确率。

由于本研究使用的是Tusimple数据集,道路信息大多十分明显,所以在车道线信息冗杂、缺失的情况下,还需要进一步研究改进后的检测效率。

猜你喜欢
车道准确率函数
智慧收费机器人在高速公路车道上的应用
基于OpenCV的直道车道线识别技术研究
北斗+手机实现车道级导航应用
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
多层螺旋CT技术诊断急性阑尾炎的效果及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
关于函数的一些补充知识
高中数学中二次函数应用举隅オ
无独有偶 曲径通幽