掌桥专利:专业的专利平台
掌桥专利
首页

实时精准车道线检测和分类方法、系统及车辆

文献发布时间:2023-06-19 19:28:50


实时精准车道线检测和分类方法、系统及车辆

技术领域

本发明属于汽车自动驾驶技术领域,具体涉及一种实时精准车道线检测和分类方法、系统及车辆。

背景技术

自动驾驶系统是当前智能汽车的核心系统之一,其主要由三个大的模块组成,即感知融合模块、决策规划模块和控制模块。其中,感知融合模块作为另外两个模块的前置模块,其感知的精度将直接决定整个自动驾驶系统的性能,而车道线检测作为感知融合模块里面的一个极为重要子模块,其检测的精度和实时性对整个系统的性能有极重要的连带效应。

当前车道线检测面临着7个非常大的挑战:

(1)车道线是展布于空间的开放连续的几何曲线,因此很难去用检测框来将其限定;

(2)车道线会被遮挡,特别是道路拥堵情况下,这对检测算法的鲁棒性有相当大的要求;

(3)车道线可能会被磨损;

(4)车道线可能有部分在阴影下,或者在夜晚光线昏暗情况下难以识别;

(5)弯道处的车道线比直道更难以准确定位;

(6)车道线本身有很多不同类别,而且类别不均匀(参见图1和图2);

(7)车道线存在道路线分流和合流,使得车道线定义和检测具有歧义性。

当前基于视觉的车道线检测算法,主要分为以下四个算法流派:

(1)基于传统的计算机视觉算法:此种流派(如CN201310450258.7车道线检测方法、系统、车道偏离预警方法及系统)首先标定摄像头,然后利用逆透视变换(IPM:InversePerspective Mapping)将原图变换到俯视图上,然后利用Canny边缘检测算法和Hough变换在俯视图上找出可能的车道线。基于上述传统视觉算法的车道线检测系统,鲁棒性较低,已经难以适用于当前的自动驾驶车道线检测系统。

(2)基于深度学习的语义分割:此种流派将车道线检测问题转化为语义分割,其中又分为常规的语义分割(如CN202011612255.5一种基于深度神经网络的弱光环境车道线检测方法、装置)和车道线专用语义分割(如CN202011550418.1一种基于注意力空间卷积神经网络的车道线检测分割方法)。常规的方式是将通用场景的语义分割网络应用到车道线分割,其容易受到车道线像素稀疏样本不平衡和车道线的影响。专用车道线语义分割针对车道线本身连续细长的结构特征和检测的特殊性,对检测模型进行了改进,使其可以更有效处理车道线遮挡、车道线破损、车道线像素不平横等诸多问题。基于语义分割方式的车道线检测系统,对嵌入式芯片显存消耗较大,成为其性能瓶颈,而且其后处理可能需要进行像素点采样和聚类,也会占用一部分CPU资源,使得算法难以达到非常高的帧率。

(3)基于深度学习和锚线的线检测:此种流派首先假设一系列的车道线先验位置,称为锚线(Anchor Line),然后通过模型回归出图像中真实车道线和这些先验车道线的偏差值。比较有代表性的模型包括:(1)南京大学设计的Line-CNN(Li,X.,et al.(2019)."Line-CNN:End-to-End Traffic line detection with line proposal unit."21(1):248-258.);(2)华为设计的CurveLane-NAS(Li,Z.(2020)."CurveLane-NAS:UnifyingLane-Sensitive Architecture Search and Adaptive Point Blending.");(3)LucasTabelini等人设计的LaneATT(Tabelini,L.,etal.(2020)."Keep your Eyes on theLane:Attention-guided Lane Detection.")。相比于语义分割,此类模型的优势在于:(a)可以检测任意条车道线,而不会受到最大车道线检测数的限制;(b)直接输出检测出的车道线,省去了像素采样和聚类,减少了中间过程。其局限性在于,需要假设一系列AnchorLine,如果道路实际车道线和Anchor Line位置相差过大,那么就容易漏检。因此算法的准确率和Anchor Line的先验位置选择有密切关系。

(4)基于深度学习的端到端车道线检测:此种流派又可以细分为两类,第一类直接输出每条车道线的点(如:CN201910628238.1一种端到端车道线检测方法及其系统),而第二类(如:CN202110154312.8车道线检测方法、系统及电子设备)连点都不输出,直接输出车道线对应的三次多项式曲线的四个系数(C

车道线分类:当前多数文献中都只关心车道线的位置回归,极少关系车道线的分类。少有的几个关注了分类的文献(Pizzati,F.,et al.(2019).Lane detection andclassification using cascaded CNNs.International Conference on Computer AidedSystems Theory,Springer),几乎采用的都是两阶段模型,首先回归出车道线位置,然后利用位置信息提取出ROI区域,然后用一个小分类网络来进一步细分车道线类型。如上的两阶段模型可以解耦回归和分类,一定程度上提高模型的准确率,但难以在计算资源紧缺的自动驾驶芯片达到实时的性能。

综上所述,当前车道线检测算法主流为基于深度学习的基于语义分割、线检测和端到端。语义分割可解释性最强,但是对显存的要求最高,同时涉及到复杂的后处理。端到端方式虽然消耗资源小,但可解释性和鲁棒性最差。而线检测方式为两者的折中,有一定的可解释性,同时又不涉及到复杂的后处理逻辑。但是目前的一些基于线检测的模型,在资源紧缺的嵌入式端,仍然难以达到自动驾驶需要的实时性(一般要求算法FPS>30),同时几乎都没有直接同时输出车道线位置和类别的多任务网络。

因此,需要开发一种新的实时精准车道线检测和分类方法、系统及车辆。

发明内容

本发明的目的在于提供一种实时精准车道线检测和分类方法、系统及车辆,它能同时预测车道线位置和类别,且具有高实时性和低资源消耗。

第一方面,本发明所述的一种实时精准车道线检测和分类方法,包括以下步骤:

步骤1、采集车道线数据;

步骤2、对采集的数据进行清洗;

步骤3、对清洗后的数据进行标注;

步骤4、以LaneATT为初始模型架构,采用了神经网络架构搜索的方式,搜索出两个主干网络,其中一个为重型主干网络,另一个为轻量级主干网络;

步骤5、将重型主干网络作为车道线检测老师模型,将轻量级网络作为车道线检测学生模型,并进行知识蒸馏,然后采用自注意力蒸馏方式将轻量级网络学习到的车道线特征做加强处理;

步骤6、将车道线同时进行位置回归和分类,以实现同时对车道线的位置和类别的预测。

可选地,所述步骤1具体为:

将摄像头安装在数据采集车的正前挡风玻璃上,并保证视场内有道路上的车道线,并在不同的工况下采集数据。

可选地,所述步骤2具体为:

对每个摄像头的每一段视频按照预设间隔进行抽帧,然后对抽帧的图片进行筛选,尽可能覆盖各种场景。

可选地,所述步骤3具体为:

对于每一条车道线用分段折线来标示出,同时标出车道线类型。

可选地,所述步骤4具体为:

以Resnet122-LaneATT网络为大模型设计原型,抽取训练数据,利用DARTS搜索算法,以模型的车道线检测准确率Accuracy为优化指标,搜索出一个检测车道线的大模型,然后对大模型进行训练和测试,即得到重型主干网络;

以Resnet18-LaneATT网络为小模型设计原型,抽取训练数据,利用DARTS搜索算法,以模型的车道线检测准确率Accuracy为优化指标,搜索出了一个检测车道线的小模型,然后对小模型进行训练和测试,即得到轻量级主干网络。

可选地,所述步骤5具体为:

将训练出来的大模型作为车道线检测老师模型,将训练出来的小模型作为车道线检测学生模型,采用知识蒸馏,将大模型的特征知识转移到小模型上面;

在知识蒸馏完毕后,进行自注意力蒸馏,使得车道线的细长结构特征更容易被模型学习。

可选地,所述步骤6具体为:

以搜索出来的车道线检测学生模型为基本架构,加入一个分类分支头,同时进行多任务训练,包括回归和分类,然后从测试集合里面挑选出包括有各种类型车道线的图片进行了种类标注,训练时取出部分图片作为训练集,取出部分图片作为验证集,用于对模型的训练和测试。

可选地,还包括步骤7:模型部署,具体为:

将步骤6得到的模型导出成onnx格式,并利用onnxruntime的tensorrt接口对所有参数进行了FP16量化,同时对部分算子进行定点量化,得到的模型为混合量化模型。

第二方面,本发明所述的一种实时精准车道线检测和分类系统,包括存储器和控制器,所述存储器内存储有计算机可读程序,所述计算机可读程序被控制器调用时能执行如本发明所述的实时精准车道线检测和分类方法的步骤。

第三方面,本发明所述的一种车辆,采用如本发明所述的实时精准车道线检测和分类系统。

本发明具有以下优点:本发明针对自动驾驶要求的高实时性和低资源消耗的特点,针对性地设计出了一个基于线检测流派的适用于部署在计算资源紧缺的嵌入式板卡的车道线检测算法。本发明和现存所有主流算法相比,采用了模型架构搜索方式和模型压缩方式来同时提升模型在嵌入式板卡的准确率和实时性。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本实施例的流程图;

图2为车道线类别定义示意图;

图3为Resnet122/18-LaneATT线检测模型架构;

图4为神经网络架构搜索Cell设计;

图5为搜索出来的大小模型网络架构;

图6为teacher-student蒸馏架构;

图7为模型自注意力蒸馏架构;

图8为模型车道线位置和类别多任务模型(最终模型);

图9为在线实时推理算法流程图之一;

图10为在线实时推理算法流程图之二;

图11为数据标注样例图;

图12为算法效果展示图。

具体实施方式

以下将结合附图对本发明进行详细的说明。

如图1所示,本实施例中,一种实时精准车道线检测和分类方法,包括以下步骤:

步骤1、采集车道线数据;

步骤2、对采集的数据进行清洗;

步骤3、对清洗后的数据进行标注;

步骤4、以LaneATT为初始模型架构,采用了神经网络架构搜索的方式,搜索出两个主干网络,其中一个为重型主干网络,精度高,但实时性差;另一个为轻量级主干网络,保证了实时性条件下,尽量搜出精度最高的架构。

步骤5、将重型主干网络作为车道线检测老师模型,将轻量级网络作为车道线检测学生模型,并进行知识蒸馏,然后采用自注意力蒸馏方式将轻量级网络学习到的车道线特征做加强处理;

步骤6、将车道线同时进行位置回归和分类,以实现同时对车道线的位置和类别的预测。

以下对每个步骤进行详细地说明:

1、采集车道线数据:

车道线检测中对于算法的要求决定了对于数据采集的要求:

(1)要求算法尽可能覆盖住极限的场景,同时要求算法能够适应不同分辨率的摄像头、不同种类的摄像头以及摄像头的不同安装位置。

(2)要求尽可能多采集不同种类的车道线,以减少车道线种类的不平衡。

因此数据采集时,将10个200万级像素的摄像头随意安装在10辆数据采集车的车舱内正前挡风玻璃后面,并且保证视场内有道路上的车道线;摄像头位置随意安装,只要保证视场内有道路上的车道线,这样可以保证数据集的数据分布差异更大,增强了模型泛化能力。在不同的工况下采集了数据,尽量覆盖了极限场景的车道线,详细的数据采集场景参见表1。

表1:车道线数据采集工况;

2、对采集的数据进行清洗:

对每个摄像头的每一段视频,按照一定的间隔进行抽帧,然后对抽帧的图片进行筛选,保证尽可能覆盖不同场景。特别的,尽量多挑选出一些极限工况的场景,以及各种有复杂线形的车道线。

某一实例中,每辆车均采集一周,每天采集了2h时长的视频,每段视频都是15FPS,总共对应10.8万张图片,一周十辆车总共采集了756万张图片,然后对这些图片进行筛选,选出了有代表性的25万张图片,覆盖了大多数的场景,其中20万用于训练,2万用于验证,3万用于测试。

3、对清洗后的数据进行标注:

对于每一条车道线,采样用分段折线来标示出,同时标出车道线类型(参见图2),车道线标注示例见图11,对于遮挡的车道线,只标出遮挡不超过1/3的。

本实施例中,所述步骤4具体为:

以Resnet122-LaneATT网络为大模型设计原型,抽取训练数据,利用DARTS搜索算法,以模型的车道线检测准确率Accuracy为优化指标,搜索出一个检测车道线的大模型,然后对大模型进行训练和测试,即得到重型主干网络;

以Resnet18-LaneATT网络为小模型设计原型,抽取训练数据,利用DARTS搜索算法,以模型的车道线检测准确率Accuracy为优化指标,搜索出了一个检测车道线的小模型,然后对小模型进行训练和测试,即得到轻量级主干网络。

4.1、大小模型神经网络架构设计:

以Resnet122-LaneATT网络为(参加图3)大模型设计原型,以Resnet18-LaneATT网络(参见图3)为小模型设计原型设计一个适用于车道线检测的微分神经网络搜索架构。以大模型为例,在图3中,本实例中重新设计了一种Cell取代Resnet残差模块(参见图4),这个Cell具有双层残差的拓扑结构,此Cell结构总共有4个操作节点(OP Node:OperationNode),每个OP节点都对应可能的5种操作:(1)identity操作(恒等操作,即短路操作);(2)zero操作(断路操作);(3)1x1卷积+BN+Relu操作;(4)3x3可分离卷积卷积+BN+Relu操作;(5)5x5可分离卷积卷积+BN+Relu操作。如此设计,能够确保每一个cell单元都可以尽可能学习到车道线细长精细的结构(通过两级残差)。对于残差网络,其有两种基本的残差模块(参见图3),第一种为输入输出的宽高尺度不变,第二种为最后一层进行stride=2的降采样,本实例中统一用cell结构取代两种模块的主体,而对于第二种Residual Block,相应的Cell最后添加一个op,此Op Node有两种选择,即为conv3x3和conv5x5,两种op的stride都为2,这样保证了其可以降采样。

4.2、大小模型神经网络架构搜索:

以大模型网络架构搜索为例,采用DARTS搜索算法,在10万的训练集和2万的验证集上(从20万训练集抽出10万作为架构搜索的训练集),以最小化车道线在验证集的损失为目标函数,搜索出了一个优化后的车道线检测teacher模型。具体而言,对于每一个OPNode,其可能的操作对应的概率向量记作(以有5个操作的op node为例):

α={α

其输入和输出满足如下的关系:

op

这5个操作定义如下:

op

op

op

op

op

因此,对于每一个节点,都对应一个如式(1)的向量α,此参数可以调控网络中OP的权重,在训练时候,考虑公式(2)作为每一个节点的输入到输出的映射公式,然后进行梯度下降,优化完毕时候每个节点最终的操作为:

对于上述的梯度下降优化算法,具体而言,本方法优化的目标如下:

w

Loss=Loss

其中loss包含回归车道线位置偏差损失和车道线置信度损失。

即首先固定α不变,然后在10万张训练集合上面利用梯度下降法优化网络权重使其局部收敛到权重w

由于采用了这样的微分神经网络搜索架构,在有10万张图的训练集和2万张图的验证集上,利用单卡TESLA V100,只搜索了约60GPU时(大模型)和20GPU时(小模型),就搜索出了适用于车道线检测这个特定任务的特定结构(搜索结果参见图5)。架构搜索完毕后,本方法利用上述搜索出来的网络结构(大、小模型),进一步在所有20万张图进行了训练,并在有3万张图的测试集上进行了测试,结果表明,利用DARTS算法搜索出来的网络,比起原始网络,其精度指标都进一步增加,参见表2。特别的,对于搜索出的大模型,其指标达到了89.19%,过检率2.2%,漏检率17.15%,鉴于本方法自采集的数据集存在很多极限的难度较大的场景,这样的指标已经足够用来作为教师网络进行蒸馏,对于小模型,由于其主干网络表达能力有限,Accuracy为84.24%,过检率为6.45%,漏检率30.25%,可以看到其漏检比较严重。因此后续通过模型蒸馏的方式进一步提高网络的指标。

表2:模型指标对比表

5、模型蒸馏:

将训练出来的大模型作为车道线检测老师模型,将训练出来的小模型作为车道线检测学生模型,采用知识蒸馏,将大模型的特征知识转移到小模型上面;在知识蒸馏完毕后,进行自注意力蒸馏,使得车道线的细长结构特征更容易被模型学习。

在某一实例中,将大模型作为车道线检测老师模型,小模型作为车道线检测学生模型,采用知识蒸馏,将大模型的特征知识转移到小模型上面,参见图6。蒸馏时,以上一步训练出的小模型的权重为初始权重,分别从三个地方(图6)引出车道线检测老师模型和车道线检测学生模型的特征图,然后求取两个特征图的差异值。

本方法进行了50epoch的知识蒸馏,在蒸馏结束后,模型的指标有进一步的上升:Accuracy提升至86.75%,过检率为5.37%,漏检率有了较大的下降,降低到22.67%。说明小模型成功学习到了大模型更细致的车道线特征,对一些边缘的车道线检出能力进一步提高。为了进一步提升车道线模型的指标,进行了自注意力蒸馏,其蒸馏架构如图7。自注意力蒸馏只涉及小模型,没有车道线检测老师模型参与。本方法从骨干网络的4个降采样特征层抽取特征图,然后进行自注意力蒸馏,和teacher-student蒸馏不同,自注意力蒸馏需要对尺度较小的特征图进行一个上采样,然后求softmax,最后求取两个特征图的L2差,作为训练时候一个附加的损失项。自蒸馏完毕后,小模型的Accuracy进一步提升到88.05%,过检率降低到了4.84%,漏检率为19.21%。

6、车道线分类分支的训练:

以搜索出来的车道线检测学生模型为基本架构,加入一个分类分支头,同时进行多任务训练,包括回归和分类,然后从测试集合里面挑选出包括有各种类型车道线的图片进行了种类标注,训练时取出部分图片作为训练集,取出部分图片作为验证集,用于对模型的训练和测试。

某一实例中,本方法以搜索出来的车道线检测学生模型为基本架构,进一步加入了一个分类分支头,同时进行多任务训练(回归+分类)。具体而言(参见图8),加入了一个MLP层作为分类分支(本方法为了不增加额外的推理时间,只用了单层神经网络),然后从测试集合里面挑选出了1.2万张有各种类型车道线的图片进行了种类标注。训练时候取出1万张作为训练集,2000张作为验证集。训练时候分类分支头的初始学习率设为和训练回归模型一样的0.001,而原来的student基础架构参数的学习率设为0.00001(只让其在多任务时候进行权重微调,避免大幅改变之前学习出的权重)。在这一万张图片上面训练了50epoch后,在2000张验证集上,Accuracy为92.21%,过检率为5.68%,漏检率为23.21%,17类别的分类准确率为76.205%。而在原来的3万张测试集上只测试其回归指标,发现其检测Accuracy稍微降低了一些,为87.72%,过检率升高到了6.64%,漏检率升高到了21.21%。

7、模型的部署和C++API封装:

将步骤6得到的模型导出成onnx格式,并利用onnxruntime的tensorrt接口对所有参数进行了FP16量化,同时对部分算子进行定点量化,得到的模型为混合量化模型。

某一实例中,将原始模型导出成onnx格式,并利用onnxruntime的tensorrt接口对所有参数进行了FP16量化,同时对部分算子进行了定点量化(INT8),因此得到的模型为混合量化模型,模型大小为22MB,MACs为9.3G,经测试,在NVIDIA XAVIER NX上的前向单batch的推理平均速度为16ms,达到了62FPS。模型量化后,经过在同样的3万张图片进行测试,Accuracy为87.14%,过检率为6.82%,漏检率为22.03%,在2000张带有分类标签的图片上,分类准确率为75.81%。

原始网络推理的输出为一系列带有置信度的候选锚线,需要进行后处理。和目标检测类似,需要首先设定一个阈值,将置信度低于阈值的直接去掉,然后通过NMS的方式去除重合度较高的线,留下局部置信度最大的线,最后在将分类分支中概率最大的类别作为此条锚线对应的车道线类别。

本方法还设计出了一整套的车道线检测算法流程图,封装成了接口,接口包括初始化、前处理、网络推理、后处理、2D转3D、可视化等,参见图9和图10,经过实测,整个接口的推理时间平均为28ms,其中如上所述,网络推理平均时间为16ms,前处理时间为4ms(图像resize和归一化),后处理时间为2ms,cuda和cpu之间通信和传输时间为6ms。本算法的实时帧率为35FPS,完全能够满足车载实时性车道线检测要求,同时消耗的资源较少。整个算法检测效果展示参见图12,本算法已经作为车道线检测模块在搭载了ADAS系统的长安内部试验车S202-ICA车型上实验成功,可以在高速行进的条件下实时控车进行车道保持和车道变换。

本实施例中,一种实时精准车道线检测和分类系统,包括存储器和控制器,所述存储器内存储有计算机可读程序,所述计算机可读程序被控制器调用时能执行如本实施例所述的实时精准车道线检测和分类方法的步骤。

本实施例中,一种车辆,采用如本实施例中所述的实时精准车道线检测和分类系统。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

相关技术
  • 一种基于车道线标定车辆违章变道的实时检测方法及系统
  • 一种基于车道线标定车辆违章变道的实时检测方法及系统
技术分类

06120115924768