代码链接:GitHub - aliyun/conditional-lane-detection
摘要:
现代的基于深度学习的车道检测方法在大多数情况下都是成功的,但对于具有复杂拓扑结构的车道线却很困难。在这项工作中,我们提出了CondlanNet,一种新的自上而下车道检测框架,它首先检测车道实例,然后动态预测每个实例的线形。为了解决车道实例级判别问题,我们提出了一种基于条件卷积和逐行公式的条件车道检测策略。此外,我们设计了递归实例模块(RIM),以克服检测具有复杂拓扑结构(如密集线和分叉线)的车道线的问题。受益于端到端流水线,它需要很少的后处理,我们的方法具有实时效率。我们在车道检测的三个基准上广泛评估了我们的方法。结果表明,我们的方法在所有三个基准数据集上都达到了最先进的性能。此外,我们的方法同时具有准确性和效率,例如,在CULane上的78.14 F1分数和220 FPS。
1.导言
人工智能技术越来越多地应用于驾驶领域,有利于自动驾驶和高级驾驶辅助系统(ADAS)。车道检测作为自动驾驶中的一个基本问题,在车辆实时定位、行驶路线规划、车道保持辅助和自适应巡航控制等应用中发挥着至关重要的作用。
传统的车道检测方法通常依赖手工操作员提取特征[24,43,13,17,15,1,16,33],然后通过后处理(如Hough变换[24,42]和随机抽样一致性(RANSAC)[17,15]拟合线形。然而,传统方法无法在真实场景中保持鲁棒性,因为手工制作的模型无法处理不同场景中车道线的多样性[27]。最近,关于车道检测的大多数研究都集中在深度学习[34]。早期基于深度学习的方法通过分割检测车道线[28,27]。最近,已经提出了各种方法,如基于锚的方法[32,2,39]、按行检测方法[30,29,41]和参数预测方法[31,25],并不断更新精度和效率。
尽管基于深度学习的车道检测方法取得了很大进展[42],但仍存在许多挑战。车道检测的一个常见问题是实例级判别。大多数车道检测方法[27、28、19、32、12、21、29、2、30、41、39]首先预测车道点,然后将点聚合成直线。但是,为不同车道实例分配不同点仍然是一个共同的挑战[34]。一个简单的解决方案是将车道线标记为固定数量的类别(例如,如果最大车道数为4,则标记为0、1、2、3),并进行多类别分类[28、30、41、3]。但限制在于只能检测到预定义的固定车道数[27]。为了克服这一限制,研究了后聚类策略[27,19]。然而,这一策略在某些情况下,如密集线路,仍在苦苦挣扎。另一种方法是基于锚的方法[25、22、39]。但由于锚的固定形状,预测线形状是不灵活的[39]。
另一个挑战是检测具有复杂拓扑结构的车道线,如分叉线和密集线,如图1所示。这种情况在驾驶sce narios时很常见,例如,分叉线通常在车道数变化时出现。Homayounfar等人[10]提出了一种用于HDMap(高清晰度地图)的离线车道检测方法,可以处理分叉线。然而,对于实时驾驶场景中具有复杂拓扑结构的车道线感知的研究很少。
【图1.具有复杂拓扑的车道线场景。处理像密集线(第一行)和分叉线(第二行)这样的场景很有挑战性。不同的实例在此图中用不同的颜色表示。】
车道检测任务类似于实例分割,需要为不同的实例分配不同的像素。最近,一些研究[35,38]研究了条件实例分割策略,该策略在车道检测任务中也很有前景。然而,直接将该策略应用于车道检测是低效的,因为遮罩的约束与指定线形状不完全一致。[3, 34, 30].
在这项工作中,我们提出了一种新的车道检测框架,称为CondlaneNet。为了解决车道实例级判别问题,我们提出了条件车道检测策略,该策略受到CondInst[35]和SOLOv2[38]的启发。与实例分割任务不同,我们将优化重点放在基于行式公式指定车道线形状[30,41]。此外,我们设计了递归实例模块(RIM)来处理具有复杂拓扑结构(如密集线和分叉线)的车道线检测。此外,得益于端到端流水线所需的少量后处理,我们的方法实现了实时效率。这项工作的贡献总结如下:
•通过提出的条件车道检测策略【 the proposed conditional lane detection】和行式公式【row-wise formulation】,我们极大地提高了车道瞬时水平识别能力。
•我们通过拟议的RIM解决了检测具有复杂拓扑结构的车道线的问题,如密集线和分叉线。
•我们的CondLaneNet框架在多个数据集上实现了最先进的性能,例如,曲线上的F1分数为86.10(比SOTA高4.6%),在CULane上的F1评分为79.48(比SOTA高3.2%)。此外,我们的CondLaneNet的小型版本在确保高精度的同时具有高效率,例如,在CULane上的78.14 F1分数和220 FPS。
2.相关工作
本节介绍了最近基于深度学习的车道检测方法。根据线状描述策略,现有方法可分为四类:基于分割的方法、基于锚定的方法、行检测方法和参数预测方法。
2.1.基于分割的方法
基于分割的方法[28、12、27、19、21、6]最为常见,并取得了令人印象深刻的性能。与一般的语义分割任务不同,车道检测需要实例级的区分。早期的方法[28,6]使用多类分类策略来区分车道实例。如前一节所述,这种策略是不灵活的。为了提高实例精度,后聚类策略[4]被广泛应用[27,19]。考虑到基于分割的方法通常预测缩小的掩模,一些方法[19]预测用于细化的偏移图。最近,一些研究[3,30]表明,将车道线描述为掩模是低效的,因为分割的重点是获得每个像素的准确分类,而不是指定线形状。为了克服这个问题,提出了基于锚的方法和行检测方法。
2.2.基于锚的方法
基于锚的方法[32、2、39]采用自上而下的管道,并通过回归相对坐标将优化重点放在线形上。预定义锚可以减少无视觉线索问题[32]的影响,并提高实例辨别能力。由于车道线的细长形状,无法直接使用物体检测中广泛使用的箱锚[7]。PointLaneNet[2]和CurveLane[39]使用垂直线作为锚。LaneA TT[32]设计了细长形状的锚,并在多个数据集上实现了最先进的性能。然而,固定锚形状导致描述线形的自由度较低[39]。
2.3.行检测方法
行检测方法[30、29、41]充分利用形状先验,并预测每行的线位置。在训练阶段,通过每行的位置约束来实现对整体线形状的约束。基于各行预测位置的连续性和一致性,可以将形状约束添加到模型[29,30]。此外,就效率而言,最近的一些行检测方法[30、41、11]取得了优势。然而,实例级歧视仍然是行式公式的主要问题。由于基于分段的方法[27,19]中广泛使用的后聚类模块[4]不能直接集成到行式公式中,行式检测方法仍然采用多类分类策略进行车道实例判别。考虑到在准确性和效率方面令人印象深刻的性能,我们还采用了行式公式,并提出了一些新的策略来克服实例级歧视问题。
2.4.参数预测方法
与上述预测点的方法不同,参数预测方法直接输出由曲线方程表示的参数线。PolyLaneNet[31]首次提出使用深度网络回归车道曲线方程。LSTR[25]将变压器[37]引入车道检测任务,并获得420fps的检测速度。然而,参数预测方法在精度方面没有超过其他方法
3.方法
给定输入图像I∈ RC×H×W,我们CondlanNet的目标是预测车道L={l1,l2,…,lN}的集合,其中N是车道总数。通常,每个车道lk由一组有序的坐标表示,如下所示。
其中k是车道索引,Nk是第k车道的最大采样点数。
CondLaneNet的总体结构如图2所示。本节将首先介绍条件车道检测策略,然后介绍RIM(递归实例模块),最后详细介绍框架设计。
【图2.我们的CondlanNet框架的结构。主干网采用标准ResNet[8]和FPN[23]进行多尺度特征提取。为了更有效地提取上下文特征,增加了变换器编码器模块[37]。proposal head负责检测位于线路起点的proposal points。同时,预测了包含动态卷积核的参数映射。条件形状头预测行位置、垂直范围和偏移图,以描述每条线的形状。为了解决密集线和分叉线的情况,设计了RIM。】
3.1.条件车道检测
针对实例级识别能力,我们提出了基于条件卷积的条件车道检测策略,这是一种具有动态核参数的卷积运算[14,40]。条件检测过程[35,38]有两个步骤:实例检测和形状预测,如图3所示。实例检测步骤预测对象实例,并为每个实例回归一组动态内核参数。在形状预测步骤中,应用条件卷积来指定实例形状。该过程以动态内核参数为条件。由于每个实例对应于一组动态核参数,因此可以对形状进行实例智能预测。
【图3.条件实例分割和提出的条件车道检测策略之间的差异。我们的CondLaneNet检测车道线的起点以检测实例,并使用行公式来描述线条形状,而不是遮罩。重叠线可根据拟议的边缘进行区分,详见第3.2节。】
该策略在实例分割任务上取得了令人印象深刻的性能[35,38]。然而,直接将条件实例分割策略应用于车道检测是迟钝和不适当的。一方面,由于自由度过高,基于分割的形状描述对于车道线效率低下[30]。另一方面,由于边界和中心的视觉特性不明显,一般对象的实例检测策略不适用于细长和弯曲对象。我们的条件车道检测策略改进了形状预测和实例检测,以解决上述问题。
3.1.1形状预测
如图2所示,我们改进了行式公式[30]以基于条件形状头预测线形状。在行式公式中,我们预测每行的车道位置,然后根据线形状的优先级,将位置汇总,以从下到上的顺序获得车道线。我们的行式公式有三个部分:行式位置、垂直范围和偏移图。前两个输出是大多数行检测方法的基本元素[30,41]。此外,我们预测偏移图作为进一步细化的第三输出。
按行定位:如图4所示,我们将输入图像划分为形状为Y×X的网格,并预测相应的位置图,这是由提出的条件形状头输出的形状为1×Y×X特征图。在位置地图上,每行都有一个横坐标,表示车道线的位置。
【图4.解析位置图中的行位置和垂直范围的过程。】
要获得行位置,基本方法是处理每行中的X类分类。在推理时间中,通过选择每行中响应最快的横坐标来确定行方向位置。然而,一种常见情况是线路位置在两个栅格之间,两个栅格都应具有高响应。为了克服这个问题,我们引入以下公式。
对于每一行,我们预测车道线出现在每个网格中的概率:
其中i表示第i行,是位置图的第i行的特征向量,是第i行概率向量。
最后的行位置定义为预期横坐标:
其中E(ˆxi)是预期横坐标,pij是车道线在训练阶段通过坐标(j,i)的概率,应用L1损耗。
其中V表示标记线的垂直范围,Nv是有效行数。
垂直范围:垂直车道范围是通过逐行预测车道线是否穿过当前行来确定的,如图4所示。我们添加了一个线性层,并逐行执行二元分类。我们使用位置图中每行的特征向量作为输入。采用softmax交叉熵损失来指导训练过程。
其中vi表示第i行的预测正概率,是第i行基础真值。
偏移映射: 公式3中定义的行位置指向网格左侧顶点的横坐标,而不是精确位置。因此,我们添加偏移图来预测每行行位置附近水平方向上的偏移。我们使用L1损耗来约束偏移贴图,如下所示。
其中ˆδij和δij是坐标(j,i)上的预测偏移和标签偏移。我们定义Ω 作为具有固定宽度的车道线附近的区域。NΩ 是中的像素数Ω.
形状描述:每个输出车道线表示为一组有序的坐标。对于第k行,第i行的坐标(,)表示如下。
i ∈[, ],和分别是预测垂直范围的最小值和最大值,是的四舍五入,δ(·)是预测偏移。
3.1.2实例检测
我们为实例检测设计了建议头,如图2所示。对于一般条件实例分段方法[35,38],通过预测每个对象的中心,在端到端管道中检测实例。然而,很难预测细长曲线的中心,因为线中心的视觉特性不明显。
我们通过检测位于线路起点的建议点来检测车道实例。起点比中心具有更清晰的定义和更明显的视觉特征。我们遵循CenterNet[5],预测提案热图以检测提案点。为了限制提议的热图,我们采用角网[20]和中心网[5]之后的焦点损失。
其中Pxy是坐标(x,y)处的标签,而ˆPxy是提案热图坐标(x,y)处预测值。Np是输入图像中建议点的数量。
此外,我们根据CondInst[35]和SOLOv2[38]预测参数映射,回归动态核参数。参数映射的约束通过线形状上的约束构造。
3.2.循环实例模块
在上述提案头中,每个提案点都绑定到车道实例。然而,在实践中,多条车道线可能位于同一建议点,如岔道。为了处理上述情况,我们提出了递归实例模块(RIM)。
所提出的RIM结构如图5所示。基于LSTM(长期短期记忆)[9],RIM递归预测状态向量si和核参数向量ki。我们将si定义为表示两种状态的二维Logit:“继续”或“停止”。向量ki包含用于后续实例动态卷积的核参数。在推理阶段,RIM循环预测绑定到同一建议点的车道方向核参数,直到状态为“停止”。如图2所示,为每个提案点添加了RIM。因此,每个建议点可以指导多车道实例的形状预测。
【图5.循环实例模块。在该图中,h和c分别是短期记忆和长期记忆,f是输入特征向量,s是输出状态logit,k是输出核参数向量】
我们采用交叉熵损失来约束状态输出,如下所示。
其中,si是第i个状态的softmax运算的输出,结果yi第第i个状态的基本事实,Ns是一批中状态输出的总数。
在培训阶段,总损失定义如下。
超参数α、β、γ和η分别设置为1.0、1.0,0.4和1.0。
3.3.架构
总体架构如图2所示。我们采用ResNet[8]作为主干,并添加标准FPN[23]模块,以提供集成的多尺度功能。提案头通过预测形状为1×Hp×Wp的提案热图来检测车道实例。同时,预测了包含动态核参数的形状Cp×Hp×Wp的参数图。对于提案点位于(xp,yp)的情况,相应的动态核参数包含在参数映射图上的(xp、yp)处的Cp维核特征向量中。此外,给定核特征向量,RIM递归地预测动态核参数。最后,条件形状头根据动态核参数即时预测线形状。
我们的框架需要强大的contextfeature融合能力。例如,建议点的预测基于整个车道线的特征,通常具有细长形状和长距离。因此,我们在主干的最后一层添加了变压器编码器结构,用于融合上下文信息。我们在编码器层保留二维空间特征,并使用卷积进行特征提取。我们框架中使用的变压器编码器的结构如图6所示。
【图6变压器编码器的结构。⊕, 和⊗ 分别表示矩阵加法、点积运算和元素级积运算。】
4. 实验
4.1 实验设置
4.1.1数据集
为了广泛评估所提出的方法,我们在三个基准上进行了实验:CurveLanes[39]、CULane[28]和TuSimple[36]。曲线是最近提出的复杂拓扑情况的基准,如分叉线和密集线。CULane是一个广泛使用的大型车道检测数据集,具有9种不同的场景。TuSimple是另一个广泛使用的高速公路驾驶场景数据集。三个数据集的详细信息如表1所示。
4.1.2评价指标(略)
4.1.3实现细节
我们为所有三个数据集修复了CondlanNet的大、中、小版本。三个模型之间的差异如表2所示。对于所有三个数据集,在训练和测试期间,输入图像的大小调整为800×320像素。由于CULane和TuSimple中没有分叉线的情况,因此RIM仅适用于曲线数据集。在优化过程中,我们使用Adam优化器[18]和步进学习率衰减[26],初始学习率为3e-4。对于每个数据集,我们在训练集上进行训练,不需要任何额外数据。我们分别为CurveLanes、CULane和TuSimple训练了14、16和70个时期,批次大小为32。结果在CULane与TuSimple的测试集上报告。对于曲线,我们报告了曲线[39]之后验证集的结果。所有的实验都是在带有RTX2080 GPU的机器上计算的。
4.2 结果
图7显示了曲线、CULane和TuSimple数据集的可视化结果。结果表明,我们的方法可以处理复杂的线拓扑。即使对于密集线和分叉线的情况,我们的方法也可以成功地区分实例。
CurveLanes的比较结果如表3所示。CurveLanes包含具有复杂拓扑结构的曲线,如曲线、分叉和密集车道。我们的CondLaneNet大型版实现了最新的F1分数86.10,比Curvelane-L高4.63%。我们的小型CondLaneNet的F1成绩仍为85.09(比SOTA高3.40%)。由于我们的模型可以处理岔道和密集车道线的情况,召回指标有显著改进。相应地,假阳性结果将增加,导致精度指标降低。
表4显示了我们的Condlanet和其他最先进的方法在CULane上的结果。我们的方法实现了新的最先进结果,即79.48F1分数,增加了3.19%。此外,我们的方法在九个sce narios中的八个中实现了最佳性能,显示了对不同场景的鲁棒性。对于一些困难的情况,如曲线和夜间,我们的方法具有明显的优势。此外,我们的Cond LaneNet的小型版本获得了78.14 F1分数,速度为220 FPS,比LaneA TT-L高1.12倍和8.5倍。与LaneA TT-S相比,CondLaneNet-S的F1评分提高了4.01%,效率相似。在CULane的大多数场景中,我们的CondLaneNet的小版本超过了F1度量中所有以前的方法。
Tusimple在Tusimple上的结果如表5所示。相对而言,该数据集上不同方法之间的差距较小,这是因为数据量较小,场景较多。我们的方法获得了97.24的最新F1分数。此外,我们的方法的小版本以220 FPS获得97.01 F1分数。
4.3.改进策略的消融研究
我们基于CondLaneNet的小版本对曲线数据集进行了消融实验。
比较前两行,我们可以看到,所提出的条件车道检测策略显著提高了性能。比较第二行和第三行、第四行和第五行的结果,我们可以看到偏移图的积极效果。此外,变压器编码器在我们的框架中起着至关重要的作用,这可以通过比较第二行和第四行、第三行和第五行来表示。此外,为分叉线和密集线设计的轮辋也提高了精度
4.4变压器编码器烧蚀研究
本节进一步分析了变压器编码器的功能,表明其在先前的实验中发挥了重要作用。我们的方法首先通过检测建议点来检测实例,然后预测每个实例的形状。建议点的精度极大地影响车道线的最终精度。我们设计了不同的控制组,以比较曲线上建议点和车道线的准确性。我们将位于地面真值点的八个邻域中的建议点定义为真正样本。考虑到RIM的功能,对应于多条线的建议点被视为多个不同的建议点。我们报告了提案点和车道线的F1分数,如表7所示。
第一行显示标准CondlanNet的小型、中型和大型版本的结果。在第二行中,变压器编码器被移除。在第三行中,我们通过用标准模型(第一行)输出的提案热图替换提案热图来破解第二行的推理过程。对于小型版本,移除编码器会导致提案点和车道的显著下降。然而,使用标准模型的建议热图,第三行的结果接近第一行。
以上结果证明,编码器的功能主要是改进提案点的检测,提案点依赖于上下文特征和全局信息。此外,在更深的网络中,上下文特征可以更充分地细化。因此,对于中型和大型版本,编码器的改进远远小于小型版本。
5.结论
在这项工作中,我们提出了CondLaneNet,一种新的自上而下车道检测框架,该框架首先检测车道实例,然后对形状进行实例智能预测。为了解决实例级识别问题,我们提出了基于条件卷积和行公式的条件车道检测策略。此外,我们设计了RIM以应对复杂的车道线拓扑,如密集线和分叉线。我们的CondlanNet框架刷新了CULane、CurveLanes和TuSimple的最先进性能。此外,在CULane和CurveLanes上,我们的CondLaneNet的小型版本不仅在精度上超过了其他方法,而且还提供了实时效率