自动驾驶三维车道线检测系列—GroupLane: End-to-End 3D Lane Detection with Channel-wise Grouping

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中一起航行,共同成长,探索技术的无限可能。

🚀 探索专栏:学步_技术的首页 —— 持续学习,不断进步,让学习成为我们共同的习惯,让总结成为我们前进的动力。

🔍 技术导航:

  • 人工智能:深入探讨人工智能领域核心技术。
  • 自动驾驶:分享自动驾驶领域核心技术和实战经验。
  • 环境配置:分享Linux环境下相关技术领域环境配置所遇到的问题解决经验。
  • 图像生成:分享图像生成领域核心技术和实战经验。
  • 虚拟现实技术:分享虚拟现实技术领域核心技术和实战经验。

🌈 非常期待在这个数字世界里与您相遇,一起学习、探讨、成长。不要忘了订阅本专栏,让我们的技术之旅不再孤单!

💖💖💖 ✨✨ 欢迎关注和订阅,一起开启技术探索之旅! ✨✨

1. 背景介绍

由于实际部署的需求,3D车道检测的效率非常重要。在这项工作中,我们提出了一种简单、快速且端到端的检测器,依然能够保持较高的检测精度。具体而言,我们设计了一组基于行分类的全卷积检测头。与以往的检测方法相比,我们的方法支持识别垂直和水平车道。此外,我们的方法是第一个在鸟瞰视角中执行行分类的模型。在这些检测头中,我们将特征划分为多个组,每组特征对应一个车道实例。在训练过程中,预测结果通过我们提出的单次一对一匹配与车道标签关联,推理时不需要任何后处理操作。通过这种方式,我们提出的全卷积检测器GroupLane实现了类似于DETR的端到端检测。通过在OpenLane、Once-3DLanes和OpenLane-Huawei这三个真实世界的3D车道检测基准数据集上的评估,使用ConvNext-Base作为骨干网络的GroupLane在OpenLane验证集上比当前最先进的PersFormer提升了13.6%的F1分数。此外,使用ResNet18的GroupLane在推理速度上几乎快了7倍,FLOPs仅为PersFormer的13.3%,但仍然提升了4.9%的F1分数。

实现快速且精准的车道检测对于实现稳健的驾驶辅助系统和安全的自动驾驶至关重要。现有的车道检测器主要可以分为两类:2D车道检测器和3D车道检测器。其中,2D车道检测已经被广泛研究,而3D车道检测则是近年来新引入的领域,因此需要进一步探索。车道检测的关键问题是如何表示车道。根据车道表示策略,已经发展出了四种不同的范式,即基于分割、基于锚点、基于参数曲线和基于行分类的方法。尽管基于分割和锚点的方法能够获得较高的检测精度,但它们需要进行后处理操作,如非极大值抑制(NMS)和像素关联。因此,它们的推理速度往往不尽如人意。虽然基于参数曲线的方法通过将车道表示为参数曲线并直接回归参数,从而避免了后处理,但由于优化难度较大,这类方法的性能相对较差。
在这里插入图片描述

与上述三种范式不同,基于行分类的方法在检测精度和速度之间实现了较好的平衡。它通过对每一行的像素进行分类,来描述车道穿过哪些像素的位置。然而,这种范式仍然存在三个局限性:(i)行分类范式仅在2D车道检测中被研究过,局限于摄像头视角。在3D车道检测中如何实现这种范式尚不明确。(ii)现有的基于行分类的2D车道检测器通过手工规则(如索引匹配)将预测结果与标签关联,这种方式效果不佳。(iii)以往的基于行分类的车道检测器假设车道是垂直的(如图2中用紫色标注的车道)。当出现水平车道(图2中用红色标注的车道)时,这些检测器的表现就会变差。然而,这些检测器在现有的基准测试中仍然表现良好,这是因为主流的3D车道数据集中很少有水平车道,这并不合理。
在这里插入图片描述

在本文中,我们提出了一种克服上述局限性的3D车道检测器。这是首次尝试将行分类应用于3D车道检测。首先,我们基于LSS将图像特征转换为鸟瞰视角(BEV)。值得注意的是,之前的3D车道检测器通常通过IPM生成鸟瞰视角特征,而我们选择LSS是因为它能显式预测深度并带来更好的性能。

接着,我们设计了一组全卷积检测头,在BEV空间中执行行分类。这些检测头分为两组,分别负责识别水平车道和垂直车道。在这些检测头中,特征通过分组卷积被划分为多个组,每个组对应一个车道预测。这样的设计解耦了不同车道之间的信息交互,从而减轻了优化难度。此外,我们不再通过手工规则来匹配预测和标签,而是基于我们提出的单赢一对一匹配(SOM)来进行关联。通过这种方式,预测结果可以分配给最合适的标签来计算损失,从而进行优化。结合上述技术,我们提出的全卷积3D车道检测器GroupLane实现了类似DETR的端到端检测,但没有使用复杂的操作如Attention。因此,与PersFormer等之前的方法相比,计算成本大大降低。

我们在OpenLane、Once-3DLanes和OpenLane-Huawei这三个基准数据集上进行了广泛的实验来验证GroupLane的性能。尽管方法简单,但我们发现GroupLane在所有基准测试中都大幅超越了对比方法。例如,我们在OpenLane基准数据集中通过F1分数、推理速度、浮点运算(FLOPs)和训练周期数量这四个指标,将GroupLane与已发布的最先进方法PersFormer进行了比较。PersFormer使用的骨干网络是EfficientNet-B7。实验结果显示,使用ConvNext-Base作为骨干网络的GroupLane比PersFormer在F1分数上提高了13.6%。此外,使用ResNet18的GroupLane在F1分数上仍比PersFormer提高了4.9%。值得注意的是,使用ResNet18的GroupLane推理速度几乎是PersFormer的7倍,而FLOPs仅为其13.3%。这些结果表明,GroupLane的效率非常高。此外,从图1可以看出,GroupLane的训练成本也相对较低。具体来说,PersFormer需要训练100个周期,而GroupLane仅需训练10个周期。而且,正如第4.4节所揭示的那样,GroupLane仅在4个训练周期后就能够很好地收敛。

综合来看,我们的主要贡献总结如下:(i)我们提出了一组基于行分类的检测头,在BEV中执行3D车道检测。这些检测头克服了以往方法只能检测垂直车道的局限性。此外,我们是第一个将行分类应用于3D车道检测的人。(ii)我们开发了一种将特征划分为多个组的策略,每组特征代表一个车道实例。通过基于SOM的预测与目标关联,GroupLane实现了类似DETR的端到端检测。(iii)结合提出的技术,GroupLane在精度和效率两个指标上大幅超越了之前的方法。

2. 方法介绍

在本节中,我们将描述所提出的3D车道检测器GroupLane,如图3所示。具体而言,GroupLane首先使用骨干网络和颈部结构提取特征,然后基于LSS生成鸟瞰视角(BEV)特征。经过轻量级的BEV编码器处理后,BEV特征基于开发的通道分组策略被划分为多个组(详见第3.2节)。接着,构建了两组基于行分类的检测头(垂直组和水平组)来生成车道预测,并在训练过程中基于我们提出的SOM策略将这些预测与标签匹配以计算损失。在推理过程中,预测结果会在基于置信度过滤后直接输出为检测结果。SOM策略的详细内容将在第3.3节中解释。最后,我们将详细说明检测头的实现(第3.4节)。
在这里插入图片描述

2.1 特征提取

在本节中,我们将描述所提出的3D车道检测器GroupLane,如图3所示。具体而言,GroupLane首先使用骨干网络和颈部结构提取特征,然后基于LSS生成鸟瞰视角(BEV)特征。经过轻量级的BEV编码器处理后,BEV特征基于开发的通道分组策略被划分为多个组(详见第3.2节)。接着,构建了两组基于行分类的检测头(垂直组和水平组)来生成车道预测,并在训练过程中基于我们提出的SOM策略将这些预测与标签匹配以计算损失。在推理过程中,预测结果会在基于置信度过滤后直接输出为检测结果。SOM策略的详细内容将在第3.3节中解释。最后,我们将详细说明检测头的实现(第3.4节)。

2.1 特征提取

在解释我们的贡献之前,我们首先描述特征提取和BEV特征生成的过程,以清楚说明我们的方法。同时,我们定义了一些数学变量。

在每次迭代中,输入一批单目图像 I ∈ R B × 3 × H i × W i I \in \mathbb{R}^{B \times 3 \times H_i \times W_i} IRB×3×Hi×Wi 到骨干网络(如ResNet50)中,提取多个层次的特征图,其中 B B B H i H_i Hi W i W_i Wi 分别表示批量大小、图像高度和宽度。接着,构建一个颈部结构(如Second FPN),将多层特征图融合为一个特征图 F s ∈ R B × C × H s × W s F_s \in \mathbb{R}^{B \times C \times H_s \times W_s} FsRB×C×Hs×Ws

获得 F s F_s Fs 后,使用在BEVDepth中实现的LSS模块将上述颈部生成的摄像头视角特征转换为BEV平面。由于之前的3D车道检测器通常采用IPM,我们在此部分简要解释LSS模块。具体而言,使用多个卷积层组成的深度网络来预测输入图像的深度图 D s ∈ R B × D × H s × W s D_s \in \mathbb{R}^{B \times D \times H_s \times W_s} DsRB×D×Hs×Ws,其中 D D D 表示深度桶的数量。接着,基于来自颈部的特征和预测的深度图,通过LSS模块生成BEV特征 F b ∈ R B × C × H b × W b F_b \in \mathbb{R}^{B \times C \times H_b \times W_b} FbRB×C×Hb×Wb,其中 C C C H b H_b Hb W b W_b Wb 分别表示BEV特征的通道数、高度和宽度。随后,BEV特征通过BEV编码器进一步精化。

接着,我们将BEV特征 F b F_b Fb 在通道维度上分为 2 × N 2 \times N 2×N 组特征,表示为 { f i b } i = 1 2 N \{f_i^b\}_{i=1}^{2N} {fib}i=12N,其中 f i b ∈ R B × C g × H b × W b f_i^b \in \mathbb{R}^{B \times C_g \times H_b \times W_b} fibRB×Cg×Hb×Wb 表示第 i i i 组特征,且 2 × N × C g = C 2 \times N \times C_g = C 2×N×Cg=C。前 N N N 组特征输入到垂直检测头组,其他 N N N 组特征输入到水平检测头组。在本工作中,我们使用每组特征来表示一个候选目标,这与检测Transformer中的查询类似。在后续的网络中,所有卷积层均基于分组卷积实现,不同组之间没有显式的信息交互。

我们构建了两组检测头(垂直组和水平组)来基于 { f i b } i = 1 N \{f_i^b\}_{i=1}^{N} {fib}i=1N 生成检测结果,每组检测头包含6个子头,分别负责预测存在置信度、可见性、类别、行分类索引、x轴偏移量和z轴偏移量。这些子头的详细信息将在第3.4节中详细说明。

2.2 通道分组

在本工作中,我们希望 F b F_b Fb 能够像DETR中的查询张量一样,实现端到端的3D车道检测。为此,我们首先在通道维度上将 F b F_b Fb 分为多组特征 { f i b } i = 1 2 N \{f_i^b\}_{i=1}^{2N} {fib}i=12N。这个过程如图4所示,不同的通道组用不同的颜色标记。在BEV编码器之后的所有卷积层中,我们使用分组卷积而不是经典卷积,卷积组的数量也设置为 2 × N 2 \times N 2×N。通过这种方式,我们确保在BEV编码器之后的层中,不同特征组之间没有信息交互,每组特征都可以专注于其对应的目标。

如图4所示,经过分组卷积层处理后,生成了 2 × N 2 \times N 2×N 个车道检测候选目标,每个候选目标对应于一组特征 { f i b } i = 1 2 N \{f_i^b\}_{i=1}^{2N} {fib}i=12N。在训练过程中,我们使用SOM将这些候选目标与车道标签匹配以计算损失。在推理过程中,我们直接使用存在置信度头预测的置信值来判断哪些候选目标是有效的预测。
在这里插入图片描述

通过这种方式,我们实现了端到端的3D车道检测,而无需麻烦的后处理算法(如NMS)。此外,我们的检测器基于卷积层实现,而不是Transformer中的注意力机制,从而节省了大量的计算成本。

2.3 单次一对一匹配(Single-Win One-to-One Matching)

存在两组检测头,即垂直组和水平组,分别用于识别垂直和水平车道。在鸟瞰视角(BEV)平面中进行可视化时,我们将垂直方向上跨越的网格多于水平方向上跨越网格的车道定义为垂直车道,如图5(a)所示。相反,水平方向上跨越的网格多于垂直方向的车道为水平车道,如图5(b)所示。

以前的基于行分类的车道检测器通常假设所有车道都是垂直的,并且仅构建一组检测头。不同的是,在本工作中,我们构建了垂直检测头组,执行水平方向网格的行分类,用于识别垂直车道。同样地,水平检测头组在垂直方向网格中进行行分类,用于检测水平车道。在训练过程中,垂直组和水平组各生成 N N N 个车道预测,因此总共有 2 N 2N 2N 个检测头。问题是如何将这些预测与标签进行匹配以计算损失。

根据图5,我们可以观察到,一个车道可以通过垂直组和水平组进行表示,区别在于跨越的网格数量。例如,如图5(a)所示,车道在水平方向上只跨越1个网格,而在垂直方向上跨越5个网格。因此,使用垂直检测头组可以更精确地建模该车道。在训练过程中,该车道的标签应该分配给垂直检测头组以计算损失。
在这里插入图片描述
基于上述见解,我们提出了SOM策略。在该策略中,我们首先对两个检测头组中的某一个分别进行标签与 N N N 个预测的一对一匹配(如匈牙利匹配)。匹配成本与损失函数相同,损失函数将在第3.4节中描述。通过这种方式,每个标签会与来自垂直检测头组和水平检测头组的两个预测进行匹配。之后,我们比较它们所跨越的网格数量。标签被分配给跨越网格数量较多的那个预测。

2.4 检测头(Detection Heads)

在这一部分中,我们描述如何设计检测头以支持端到端的检测。如前所述,存在两组检测头,即垂直组和水平组。每组包括6个基于分组卷积实现的检测头,分别是:存在置信度头、行索引头、可见性头、类别头、x轴偏移量头和z轴偏移量头。每个头包含2个卷积层(所有卷积核的形状均为1×1)。这些检测头的输入是BEV特征 F b ∈ R B × C × H b × W b F_b \in \mathbb{R}^{B \times C \times H_b \times W_b} FbRB×C×Hb×Wb。我们将 F b F_b Fb 分为 F v b ∈ R B × C / 2 × H b × W b F_v^b \in \mathbb{R}^{B \times C/2 \times H_b \times W_b} FvbRB×C/2×Hb×Wb F h b ∈ R B × C / 2 × H b × W b F_h^b \in \mathbb{R}^{B \times C/2 \times H_b \times W_b} FhbRB×C/2×Hb×Wb,分别作为垂直组和水平组的输入。在接下来的部分中,我们逐一详细说明这些检测头的功能。值得注意的是,垂直组和水平组的基本结构是相同的,因此我们主要描述垂直组的构建。水平组的实现可以通过将垂直组中的水平行替换为垂直行来获得。

2.4.1 存在置信度头

如第3.2节所述,垂直组和水平组共生成了 2 N 2N 2N 个检测候选目标,但并非所有候选目标都是有效的。一些候选目标可能对应于背景区域。存在置信度头用于预测一个候选目标是有效车道而不是属于背景区域的置信度。

F v b F_v^b Fvb F h b F_h^b Fhb 作为输入,经过全局最大池化层和Sigmoid层处理后,得到的特征形状为 y e ∈ R B × N y_e \in \mathbb{R}^{B \times N} yeRB×N。将相应的标签记为 y ˉ e ∈ R B × N \bar{y}_e \in \mathbb{R}^{B \times N} yˉeRB×N,存在置信度头的损失 L e L_e Le 表示为:

L e = − 1 N l ∑ i = 1 B N [ y i e log ⁡ y ˉ i e + ( 1 − y i e ) log ⁡ ( 1 − y ˉ i e ) ] , L_e = - \frac{1}{N_l} \sum_{i=1}^{BN} [y_i^e \log \bar{y}_i^e + (1 - y_i^e) \log(1 - \bar{y}_i^e)], Le=Nl1i=1BN[yielogyˉie+(1yie)log(1yˉie)],

其中 y i e y_i^e yie y ˉ i e \bar{y}_i^e yˉie 分别表示 y e y_e ye y ˉ e \bar{y}_e yˉe 中的第 i i i 个元素。 N l N_l Nl 表示有效车道的数量。

2.4.2 可见性头

在本工作中,我们将BEV平面划分为均匀的网格。这些网格的形状为 H b × W b H_b \times W_b Hb×Wb,与BEV特征的分辨率相同。对于垂直检测头组,在该BEV空间中预定义了一组y轴线 { y = y i } i = 1 H b \{y = y_i\}_{i=1}^{H_b} {y=yi}i=1Hb(对于水平检测头组则为x轴线)。可见性头用于估计是否有可见车道跨越这些y轴线。例如,如图6(a)所示,红色标记的行没有可见车道。

为了正确预测一行是否被车道跨越,可见性头的输出需要聚合该行中所有网格的信息。为此,可见性头沿x轴方向对输入特征进行最大池化操作。输出表示为 y v ∈ R B × N × H b × 1 y_v \in \mathbb{R}^{B \times N \times H_b \times 1} yvRB×N×Hb×1,其损失为:

L v = − 1 N l H b ∑ i = 1 B N H b y i v log ⁡ y ˉ i v , L_v = - \frac{1}{N_l H_b} \sum_{i=1}^{BNH_b} y_i^v \log \bar{y}_i^v, Lv=NlHb1i=1BNHbyivlogyˉiv,

其中 y v ∈ R B × N × H b × 1 y_v \in \mathbb{R}^{B \times N \times H_b \times 1} yvRB×N×Hb×1 表示相应的标签。

2.4.3 行索引头

在GroupLane中,我们使用行分类策略来表示3D车道的位置,该策略将2D平面划分为多个网格,并区分每一行中哪些网格包含车道。

尽管一些先前的检测器采用了这一策略,但它们都是在相机平面中进行行分类,如图6(a)所示。此外,它们的性能通常不尽如人意。与它们不同,我们在BEV平面中进行行分类,如图6(b)所示。比较图6(a)和6(b),我们可以观察到相机平面中的车道呈现出更复杂的拓扑结构。值得注意的是,图6(a)中标记为红色的网格的顶行没有车道。相比之下,图6(b)中的所有网格行都包含车道。此外,BEV平面中的车道更加笔直,并且相互平行。这些特性减轻了优化的难度。基于上述观察,我们认为行分类策略自然适合基于BEV的3D车道检测。
在这里插入图片描述
行索引头在特征图的最后一维上应用Softmax操作,以生成输出 y r ∈ R B × N × H b × W b y_r \in \mathbb{R}^{B \times N \times H_b \times W_b} yrRB×N×Hb×Wb。在每一行中,置信度最高的网格是预测的车道网格。损失 L r L_r Lr 的计算公式为:

L r = − 1 N l ∑ i = 1 B N H b [ y ˉ i v ∑ j = 1 W b y ( i , j ) r log ⁡ y ˉ ( i , j ) r ] , L_r = - \frac{1}{N_l} \sum_{i=1}^{BNH_b} \left[\bar{y}_i^v \sum_{j=1}^{W_b} y_{(i,j)}^r \log \bar{y}_{(i,j)}^r \right], Lr=Nl1i=1BNHb[yˉivj=1Wby(i,j)rlogyˉ(i,j)r],

其中 y ˉ r ∈ R B × N × H b × W b \bar{y}_r \in \mathbb{R}^{B \times N \times H_b \times W_b} yˉrRB×N×Hb×Wb 表示标签, y ˉ i v \bar{y}_i^v yˉiv 确保损失只在有车道的行上进行计算。

2.4.4 类别头(Category Head)

类别头用于区分检测到的车道属于哪个类别。为此,类别头的输出 y c y_c yc 的形状应为 ( B , N G , 1 , 1 ) (B, N_G, 1, 1) (B,NG,1,1),其中 G G G 表示类别总数。尽管类别头可以按照存在置信度头的设计,通过全局最大池化聚合空间信息,但池化操作会引入大量背景噪声。对于类别头,我们希望它能专注于车道的前景区域。因此,我们提出利用来自行索引头的信息来指导类别头中的特征。

具体而言,如图6(b)所示,行索引头的输出 y r y_r yr 可以被视为一个BEV实例分割图,其中每个通道对应一个车道实例。因此,我们可以使用 y r y_r yr 来获取 F b F_b Fb 中的前景区域特征,记为 F f ∈ R B × N G × H b × 1 F_f \in \mathbb{R}^{B \times N_G \times H_b \times 1} FfRB×NG×Hb×1。然后,对 F f F_f Ff 应用一个MLP层来聚合高度维度中的信息,输出记为 y c ∈ R B × N G × 1 × 1 y_c \in \mathbb{R}^{B \times N_G \times 1 \times 1} ycRB×NG×1×1。类别头的损失 L c L_c Lc 计算如下:

L c = − 1 N l ∑ i = 1 B × N G y i c log ⁡ y ˉ i c , L_c = - \frac{1}{N_l} \sum_{i=1}^{B \times N_G} y_i^c \log \bar{y}_i^c, Lc=Nl1i=1B×NGyiclogyˉic,

其中 y ˉ c ∈ R B × N G × 1 × 1 \bar{y}_c \in \mathbb{R}^{B \times N_G \times 1 \times 1} yˉcRB×NG×1×1 是相应的标签。

2.4.5 偏移头(Offset Heads)

基于可见性头和行索引头的结果,我们可以知道哪些BEV网格被车道跨越。所有BEV网格中心的z轴坐标都设置为0。然而,仅使用这些网格中心来描述3D车道的位置是不精确的。因此,我们对垂直检测头组的x轴和z轴偏移进行回归,以优化结果。图7展示了x轴和z轴偏移的示意图。类似地,对于水平检测头组,我们预测相对于BEV网格中心的y轴和z轴偏移。

如图所示,3D车道穿过了BEV网格。两个BEV网格中心的示例用橙色标记,具有相同y轴坐标的3D车道上的点用红色标记。为了准确描述该3D车道的位置,我们需要估算从网格中心到车道点的偏移。为此,我们构建了x轴头和z轴头来回归偏移。通过提取类别头输出的前景区域,x轴头和z轴头的输出分别记为 y x ∈ R B × N × H b × 1 y_x \in \mathbb{R}^{B \times N \times H_b \times 1} yxRB×N×Hb×1 y z ∈ R B × N × H b × 1 y_z \in \mathbb{R}^{B \times N \times H_b \times 1} yzRB×N×Hb×1。这两个头的损失 L o L_o Lo 计算如下:

L o = − 1 N l [ ∑ i = 1 B × N × H b y ˉ i v ∣ y i x − y ˉ i x ∣ + ∑ i = 1 B × N × H b y ˉ i v ∣ y i z − y ˉ i z ∣ ] , L_o = - \frac{1}{N_l} \left[ \sum_{i=1}^{B \times N \times H_b} \bar{y}_i^v | y_i^x - \bar{y}_i^x | + \sum_{i=1}^{B \times N \times H_b} \bar{y}_i^v | y_i^z - \bar{y}_i^z | \right], Lo=Nl1[i=1B×N×Hbyˉivyixyˉix+i=1B×N×Hbyˉivyizyˉiz],

其中 y ˉ x ∈ R B × N × H b × 1 \bar{y}_x \in \mathbb{R}^{B \times N \times H_b \times 1} yˉxRB×N×Hb×1 y ˉ z ∈ R B × N × H b × 1 \bar{y}_z \in \mathbb{R}^{B \times N \times H_b \times 1} yˉzRB×N×Hb×1 分别表示x轴和z轴偏移的标签。最终的损失通过对公式(1)到(5)中的所有损失值求和得到。
在这里插入图片描述

3. 实验

在本节中,我们进行了大量实验,以展示GroupLane的优越性并验证GroupLane中各种设计的有效性。

3.1 实验细节

在第4.3节的实验中,我们报告了使用不同骨干网络的GroupLane的结果,包括ResNet-18、ResNet-50和ConvNext-Base。在其余的实验中,我们只报告了使用ResNet-50作为骨干网络的GroupLane的结果。所有骨干网络均在ImageNet上进行了预训练,且未采用任何额外的数据。颈部网络将输入特征图的分辨率下采样至原始图像的 1 / 16 1/16 1/16。BEV网格的分辨率设置为 24 × 100 24 \times 100 24×100。通道分组的数量 N N N 设置为16。BEV编码器由4个卷积块和一个FPN组成。所有实验都在8块RTX2080 GPU上进行,且未使用诸如模型集成和测试时增强等技巧。在所有评估数据集中,检测器使用AdamW优化器训练10个周期,学习率设置为 2 × 1 0 − 4 2 \times 10^{-4} 2×104

3.2 基准测试

OpenLane
OpenLane是一个基于Waymo的真实世界3D车道检测数据集,Waymo是一个大规模的自动驾驶数据集。OpenLane包含约20万帧由前置摄像头拍摄的图像,这些图像中标注了超过88万个3D车道实例。除了定位车道,OpenLane还要求检测器识别车道的类别。OpenLane总共有14个车道类别。所使用的评估指标包括F1分数、类别准确率、X轴近端误差、X轴远端误差、Z轴近端误差和Z轴远端误差。其中,F1分数是最重要的评估指标。

Once-3DLanes
Once-3DLanes是另一个大规模的真实世界3D车道检测数据集,其标注基于Once数据集。该数据集包含约21.1万帧由前置摄像头拍摄的图像。与OpenLane相比,Once-3DLanes仅要求检测器定位车道,而不需要分类。所使用的评估指标包括F1分数、精确度(Precision)、召回率(Recall)和CD误差。其中,F1分数是最关键的指标。

OpenLane-Huawei
与OpenLane和Once-3DLanes要求检测器识别3D车道不同,OpenLane-Huawei要求检测器检测3D车道中心线。OpenLane-Huawei数据集包含1000个视频场景,每个视频大约15秒,由7个不同方向的摄像头拍摄。该数据集中包含约96万个实例标注。评估指标包括F1分数、召回率、精确度和DETL分数。与OpenLane和Once-3DLanes相比,OpenLane-Huawei包含更多十字路口场景,因此包含更多水平车道中心线。因此,OpenLane-Huawei更适合评估GroupLane的水平车道检测能力。

3.3 与现有SOTA方法的比较

OpenLane
我们使用OpenLane的训练集,训练了多种骨干网络的GroupLane(ResNet18、ResNet50和ConvNext-Base)。GroupLane与其他对比方法在OpenLane验证集中的评估结果如表1所示。前四行是已发布的方法,剩下的是我们的同时代作品。

如结果所示,GroupLane在所有对比方法中表现最佳,树立了新的SOTA性能。例如,使用ConvNext-Base作为骨干网络的GroupLane-CN-B在F1分数上超越了目前已发布的最佳方法PersFormer,提升了13.6%。根据类别准确率的结果,GroupLane也取得了最高的分类精度。此外,我们可以观察到,使用更强大的骨干网络(如ConvNext-Base)的GroupLane,在OpenLane上的表现优于使用简单骨干网络(如ResNet18)的版本。
在这里插入图片描述

Once-3DLanes
在这项实验中,所有方法都使用Once-3DLanes训练集进行训练,并在验证集中进行评估。结果如表2所示。根据结果,GroupLane在所有方法中表现最佳。例如,GroupLane-Res18在F1分数上超越了PersFormer(即已发布检测器中表现最好的方法)6.40%。这一结果进一步验证了GroupLane的优越性。

值得注意的是,表2中有一个有趣的观察:使用较小骨干网络的GroupLane表现略好。例如,GroupLane-Res18在F1分数上超越了GroupLane-CN-B 1.31%。我们推测,这是因为在Once-3DLanes中不需要对车道进行分类。此外,车道通常是白色或黄色的曲线,易于识别。因此,像ResNet18这样的小型骨干网络已经足够强大,可以在Once-3DLanes中生成具有区分度的特征表示。此外,参数较少的骨干网络更容易进行优化。因此,使用ResNet18作为骨干网络的GroupLane表现优于使用ConvNext-Base的版本。
在这里插入图片描述

效率比较
3D车道检测是需要应用于实际车辆的任务,因此效率非常重要。然而,以往的工作大多仅比较检测精度指标,很少研究效率问题。在本部分中,我们希望弥补这一差距。为此,我们在OpenLane基准测试中,比较了GroupLane与PersFormer(已发布检测器的SOTA方法)的推理速度(IS)和FLOPs指标。此外,我们还给出了F1分数结果,以反映在不同计算成本下的检测精度。
在这里插入图片描述

如结果所示,PersFormer采用了EfficientNet-B7作为骨干网络,其计算成本远高于我们的模型。我们没有报告使用EfficientNet-B7的GroupLane的结果,因为我们发现RTX2080无法支持其训练。在表3中,我们报告了使用三种不同骨干网络(ResNet18、ResNet50和ConvNext-Base)的GroupLane性能。可以观察到,即使是使用ResNet18的GroupLane,仍然在F1分数上超越了使用EfficientNet-B7的PersFormer,提升了4.9%,同时推理速度几乎快了7倍。此外,GroupLane-Res18的FLOPs仅为PersFormer的13.35%。所有这些观察结果表明,GroupLane是一种非常高效的3D车道检测器,更适合实际应用。

3.4 训练动态研究

在这项实验中,我们研究了GroupLane的训练动态。为此,我们使用OpenLane训练集对GroupLane进行了10个周期的训练,并每两个周期评估一次训练模型的性能。GroupLane在训练过程中的F1分数和分类准确率动态如图8所示。

如图所示,GroupLane在大约第4个周期时收敛良好,表明其收敛速度非常快。实际上,使用ResNet50作为骨干网络时,GroupLane的训练过程仅需约12小时(使用8块RTX2080 GPU,批量大小为16)。相比之下,PersFormer需要训练100个周期。该观察结果表明,GroupLane不仅在推理过程中表现出色,而且由于其快速收敛,在训练阶段也非常经济。
在这里插入图片描述

3.5 消融实验

在本部分中,我们通过消融实验验证了水平检测头组、通道分组策略、类别头设计以及基于匈牙利匹配的关联的有效性。

水平检测头组
由于OpenLane和Once-3DLanes的数据集中包含的水平车道较少,因此它们不适合验证水平检测头组的有效性。为此,我们使用OpenLane-Huawei数据集来填补这一空白。与OpenLane和Once-3DLanes相比,OpenLane-Huawei包含更多的十字路口场景和水平车道中心线实例,能够充分反映GroupLane的水平车道检测能力。结果如表4所示。输入图像的分辨率为(640, 480),DETL是主要的评估指标。

如结果所示,加入水平检测头组几乎使GroupLane的检测性能翻倍,这表明我们的设计非常有效。
在这里插入图片描述

通道分组策略
在此实验中,我们验证了通道分组策略的有效性。一方面,我们研究了基于分组卷积将特征划分为不同组对检测性能的影响。另一方面,我们还分析了每个特征组的通道数对检测性能的影响。实验结果如表5所示。

从表5中可以得出两点结论。首先,解耦不同组之间的特征交互使得F1分数略有提升(提升了0.51%)。我们将这一改善归因于优化难度的减轻。其次,增加每个特征组的卷积通道数,首先会提高性能,然后会导致性能下降。我们推测特征组的通道数类似于Transformer查询的嵌入长度。通道数过少会导致网络无法有效捕捉对象的表示,而过多的通道数则显著增加了优化难度。
在这里插入图片描述
在这里插入图片描述

类别头设计
如第3.4节所述,与按照存在置信度头的设计实现类别头不同,我们通过行索引头的引导使类别头专注于前景区域。在此实验中,我们验证了这种设计的有效性。使用或不使用行索引头引导的GroupLane模型结果如表6所示。

根据表6的结果,我们可以观察到,使用行索引头的输出引导类别头,不仅可以提高类别分类精度,还可以改善车道定位性能。我们推测这是因为该设计减轻了分类任务的优化难度,使得检测器能够更加专注于定位任务。因此,GroupLane的定位精度也得到了提升。
在这里插入图片描述

基于SOM的关联
如前所述,先前的基于行分类范式的方法通过简单地将预测与相同索引的目标进行匹配。然而,我们认为这种策略次优且不适用于实现端到端的3D车道检测,因为它并没有将预测与最相似的目标匹配。相反,我们基于SOM进行关联。在此实验中,我们比较了GroupLane在使用这两种不同匹配策略时的性能,结果如表7所示。结果表明,基于索引匹配的F1分数仅为使用SOM策略的40.9%。

3.6 可视化与局限性

图9展示了GroupLane的一些检测结果示例。如图所示,GroupLane在BEV平面中的检测精度非常有前景。然而,相机图像平面中的预测偏差是由深度估计误差引起的,这是由于单目深度估计是一个不适定问题,无法完全避免。这一问题可以通过引入来自激光雷达点的深度信息来解决,我们计划在未来的工作中研究这一问题。
在这里插入图片描述

4. 结论

在本研究中,我们提出了一种新颖的3D车道检测器——GroupLane,实现了精确、快速且端到端的3D车道检测。通过行分类策略表示车道,GroupLane将特征图划分为多个组,并将每组特征与车道实例匹配进行检测。我们进行了大量实验,展示了GroupLane的优越性。

🌟 在这篇博文的旅程中,感谢您的陪伴与阅读。如果内容对您有所启发或帮助,请不要吝啬您的点赞 👍🏻,这是对我最大的鼓励和支持。

📚 本人虽致力于提供准确且深入的技术分享,但学识有限,难免会有疏漏之处。如有不足或错误,恳请各位业界同仁在评论区留下宝贵意见,您的批评指正是我不断进步的动力!😄😄😄

💖💖💖 如果您发现这篇博文对您的研究或工作有所裨益,请不吝点赞、收藏,或分享给更多需要的朋友,让知识的力量传播得更远。

🔥🔥🔥 “Stay Hungry, Stay Foolish” —— 求知的道路永无止境,让我们保持渴望与初心,面对挑战,勇往直前。无论前路多么漫长,只要我们坚持不懈,终将抵达目的地。🌙🌙🌙

👋🏻 在此,我也邀请您加入我的技术交流社区,共同探讨、学习和成长。让我们携手并进,共创辉煌!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学步_技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值