基于Anchor分解的车道线检测网络

1、首先就是在实验部分和CLRNet在VIL-100的可视化对比。这里笔者强烈质疑CLRNet的效果,单说anchor的质量和灵活性那确实ADNet更强,但CLRNet的预测不应该全部位于边缘,因为CLRNet也是可学习anchor,虽然在边缘预设了anchor,但anchor位置是可变的,所以理论上来说只要gt的起始点不位于边缘,最终预测的起始点肯定也不是在边缘分布,难道是调参问题?只可惜CLRNet没有在VIL-100上做实验,笔者有空了会亲自尝试CLRNet在VIL-100的效果。

2、文章生成anchor的思路以及anchor的分布可视化还是比较令人惊艳的,人类高质量anchor。

3、VIL-100数据集提出的本意是视频车道线检测,但这里作者主要是针对数据集车道线起点位置不固定的特点而开展的工作,笔者还是期望看到更多利用时序信息的车道线检测方案,相比之下同期的RVLD更让人眼前一亮。

优势与创新

  1. 提出了一个新的基于anchor的车道线检测网络ADNet,与以往的预设anchor不同,本文将anchor分解为学习起点及其相关方向的heatmap,消除了anchor起始点的限制,使得算法能够适应不同数据集的不同车道线类型;
  2. 提出大核注意力模块LKA,提高生成anchor的质量,显著增加感受野;
  3. 提出General Line IoU loss,是CLRNet提出的Line IoU loss的优化版本;
  4. 在VIL-100数据集SOTA,在CULane和Tusimple数据集上取得有竞争力的结果。

动机

ADNet_人工智能

  1. 以往的基于anchor的车道线检测方法,anchor不够灵活,因为它们都是假设车道线只从图像的三个边缘(左下右)出发,虽然这种假设利用了车道线的先验信息实现了良好的准确性和速度,但由于障碍物的存在,车道线并不总是从这三个边缘出发(图1a);
  2. 以往的基于anchor的车道线检测方法,anchor的质量较低,无论是LineCNN和LaneATT这样的固定密集预测,还是CLRNet的动态稀疏预测,当相机分辨率变化时,这种预测(图1b)可能是不可靠的,特别是在车道线不是从边缘开始的情况下;
  3. 车道线固有的物理特征,如其细长和连续性,在捕捉其几何特征方面提出了重大挑战。然而,现有的大多数方法都局限于较小的内核尺寸,这对准确捕获车道线的整个特征造成了障碍。

因此,针对问题1,提出了起始点生成单元SPGU(Start point generate unit),将anchor分解为通过heatmap来预测anchor的位置及其方向,从而提高anchor的灵活性;针对问题2和3,作者引入了一个集成在FPN上的大内核注意力模块LKA(Large kernel attention),提高anchor的质量。

本文方法以一种集中的方式来预测anchor(图1c),所以anchor的位置与验证像素的密度无关(即预测的anchor位置是相对独立的,不受像素密度变化的影响),因此可以相互保证anchor的质量和灵活性。

此外作者还阐述了CLRNet提出的Line IoU loss存在的局限性,提出了新的基于anchor的车道线检测方法的采样点回归loss——GLIoU loss(General Line IoU loss)。

方法/网络结构

ADNet_Line_02

网络总体结构如图2所示,包括四个部分:起始点生成单元SPGU(Start point generate unit)、自适应车道线感知单元ALAU(Adaptive lane aware unit)、GLIoU loss(General Lane IoU loss)和大内核注意力模块LKA(Large kernel attention)。

大致过程为:

1、backbone提特征,过一个嵌入LKA模块的FPN来增强特征表示;

2、FPN输出的低层次特征过起始点生成单元SPGU,由于一个anchor由一组x、y坐标和一个角度θ构成,所以这里先生成了两个heatmap,一个确定位置,一个确定方向,然后两个heatmap concat一下就是anchor的引导图,对两个heatmap解码就得到了anchor的具体值;

3、车道线感知单元ALAU将FPN输出的高层次特征与anchor引导图进行聚合得到新的特征图;

4、接下来就和以往的基于anchor方法一样,有了anchor和特征图就可以提取anchor的特征,这里作者提取anchor的方式就是一个很普通的RCNN式Pooling,不像CLRNet是用ROIGather来提取anchor特征,提取anchor特征后就可以对anchor进行分类和回归,其中对于采样点回归采用文章新提出的GLIoU loss。

所以笔者理解这篇文章相比于以往的基于anchor的车道线检测方法来说,最大的区别就在于其anchor不是预设而是生成的。

LineCNN、LaneATT、CLRNet都是预设anchor,当然ADNet并不是第一个生成anchor的方法,也有一些方法是类似DETR一样来生成anchor比如O2SFormer,但ADNet的anchor是通过heatmap来生成的,而heatmap又是基于关键点的车道线检测方法的主要手段,只不过ADNet仅预测起始点及其方向也就是anchor,而不是预测所有关键点再聚类。

另外ADNet和CLRNet一样,都是可学习的anchor,不过CLRNet是通过对点进行回归的方式学习,ADNet通过对区域进行分类和回归的方式学习。

接下来是各模块的详细介绍。

起始点生成单元SPGU

ADNet_Line_03

ADNet_Line_04

上述过程通俗一点来讲就是预测整幅图像中哪些区域存在anchor(起始点区域和非起始点区域二分类),而起始点区域显然和非起始点区域面积是不平衡的,因此作者用focal loss来进行监督区域分类,用L1 loss监督角度差距,需要注意的是和普通的focal loss、L1 loss不同,这里是对heatmap即区域做监督,所以loss公式的实现形式有所改动:

ADNet_人工智能_05

大内核注意力模块LKA

ADNet_人工智能_06

动机:一些CNN backbone方面的工作(RepLKNet、RepVGG)已经证明了当卷积核的kernel size超过7 × 7时,CNN的性能会受到限制,从而限制了CNN与Transformer混合架构对于需要大接收域的下游任务的潜在好处。因此作者设计了一个集成了FPN的大内核注意力模块LKA,专门用于车道线检测。

这里读者需要对Transformer架构以及Conv2Former和SegneXt这两篇文章有所了解,文章中LKA模块的设计主要参考了这两篇文章。

图3a是LKA模块的结构,主要参考了Conv2Former里Convolutional modulation的设计(见下图)。

ADNet_卷积核_07

主要的不同之处在于作者把SegneXt里提出的MSCA模块拿过来改了改然后替换了Linear->DConv这一过程(MSCA见下图)。

ADNet_卷积核_08

修改后的MSCA模块被作者称为MSA(Multi-Scale Aggregator,图3b)。

对比这两幅图以及图3就比较好理解了,作者在这里也说明了他们提出的LKA可以看作是attention机制和多尺度aggregator的相结合。

为了最小化计算成本,作者将LKA模块放置在FPN的横向层之后(图2)。

LKA的实现过程涉及到一堆比较复杂的数学公式,笔者在这里就不列出了,感兴趣的朋友可以去看原文进行推导。笔者理解这就是一个即插即用的用来增强特征表示的模块,像CondLaneNet也是在backbone和FPN之间穿插了一个Transformer encoder来增强特征表示。

General Lane IoU loss

ADNet_Line_09

动机:CLRNet提出了LIoU loss,以解决基于anchor的方法对anchor上每个采样点计算L1 loss来回归而没有将一条车道线视为一个整体来进行回归的问题。但LIoU loss也有一些局限性,如图4所示,其实就是无法直接优化没有重叠的部分,对于这种情况,反而是对每个采样点计算L1 loss更适用。

ADNet_Line_10

GLIoU的范围为(−2,1],当预测车道与地面真值完全匹配时,GLIoU = 1。虽然GLIoU的下界是-2,看起来不对称,但它是预测弯道形状更合适的选择,因为在大多数情况下,预测与gt并不完全对齐。GLIoU loss的重点不是重叠部分,而是改善重叠较差的部分。

自适应车道线感知单元ALAU

ADNet_人工智能_11

动机:传统的卷积网络进行车道检测可能不是最优的,因为它们运行在固定的网格上,不能很好地与不规则形状的车道线对齐。虽然可变形卷积网络DCN已在目标检测中得到广泛应用,但其在车道线检测方面的潜力尚未得到充分开发。直接将DCN应用于车道线检测具有挑战性,从高上下文的车道线特征中学习卷积核的offset是不可行的。相反,起始点及其角度可以被视为预测卷积核offset的有效指导,因为它们具有明确的物理建模。

文中给了一大堆数学公式,为了方便读者理解这里我按代码的实现逻辑来解释。

ALAU模块基于可变形卷积网络DCN(Deformable Convolutional Networks) v1实现,它使用SPGU预测的anchor形状(引导图)来预测可变形卷积核的offset,而不是使用feature map预测offset。

通过起始点生成单元SPGU得到引导图,然后将FPN最高层特征和引导图作为输入,首先对引导图预测卷积核的offset,有了卷积核的offset后就可以利用可变形卷积对最高层特征进行处理。

按照代码结构来看,其实最终的目的还是使feature map的特征表征能力更强,然后方便对feature map进行后续的操作(提取anchor的特征,然后分类和回归)。

训练细节

正负样本匹配

和CLRNet一样,都是采用YOLOX提出的SimOTA动态匹配策略,具体过程详见CLRNet。

loss

ADNet_人工智能_12

实验部分

作者在VIL-100、CULane和Tusimple三个数据集进行了实验。

VIL-100是ICCV 2021提出的新的车道线检测数据集,与CULane、Tusimple等数据集不同,VIL-100是首个视频实例车道线检测数据集(每10ms取一帧,CULane和Tusimple好像是30所以达不到视频标准),另外图像的分辨率从640×368到1920×1080不等,不像CULane和Tusimple所有图像都是统一大小,而且车道线并不仅仅从边缘出发。这里作者在VIL-100上进行实验主要是利用车道线起点位置不固定的特点,并没有像VIL-100的baseline模型MMA-Net利用时序信息,所以这篇文章的方法并不属于视频车道线检测的范畴。

性能对比

ADNet_数据集_13

在CULane数据集上的比较,在基于anchor的方法中排名第二,仅次于CLRN

ADNet_人工智能_14

ADNet_人工智能_15

在VIL-100上远超baseline模型MMA-Net。CLRNet在VIL-100上未能保持其优势,为了与CLRNet进行公平的比较,作者将起点重新定位到图像的三个边缘(表中加了个*号的就是),但结果依然优于CLRNet(图7是ADNet和CLRNet在VIL-100数据集上的可视化对比)。

ADNet_数据集_16

ADNet_Line_17

Tusimple现在已经刷的差不多了,目前最高还是CLRNet(ResNet18为backbone的分数是97.89)。

ADNet_人工智能_18

性能和速度对比。

消融实验

1、整体消融研究。

在baseline模型(ResNet)逐渐增加起始点生成单元(SPGU)、自适应车道线感知单元(ALAU)、GLIoU loss和大内核注意力模块(LKA)。

ADNet_人工智能_19

2、起始点生成单元SPGU的消融研究,引导图的有效性。

在自适应车道线感知单元ALAU里,卷积核的offset是由引导图获得的。这里作者又对比了一下直接从feature map来获得偏移量(表5,Guidance map那列,thetas map应该是笔误吧,根据前文的叙述应该是feature map)。结果表明当添加引导图时效果更好。

3、GLIoU loss的消融研究。

在整体消融研究中,与LIoU损失相比,GLIoU损失仅带来0.24的改善。作者声称是因为3.3节中描述的场景很少发生,因为CULane车道线总是从图像的三个边缘出发。在CULane上的进一步实验(表5,Loss那列)表明,当不使用GLIoU loss时,将backbone从ResNet18切换到ResNet34只带来了0.18的涨点,类似于表4的现象。然而,在VIL-100上进行同样的实验时,ResNet18和ResNet34在F1@50上都得到了巨大的提升。

4、大内核注意力模块LKA的消融研究。

表5,Attention那列。“baseline”指的是直接使用Conv2Former提出的Convolutional modulation。

ADNet_Line_20

总结

1、ADNet:利用SPGU生成高质量anchor,利用ALAU增强车道线特征表示;

2、提出GLIoU loss来解决LIoU loss的局限性;

3、大内核注意力模块LKA,第一个研究Large Kernel机制在车道线检测任务中保证anchor质量的有效性,因为车道线通常覆盖整个图像,往往需要非常大的上下文才能准确捕获。

4、VIL-100结果SOTA(但其实低于同期的RVLD),CULane和Tusimple也取得不错的结果。