西安交通大学提出少锚点的端到端车道线检测算法Polar R-CNN

文摘   2024-11-07 07:05   美国  

Abstract

车道线检测在自动驾驶中是一个关键且充满挑战的任务,特别是在实际场景中,由于车道线可能因其他车辆而被遮挡、形状纤细且长度较长,检测难度增大。现有基于锚点的检测方法通常依赖于预设的锚点来提取特征,并随后对车道线的位置和形状进行优化。然而,这些方法依赖手动设置锚点的方式繁琐,且为了适应不同的数据集通常需要大量密集的锚点。此外,为消除冗余预测而使用的非极大值抑制(NMS)在复杂场景中效果有限,影响实际部署。本文提出了一种新颖的基于锚点的车道检测方法Polar R-CNN。通过引入局部和全局极坐标系统,Polar R-CNN可以灵活地生成锚点,并显著减少锚点数量,同时保持性能。此外,我们设计了一个三重检测头,结合启发式结构支持无NMS的检测模式,在车道线密集的场景中增强了部署效率和性能。实验结果表明,Polar R-CNN在Tusimple、CULane、LLAMAS、CurveLanes和DL-Rail五个主流数据集上均达到了具有竞争力的性能,且具有轻量化设计和简化结构。

代码获取:https://github.com/ShqWW/PolarRCNN

 欢迎加入自动驾驶实战群

Introduction

车道线检测是一项重要的计算机视觉任务,尤其是在自动驾驶领域,目的是识别和跟踪道路上的车道线。尽管理想环境下的检测取得了显著进展,但在夜间驾驶、眩光、拥堵和雨天等恶劣条件下仍具挑战,车道线可能被遮挡或受损。此外,车道线形状细长且拓扑结构复杂,也增加了检测难度。

方法概述

传统车道检测主要依赖手工特征提取和车道形状建模,使用方法包括Canny边缘检测、霍夫变换和可变形模板等,但这些方法在低清晰度或特征不明显的场景下表现不佳。近年来,深度学习技术的进步使得基于卷积神经网络(CNN)和Transformer结构的深度模型在车道检测中获得了显著成功。然而,尽管分割类和参数化模型提供了端到端解决方案,但它们对车道形状的敏感性影响了鲁棒性。

基于目标检测模型(如YOLO、Faster R-CNN)的锚点方法被引入车道检测领域。代表性方法包括LaneATT和CLRNet,通过预定义锚点和扩大特征提取视野,锚点方法在性能上取得了优势,但存在以下缺点:

需要大量的锚点覆盖不同的车道分布,导致冗余锚点;
使用NMS消除冗余预测,但在车道线密集的场景中效果不佳,尤其在分叉或多车道情况下。

解决方案:Polar R-CNN

为了解决上述问题,本文提出了Polar R-CNN方法:

局部极坐标模块:基于极坐标系统生成精确的锚点位置,减少了在稀疏场景中所需的锚点数量。与现有方法(如CLRNet)使用的192个锚点相比,Polar R-CNN只需20个锚点即可有效覆盖车道真值。

三重检测头及图神经网络(GNN)模块:为避免NMS后处理,设计了基于图神经网络的检测结构,实现了NMS自由的检测流程,适用于稀疏和密集场景下的车道线检测。

高效的端到端训练:结合极坐标系统和NMS自由检测模式,Polar R-CNN实现了快速且高效的车道线检测。通过在五个主流数据集上的实验验证,该方法在使用更少锚点和无NMS模式下,仍能保持高性能表现。

3.Polar R-CNN

olar R-CNN的整体架构如图3所示。该模型在车道检测中的流程与Faster R-CNN 类似,包括一个骨干网络、特征金字塔网络(FPN)、作为区域提议网络(RPN)的局部极坐标模块(LPM)、以及作为感兴趣区域(RoI)池化模块的全局极坐标模块(GPM)。接下来,我们将首先介绍极坐标下的车道锚表示方式,然后详细描述在Polar R-CNN中设计的LPM和GPM。

A. 车道和车道锚的表示方式

车道通常具有纤细、细长和弯曲的形状。良好的车道先验信息有助于模型进行特征提取和位置预测。

作为射线表示的车道和车道锚。给定宽度为W、高度为H的输入图像,车道可由一组2D点 表示,这些点的y坐标等距分布,即,其中N为数据点的数量。由于y坐标是固定的,因此一个车道可以通过其x坐标唯一确定。先前的研究引入了车道先验(即车道锚),这些锚在图像平面上表现为直线,并作为参考。从几何角度来看,车道锚可以看作是由起点和方向定义的射线。车道检测模型的主要任务是估计从车道锚到车道实例真实位置的x坐标偏移量。

然而,将车道锚表示为射线会带来一些限制,尤其是车道锚的起点可能有无限多个,这使得其定义变得模糊和主观。如图4(a)所示,先前的研究将起点定义为图像的边界,如图4(a)中的绿色点;而[15]中的研究则将起点定义为其在图像中的实际可见位置(如图4(a)中的紫色点)。此外,车道的遮挡和损坏会显著影响这些起点的检测,要求模型具备较大的感受野。基本上,在笛卡尔坐标系下,一条直线仅有两个自由度:斜率和截距,这意味着可以通过两个参数而非射线表示中的三个冗余参数(即两个起点参数和一个方向参数)来描述车道锚。

极坐标表示。如上所述,使用射线表示的车道锚点存在一些缺陷。为了解决这些问题,我们引入了车道锚点的极坐标表示。在数学中,极坐标是一个二维坐标系统,其中平面上的每个点由与参考点(即极点)的距离和与参考方向(即极轴)的夹角θ来确定。图4(b)显示,给定黄色点对应的极点后,可以通过两个参数唯一地定义一条直线的车道锚点:极点的径向距离r和从极轴到车道锚点垂线的逆时针角度θ,其中

为了更好地利用CNN的局部归纳偏置特性,我们定义了两种类型的极坐标系统:局部极坐标系统和全局极坐标系统。局部极坐标系统用于生成车道锚点,而全局极坐标系统则在整个图像中表达这些锚点并将它们回归到真实的车道实例。鉴于局部和全局系统的不同作用,我们为Polar R-CNN采用了类似于Faster R-CNN 的两阶段框架。

局部极坐标系统旨在预测适用于稀疏和密集场景的车道锚点。在该系统中,极点分布在特征图的格点上,称为局部极点。如图5左侧所示,局部极点分为正极点和负极点。正极点(即蓝点)的半径小于阈值,否则被分类为负极点(即红点)。每个局部极点负责预测一个车道锚点。虽然一个真实的车道可能生成多个车道锚点(如图5所示),绿色车道实例周围有三个正极点,预计生成三个车道锚点。

在局部极坐标系统中,每个车道锚点的参数基于其对应局部极点的位置。然而,在实际操作中,一旦生成车道锚点,其确切位置就变得不可更改且与其原始局部极点无关。为了简化Polar R-CNN第二阶段中车道锚点的表示,设计了一个全局极坐标系统,具有唯一的极点作为整个图像的参考点。该全局极点的位置是手动设定的,位于整个车道图像数据集中观察到的静态消失点附近。这种方法确保了在图像的全局上下文中使用一致的极坐标来表达车道锚点,从而方便了对真实车道实例的精确回归。

B. 局部极坐标模块(LPM)

如图3所示,通过特征金字塔网络(FPN)提取了三个层级的特征图,分别记作 。为了在图像中生成高质量的车道锚点,提出了局部极坐标模块(LPM),它将最高层级的特征图 作为输入,并输出一组车道锚点及其置信得分。如图6所示,它首先通过下采样操作生成尺寸为的低维特征图 :

然后将下采样后的特征图输入到两个分支:回归分支和分类分支 ,即:

回归分支包括单个1×1的卷积层,其目标是生成车道锚点,通过输出它们的角度 和半径,即 ,这些量定义在之前介绍的局部极坐标系统中。同样,为了简化,分类分支 仅由两个1×1卷积层组成,用于预测局部极点的置信热图 ,每个局部极点都与一个特征点相关联。通过丢弃低置信度的局部极点,该模块有效提高了选中潜在正前景车道锚点的可能性,同时剔除了背景锚点。

LPM的损失函数。为训练LPM,我们为每个局部极点定义了以下标签:将每个局部极点到对应车道曲线的最小距离作为真实半径 ,并将局部极点到最近曲线点的向量方向作为真实角度。因此,得到局部极点的标签集 ,其中当第j个局部极点为正时 ,为负时。一旦建立了回归和分类标签,如图5所示,LPM可以使用回归分支的SmoothL1损失 和分类分支的二元交叉熵损失 进行训练。LPM的损失函数如下:

其中 表示LPM中正极点的数量。

Top-K锚点选择。如上所述,在训练阶段,所有的锚点(与特征图中的每个局部极点相关)都被考虑为候选者。然而,其中一些锚点只是背景锚点。我们选择置信度最高的K个锚点作为前景候选者输入到第二阶段(即全局极坐标模块)。在训练过程中,所有锚点都作为候选项,其中 。这有助于全局极坐标模块(即第二阶段)学习包括各种负背景锚点样本的多样化特征。相反,在评估阶段,可以排除一些低置信度的锚点,使。这种策略有效过滤了潜在的负锚点,降低了第二阶段的计算复杂度。在稀疏场景中,通过这种方式维持锚点分布的适应性和灵活性,同时减少了锚点的总数。接下来的实验将展示不同Top-K锚点选择策略的有效性。

C. 全局极坐标模块

我们提出了一个新颖的全局极坐标模块(Global Polar Module, GPM)作为第二阶段来实现最终车道线预测。如图3所示,GPM从LPM(局部极坐标模块)提出的锚点采样特征,并提供最终车道线检测结果的精确位置和置信分数。GPM的总体架构如图7所示。从图中可以看到,它包含两个组件:一个ROI池化层(RoI Pooling Layer)和一个三重头部(triplet head),具体细节如下所述。

RoI池化层。此层设计用于从特征图中对车道线锚点进行特征采样。为便于采样操作,我们首先将局部极坐标中的正车道线锚点的半径转换为等效的全局极坐标系统中的半径,具体转换公式如下所示:

其中,分别表示全局极点和第j个局部极点的笛卡尔坐标。值得注意的是,角度 保持不变,因为局部和全局极坐标系统共用相同的极轴。接下来,对每个车道线锚点的特征点进行采样,具体如下:

其中,第j个车道线锚点的y坐标从图像上垂直均匀采样,如前所述。公式(6)和公式(7)的证明见附录A。然后,第j个车道线锚点的坐标可以表示为

给定来自FPN(特征金字塔网络)的不同层级特征图,我们可以分别提取每个位置的通道特征,并得到的通道特征,分别记为。为了增强表示能力,我们借鉴文献[16]中的加权和策略,将三个层级的特征组合在一起,具体如下:

其中,代表分配给N个采样点的可训练聚合权重,符号“◦”表示逐元素相乘(即Hadamard积)。我们并未直接将三层采样特征级联成,而是采用自适应求和的方法,将特征维度显著降低至,是初始维度的三分之一。张量的加权和被展平为向量,并通过线性变换整合:

其中,用于进一步降低集成特征的维度,从而得到最终的RoI特征,随后输入至三重头部。

三重头部。车道线检测头用于基于RoI池化特征对LPM生成的车道线锚点进行分类和回归。众所周知,传统的车道线检测头通常配备一个一对多(O2M)分类子头和一个一对多(O2M)回归子头。然而,一对多机制(即,一个真值对应多个候选项)会导致每条车道线生成冗余预测,从而需要NMS(非极大值抑制)后处理操作。然而,NMS不可微且非端到端,这导致了手动设置超参数的挑战,并且性能可能不佳。为实现端到端学习且无需NMS后处理,我们提出了一种用于车道线检测的三重头模块。

如上图所示,三重头部包含三个组件:O2M分类、O2M回归和另一个一对一(O2O)分类。每个车道线锚点的特征分别被送入上述三个子头中。为了保持简洁和高效,O2M分类和O2M回归子头均通过两个多层感知机(MLP)应用于,然后O2M分类子头生成置信分数,O2M回归子头为每个车道线锚点生成x坐标偏移。关于O2M分类和O2M回归子头的更多细节可参考。
O2O分类子头被引入以在无NMS的范式中生成非冗余车道线候选项。然而,直接使用一对一策略(即,针对每个真实车道线分配一个正锚点)基于提取的特征会损害模型的学习。因此,提出的O2O分类子头同时考虑了O2M分类子头的置信度先验和极坐标参数的空间几何先验(即角度θ和半径r),并应用这些先验来自适应地优化车道线锚点特征,从而生成优化后的车道线锚点特征
结构设计灵感来自Fast NMS,更详细的信息请参见附录B。具体来说,O2O分类子头首先计算第i个锚点与其x坐标和第j个锚点与其x坐标之间的语义距离,如下所示:

其中,表示第i个预测与第j个预测之间的隐含语义距离。ReLU是ReLU激活函数,MLPedge表示一个两层的MLP算子,是待训练的模型参数。然而,基于上述语义距离进行真值实例的一对一分配仍然困难,因为某些分叉锚点可能具有相似的距离。为了增加锚点间的语义距离差异,我们需要抑制相似或重叠锚点的特征。基于此,我们设计了一个邻接矩阵,定义如下:

其中⊙表示逐元素相乘,分别是置信度先验邻接矩阵和几何先验邻接矩阵。置信度先验邻接矩阵

这里,和是分别对应第i和第j车道线锚点的置信分数,由O2M分类子头预测。根据公式(14),的作用是使具有较高置信分数的车道线锚点抑制那些置信分数较低的锚点。为了利用几何先验,并基于极坐标表示(即全局极坐标半径和角度θ),我们进一步引入几何先验邻接矩阵

其中和  是用于测量几何距离的阈值。基于几何先验和置信度先验邻接矩阵的定义,整体邻接矩阵 A可以视为一个有向图,每个车道锚点作为一个节点,RoI特征作为输入特征。具体来说,如果邻接矩阵 A中的元素  等于1,那么就存在从第 i个锚点指向第 j个锚点的有向边,这意味着在第 i 个锚点的置信分数高于第 j 个锚点且其几何距离足够小(即小于预设的阈值)时,第 j 个锚点可能会被第 i 个锚点抑制。

通过考虑邻接矩阵 A 引发的车道锚点的抑制效应,车道锚点特征 可以从语义距离张量中进一步优化如下:

其中 是沿着邻接矩阵 A 的第 j 列且元素位置的逐元素最大池化算子。这一方法的灵感来源于现有的工作[,旨在从可能抑制优化后的车道锚点的车道锚点中提取最具区别性的特征。利用优化后的锚点特征,最终的O2O分类子头的置信分数通过一个三层的MLP生成:

如上所述,O2O分类子头由公式(10)-(17)构成,这可以被视为一种由神经网络驱动的有向图结构,被称为图神经网络(GNN)模块。

无NMF的双重置信度选择。借助邻接矩阵 A,语义特征  之间的差异性被放大,从而在O2O分类子头生成的置信度分数中产生了显著的差距,使它们更易于区分。因此,与传统方法不同,我们无需将O2M分类子头获得的置信度分数 输入到NMS后处理阶段来去除冗余候选项,而是实施了以下双重置信度选择标准来选择正样本锚点:

其中和是两个置信度阈值。该可以在没有NMS后处理的情况下允许非冗余的正样本预测,因为O2O分类子头增强了相似锚点之间的置信度分数差异,使其对两个置信度阈值的敏感度降低。

GPM的损失函数。在获得O2O分类子头的正样本候选集  后,应用匈牙利算法进行标签分配,即正样本锚点与真实实例之间的单一对应分配。对于O2M分类和O2M回归子头,我们使用与SimOTA相同的方法进行标签分配。更多关于标签分配和代价函数的细节见附录C和D。在训练中,分别对O2O分类子头和O2M分类子头应用了Focal损失,分别记为  和 。此外,我们采用了排名损失  以扩大O2O分类子头正负置信度之间的差距。请注意,在训练阶段我们停止O2O分类子头的梯度流,以保证RoI特征学习的质量。

为了训练O2M回归子头,我们重新定义了GIoU概念(更多细节参见附录C),并采用了GIoU损失 来回归每个正样本车道锚点的x坐标偏移 。车道的端点则使用SmoothL1损失进行训练。此外,我们提出了一种辅助损失 以促进全局特征的学习。如图8所示,锚点和真实值被划分为若干段,每个锚点段被回归到对应真实值段的主要成分。辅助损失帮助检测头更深层次地理解全局几何结构,在评估阶段去掉辅助回归分支。最终,GPM的分类损失和回归损失 如下所示:

其中  是用于调整不同损失项影响的常数权重。

D. 总体损失函数

结合两阶段损失,总体损失函数定义如下:

其中用于训练第一阶段LPM的分类和回归参数,用于训练第二阶段GPM的相关参数。

IV. 实验

1. 与最新方法的比较

表 I、II、III、IV 和 V 显示了我们提出的模型与其他方法的比较结果。我们展示了两种版本的模型结果:基于 NMS 的版本(记为 Polar R-CNN-NMS)和无需 NMS 的版本(记为 Polar R-CNN)。NMS 版本使用 O2M 头部得到的预测经过 NMS 后处理,而无需 NMS 的版本则通过双置信度选择来获得预测结果。

为了确保公平对比,我们在CULane和CurveLanes数据集上也包含了CLRerNet 的结果,因为我们使用了相似的训练策略和数据集划分。比较结果显示,我们的模型在五个数据集上均表现出较强的竞争力。具体而言,在CULane、TuSimple、LLAMAS和DL-Rail这些稀疏场景数据集上,我们的模型优于其他基于锚点的方法。此外,无NMS版本的性能几乎与基于NMS的版本相同,这突显了O2O分类子头在稀疏场景中去除冗余预测的有效性。在CurveLanes数据集上,无NMS版本的F1值和召回率优于其他方法。

我们还对比了锚点数量和处理速度。图9展示了多个基于锚点的方法在CULane数据集上使用的锚点数量。我们提出的模型仅使用了最少的提议锚点(20个),同时在CULane上实现了最高的F1分数。它在竞争上不逊色于像CLRerNet这样使用192个锚点并应用跨层优化的先进方法。而使用同样20个锚点的稀疏型Laneformer则未达到最佳表现。需要注意的是,我们的模型设计结构更为简单,没有复杂的跨层优化组件,这表明灵活锚点在极坐标下对稀疏场景中性能提升的关键作用。此外,由于其简单的结构和较少的锚点,我们的模型比大多数方法具有更低的延迟,如图10所示。

2. 消融研究

为了验证和分析 Polar R-CNN 不同组件的有效性和影响,我们在 CULane 和 CurveLanes 数据集上进行了多项消融研究。

关于极坐标系统和锚点数量的消融研究。为了评估局部极坐标对锚点的重要性,我们分析了每个组件(即角度和半径)对模型性能的贡献。表 VI 显示了角度和半径参数对性能的不同程度的影响。此外,我们在两种锚点提案策略下进行实验,即“固定”锚点和“动态”锚点。“固定”表示由 CLRNet 训练的固定锚点配置(192 个锚点)。而“动态”则指由 LPM 提出的锚点(20 个锚点)。实验结果显示,在固定锚点配置下模型性能提高了 0.48%,在动态锚点配置下提高了 0.3%。此外,LPM 提出的灵活锚点方案在使用较少锚点的情况下实现了更优的性能。

在稀疏场景中的 NMS-free 模块消融研究。我们在 CULane 数据集上进行了多项实验,以评估 NMS-free 模块在稀疏场景下的性能。表 VII 显示了如果不使用 GNN 建立锚点之间的关系,即使采用一对一分配,Polar R-CNN 也无法实现 NMS-free 模式。此外,置信度优先的邻接矩阵 ACA_CAC 也证明了 O2M 置信度得分在 NMS-free 模式中的重要性。其他组件(如几何优先的邻接矩阵 AGA_GAG 和排序损失)也对 NMS-free 块的性能起到了一定的作用。

为了比较 NMS-free 与传统 NMS 模式,我们在“动态”锚点和“固定”锚点策略下对 NMS-free 块进行了实验。表 VIII 展示了这些实验结果。“O2M”表示 NMS(图 7 中灰色虚线路径),而“O2O”表示 NMS-free 模式(图 7 中绿色路径)。后缀“-B”表示头部仅由 MLP 组成,而“-G”表示头部包含 GNN 块。在固定锚点策略下,尽管没有 GNN 的 O2O 分类子头可以有效消除冗余预测,加入 GNN 结构后性能仍有所提升。在动态锚点策略下,由于锚点重叠较高,未使用 GNN 块的 O2O 分类子头未能有效去除冗余预测。在固定和动态锚点策略下,包含 GNN 块的 O2O 分类子头均能成功消除冗余预测,表明标签分配和头部架构设计在实现无冗余的端到端检测中至关重要。

我们还研究了 O2O 分类子头的停梯度策略。表 IX 显示,O2O 分类子头的梯度会对 O2M 分类子头(具有 NMS 后处理)和 O2O 分类子头都产生负面影响。此现象表明,一对一分配会对特征学习引入显著的偏差,突显了停梯度策略对保持最佳性能的重要性。

在密集场景中的 NMS-free 模块消融研究。虽然在稀疏场景中证明了可以用 O2O 分类子头替代 NMS,但在密集场景中 NMS 的局限性依然存在。为了探究 NMS-free 块在密集场景中的表现,我们在 CurveLanes 数据集上进行了实验,结果详见表 X。

结论

主要贡献

1.本文提出了结合局部和全局极坐标系统的锚点生成策略,大大减少了锚点数量的同时提高了检测性能。

2.本文设计了结合GNN模块的三重检测头,支持无NMS的检测模式,增强了解释性。

3.本文在五个数据集上进行了广泛实验,展示了该方法在性能、效率和锚点优化方面的优势。

文章引用:Polar R-CNN: End-to-End Lane Detection with Fewer Anchors


最后别忘了,帮忙点“在看”。  

您的点赞,在看,是我创作的动力。


AiFighing是全网第一且唯一以代码、项目的形式讲解自动驾驶感知方向的关键技术。


长按扫描下面二维码,加入知识星球。



Ai fighting
全网第一且唯一分享自动驾驶实战,以代码、项目的形式讲解自动驾驶感知方向的关键技术,从算法训练到模型部署。主要致力于3D目标检测,3D目标追踪,多传感器融合,Transform,BEV,OCC,模型量化,模型部署等方向的实战。
 最新文章