车道线检测论文精度CVPR2022--CLRNet: Cross Layer Refinement Network for Lane Detection

原文地址:https://openaccess.thecvf.com//content/CVPR2022/papers/Zheng_CLRNet_Cross_Layer_Refinement_Network_for_Lane_Detection_CVPR_2022_paper.pdf


摘要: 

        车道线是智能车辆视觉导航系统中的关键.车道是一个具有高级语义的交通标志,但它具有特定的局部模式,需要详细的底层特征来准确定位。使用不同的特征水平是非常重要的确定车道线位置的方法,但它仍然是欠探索.在这项工作中,我们提出了跨层细化网络(CLRNet),旨在充分利用高层次和低层次的车道检测功能。特别是,它首先检测具有高级语义特征的车道,然后基于低级特征进行细化。通过这种方式,我们可以利用更多的上下文信息来检测车道,同时利用本地详细的车道特征来提高定位精度。我们提出了ROIGather收集全局上下文,这进一步增强了车道的特征表示。除了我们的新的网络设计,我们引入线IoU损失回归车道线作为一个整体单位,以提高定位精度。实验结果表明,该方法大大优于现有的车道检测方法。

介绍:

        得益于CNN的有效特征表示,许多方法[17,19,33]已经获得了有希望的性能。然而,对于检测准确的车道仍然存在一些挑战。Lane具有高层语义,但它具有特定的局部模式,需要详细的底层特征来精确定位。如何在CNN中有效地利用不同的特征层次是一个亟待解决的问题。正如我们可以看到的图。在图1(a)中,地标和车道线具有不同的语义,但是它们共享相似的特征(例如,长长白色)。如果没有高级语义和全局上下文,很难区分它们。另一方面,由于lane长而细,局部格局简单,局部性也很重要。我们在图1(B)中示出了高级特征的检测结果,尽管检测到车道,但其位置并不精确。因此,低级和高级信息对于准确的车道检测是互补的。先前的工作要么对车道的局部几何形状进行建模并将其集成到全局结果中[20],要么构建具有全局特征的全连接层来预测车道[19]。这些检测器已经证明了局部或全局特征对于车道检测的重要性,但是它们没有利用这两个特征,从而产生不准确的检测性能。  

        车道检测中的另一个常见问题是没有车道存在的视觉证据。如图所示。1(c),车道被汽车占用,而在图1(c)中,车道被汽车占用。图1(d)中,由于极端照明条件,车道难以识别。在文献中,SCNN [17]和RESA [33]提出了一种消息传递机制来收集全局上下文,但这些方法执行逐像素预测并且不将车道作为一个整体单元。因此,它们的性能落后于许多最先进的探测器。

        在本文中,我们提出了一个新的框架(CLRNet),它充分利用车道的低层次和高层次特征检测车道。具体来说,我们首先检测高语义特征,粗略的定位车道的大致位置。然后,我们进行细化的基础上,精细的细节特征,以获得更精确的位置。逐步细化车道的位置和特征提取导致高精度的检测结果。为了解决车道的非视觉证据的问题(车道线被遮挡),我们引入ROIGather捕获更多的全局上下文信息,通过建立ROI车道特征和整个特征图之间的关系。此外,我们定义了车道线的IoU,并提出了线IoU(LIoU)损失,以将车道作为一个整体单元进行回归,并与标准损失(即,平滑-L1损失。

本文方法:

        车道是细而长的,具有强的形状先验,因此预定义的车道先验可以帮助网络更好地定位车道。在常见的对象检测中,对象由矩形框表示。然而,方框不适合表示长线。在[8]和[24]之后,我们使用等间距的2D点作为车道表示。P = {(x1,y1),· · ·,(xN,yN)},点的y坐标通过图像垂直地等距离采样,即, Yi=\frac{H}{N-1}*i,其中H是图像高度。因此,X坐标与相应的yi ∈ Y相关联。在我们的论文中,我们称这种表示车道先验知识(车道先验)的表示。每个车道先验将由网络预测,并且由四个分量组成:(1)前景和背景概率。(2)车道长度指针。(3)车道线的起点和先前车道的x轴之间的角度(称为x、y和θ)。(4)N个偏移,即,预测点与其真值点之间的水平距离。

        在神经网络中,深层高级特征强烈响应具有更多语义的完整对象,而浅层低级特征具有更多的局部上下文信息。允许车道对象访问高级特征可以帮助利用更有用的上下文信息,例如,以区分车道线或地标。与此同时,精细细节功能有助于以高定位精度检测车道。在对象检测[9]中,它构建特征金字塔以利用ConvNet特征层次结构的金字塔形状,并将不同尺度的对象分配给不同的金字塔级别。然而,很难直接将车道分配给仅一个级别,因为高级和低级特征对于车道都是关键的。受Cascade RCNN [3]的启发,我们可以将车道对象分配到所有级别,并顺序地检测车道。特别地,我们可以检测具有高级特征的车道以粗略地定位车道。基于检测到的车道,我们可以用更详细的特征来细化它们。

        我们的目标是利用ConvNet的金字塔特征层次结构,它具有从低到高的语义,并构建一个具有高层次语义的特征金字塔。我们将ResNet作为主干,并使用{L0,L1,L2}表示由FPN生成的特征级别。如图2,我们的跨层细化从最高级别L0开始,并逐渐接近L2。我们使用{R 0,R1,R2}来表示相应的细化。然后我们可以建立一个细化序列:Pt = Pt−1 ◦ Rt(Lt−1,Pt−1),Pt是车道先验的参数(起始点坐标x、y和角度θ),

 对于第一层L0,P0均匀地分布在图像平面上。细化Rt将Pt作为输入以得到ROI通道特征,然后执行两个FC层以得到细化参数Pt。逐步细化车道先验和特征提取对于跨层细化的成功是重要的。请注意,我们的方法不限于FPN结构,仅使用ResNet [6]或采用PAFPN [14]也是合适的。  

 ROIGather  

        在我们为每个特征地图分配车道先验之后,我们可以使用ROIALIGN [5]获得车道先验的特征。然而,这些特征的上下文信息仍然是不够的。在一些情况下,车道实例可能被极端照明条件占用或模糊。为了确定像素是否属于车道,我们需要查看附近的特征。最近的一些研究[27,32]也表明,如果充分利用车道线完整长度依赖关系,可以提高性能。因此,我们可以收集更多有用的上下文信息,以更好地学习车道特征。为此,我们沿着通道先验添加卷积。以这种方式,车道先验中的每个像素可以收集附近像素的信息,并且可以根据该信息来加强被占用的部分。此外,我们建立车道先验和整个特征图之间的关系。因此,它可以利用更多的上下文信息来学习更好的特征表示。

ROICather模块重量轻,易于实现。它以特征图和车道先验作为输入,每个车道先验有N个点。对于每个车道先验,我们遵循ROIallign [5]以获得车道先验的ROI特征(Xp ∈ RC×Np)。与用于边界框的ROIlign不同,我们从车道之前均匀采样Np个点,并使用双线性插值来计算在这些位置的输入特征的确切值。对于L1、L2的ROI特征,我们连接先前层的ROI特征以增强特征表示。对提取的ROI特征执行卷积以收集每个通道像素的附近特征。为了节约内存,我们使用全连接算法进一步提取车道先验特征(Xp ∈ RC×1)。特征映射的大小调整为Xf ∈R^{c*h*w},并展平为Xf ∈ R^{c*h*w}

为了收集通道先验特征的全局上下文,我们首先计算ROI通道先验特征(Xp)和全局特征图(Xf)之间的注意力[27]矩阵w,其被写为:

                                                       \mathcal{W}=f\left(\frac{\mathcal{X}_p^T \mathcal{X}_f}{\sqrt{C}}\right)

f表示归一化函数,整合后的特征被表示为:\mathcal{G}=\mathcal{W} \mathcal{X}_f^T,输出G反映了Xf对Xp的奖励,Xp是从Xf的所有位置中选择的。最后,我们将输出添加到原始输入Xp。

Line IoU loss

        如上所述,车道先验由需要与其真值回归的离散点组成。常用的距离损失(如smooth-L1)可用于回归这些点。然而,这种损失将点作为单独的变量,这是一个过于简化的假设[31],导致回归不太准确。与距离损失相比,联合交叉单元(IoU)可以将车道先验作为一个整体单元进行回归,并且它是针对评估度量[21,31,34]而定制的。在我们的工作中,我们推导出一个简单有效的算法来计算线IoU(LIoU)损失。

        我们从线段IoU的定义开始引入Line IoU损失,这是两条线段之间的交互作用与并集的比率。对于如图3所示的预测车道中的每个点。我们首先将它(x_i^p)以半径e延伸成线段。然后,IoU可以在延伸线段和其地面真值之间计算,其写为:I o U=\frac{d_i^{\circ}}{d_i^\mu}=\frac{\min \left(x_i^p+e, x_i^g+e\right)-\max \left(x_i^p-e, x_i^g-e\right)}{\max \left(x_i^p+e, x_i^g+e\right)-\min \left(x_i^p-e, x_i^g-e\right)}.

其中x_i^p-e, x_i^p+ex_i^p的扩展点,x_i^g-e, x_i^g+e是相应的地面真值点。注意,d_i^{\mathcal{O}}可以是负的,这可以使得在非重叠线段的情况下优化是可行的。

那么,LIoU可以被认为是无限线点的组合。为了简化表达式并使其易于计算,我们将其转换为离散形式,L I o U=\frac{\sum_{i=1}^N d_i^{\mathcal{O}}}{\sum_{i=1}^N d_i^{\mathcal{U}}},\mathcal{L}_{L I o U}=1-L I o U。我们的线路IoU损失具有两个优势:(1)它简单可微,易于实现并行计算。(2)它将车道作为一个整体进行预测,这有助于提高整体性能。

训练及细节

        在训练期间,每个地面实况车道被动态地分配一个或多个预测车道作为正样本。特别地,我们首先基于分配成本对预测的车道进行排序,其被定义为:\begin{aligned} \mathcal{C}_{\text {assign }} & =w_{\text {sim }} \mathcal{C}_{\text {sim }}+w_{\text {cls }} \mathcal{C}_{\text {cls }} \\ \mathcal{C}_{\text {sim }} & =\left(\mathcal{C}_{\text {dis }} \cdot \mathcal{C}_{x y} \cdot \mathcal{C}_{\text {theta }}\right)^2 \end{aligned}

这里Ccls是预测和标签之间的焦点成本[10]。Csim是预测车道和地面实况之间的相似性成本。它由三部分组成,Cdis表示所有有效车道点的平均像素距离,Cxy表示起点坐标的距离,Ctheta表示θ角的差,它们都被归一化为[0,1]。WCLS和WSIM是每个定义的分量的权重系数。每个地面实况车道被分配有基于C分配的动态数量(前k个)的预测车道。

训练损失包括分类损失和回归损失。仅对指定的样本执行回归损失。总损失函数定义为:

\mathcal{L}_{\text {total }}=w_{\text {cls }} \mathcal{L}_{\text {cls }}+w_{\text {xytl }} \mathcal{L}_{x y t l}+w_{L I o U} \mathcal{L}_{L I o U}.

我们设置了一个具有分类分数的阈值来过滤背景车道(低分数泳道先验),并且我们使用nms非极大值抑制来去除高度重叠的车道[24]。如果我们使用一对一赋值,我们的方法也可以是无nms的,即,设置top-k = 1。

实验:

        数据集:LLAMAS数据集是一个比较新的数据集,也是具有超过100k图像的大规模车道检测数据集。LLAMAS中的车道标记会自动标注高精度地图。由于测试集的标签是不公开的,我们将检测结果上传到LLAMAS基准测试的网站进行测试。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值