点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
论文作者 | HX
编辑 | 自动驾驶之心
0. 笔者的个人见解
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. ADNet的优势与创新
提出了一个新的基于anchor的车道线检测网络ADNet,与以往的预设anchor不同,本文将anchor分解为学习起点及其相关方向的heatmap,消除了anchor起始点的限制,使得算法能够适应不同数据集的不同车道线类型;
提出大核注意力模块LKA,提高生成anchor的质量,显著增加感受野;
提出General Line IoU loss,是CLRNet提出的Line IoU loss的优化版本;
在VIL-100数据集SOTA,在CULane和Tusimple数据集上取得有竞争力的结果。
2. ADNet动机
![a65cd5ac756031fd86758865e0c55756.png](https://i-blog.csdnimg.cn/blog_migrate/11b7c3413ec0c1b353ef57c5ad6f358f.png)
以往的基于anchor的车道线检测方法,anchor不够灵活,因为它们都是假设车道线只从图像的三个边缘(左下右)出发,虽然这种假设利用了车道线的先验信息实现了良好的准确性和速度,但由于障碍物的存在,车道线并不总是从这三个边缘出发(图1a);
以往的基于anchor的车道线检测方法,anchor的质量较低,无论是LineCNN和LaneATT这样的固定密集预测,还是CLRNet的动态稀疏预测,当相机分辨率变化时,这种预测(图1b)可能是不可靠的,特别是在车道线不是从边缘开始的情况下;
车道线固有的物理特征,如其细长和连续性,在捕捉其几何特征方面提出了重大挑战。然而,现有的大多数方法都局限于较小的内核尺寸,这对准确捕获车道线的整个特征造成了障碍。
因此,针对问题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)。
3. 方法/网络结构
![a72547a02214733211c47bcc757b3c45.png](https://i-blog.csdnimg.cn/blog_migrate/7ceb3788cc16a0bc9a4bfc36bf4edd53.png)
网络总体结构如图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通过对区域进行分类和回归的方式学习。
接下来是各模块的详细介绍。
3.1 起始点生成单元SPGU
最终目标是通过预测起始点位置和给定下采样特征映射来形成anchor,anchor可以表示为。
和大多数基于关键点的车道线检测框架一样,作者希望通过估计下采样heatmap中某一区域存在起始点的可能性来预测图像上每条车道线的起始点。作者观察到anchor的角度θ与起始点坐标在空间关系上密切相关,根据贝叶斯定理,其位置和形状可分解为:
![89de42e84f548503765fc34aa3063b76.png](https://i-blog.csdnimg.cn/blog_migrate/11ce9f1010ad03fa1e0d891abef7a444.png)
在训练阶段,通过在每个gt(ground truth)的起始点上添加一个非归一化的高斯内核来生成起始点的监督heatmap:
![6226983b6b08d5ee6526df7abb11d706.png](https://i-blog.csdnimg.cn/blog_migrate/3b0b63490a4ac10c4b78dc69dd99c6ba.png)
其中x, y为像素在上的坐标;, 为gt起点坐标;σ是超参数。
那么角度θ的监督heatmapθ可表示为:
![a6cf57995ee58a62c2a346fc246a7e48.png](https://i-blog.csdnimg.cn/blog_migrate/710cab4f64205adc26428f82c43bb89a.png)
作者是这样解释角度θ的heatmap的:如果某一区域内起始点的概率大于θ,那么就认为该区域与gt的起始点具有相同的θ。与严格假设每个起始点对应一个θ不同,该方法扩大了anchor的潜在出现区域,为最后的回归任务提供了丰富的高质量anchor。这使得网络能够在不同条件下确定最佳拟合,而无需像GANet一样添加额外的损失来补偿由于下采样导致的heatmap上点与原始图像之间的偏移量。
上述过程通俗一点来讲就是预测整幅图像中哪些区域存在anchor(起始点区域和非起始点区域二分类),而起始点区域显然和非起始点区域面积是不平衡的,因此作者用focal loss来进行监督区域分类,用L1 loss监督角度差距,需要注意的是和普通的focal loss、L1 loss不同,这里是对heatmap即区域做监督,所以loss公式的实现形式有所改动:
![92dbf3cfb1ffcab7cad91de71e2b6241.png](https://i-blog.csdnimg.cn/blog_migrate/77e2dff7fd8b8b7aa0f52f05bc67887a.png)
![5f4d4798064b0dcaa7a0665be357f296.png](https://i-blog.csdnimg.cn/blog_migrate/2d545dab8031534dacc83d9347fc3232.png)
3.2 大内核注意力模块LKA
![de23545aa3e34fed1ab2c3e8f7100c07.png](https://i-blog.csdnimg.cn/blog_migrate/c6bce78f84e06116963ba0a51f1619fc.png)
动机:一些CNN backbone方面的工作(RepLKNet、RepVGG)已经证明了当卷积核的kernel size超过7 × 7时,CNN的性能会受到限制,从而限制了CNN与Transformer混合架构对于需要大接收域的下游任务的潜在好处。因此作者设计了一个集成了FPN的大内核注意力模块LKA,专门用于车道线检测。
这里读者需要对Transformer架构以及Conv2Former和SegneXt这两篇文章有所了解,文章中LKA模块的设计主要参考了这两篇文章。
图3a是LKA模块的结构,主要参考了Conv2Former里Convolutional modulation的设计(见下图)。
![d2afe865e85156b7af9f3c50adebbe2b.png](https://i-blog.csdnimg.cn/blog_migrate/824fba79677f5335c77b92929d3c8924.png)
主要的不同之处在于作者把SegneXt里提出的MSCA模块拿过来改了改然后替换了Linear->DConv这一过程(MSCA见下图)。
![e9cf1f1a00356dff418066661c606f19.png](https://i-blog.csdnimg.cn/blog_migrate/bb84791cfd82c4d4a464096451b40f5c.png)
修改后的MSCA模块被作者称为MSA(Multi-Scale Aggregator,图3b)。
对比这两幅图以及图3就比较好理解了,作者在这里也说明了他们提出的LKA可以看作是attention机制和多尺度aggregator的相结合。
为了最小化计算成本,作者将LKA模块放置在FPN的横向层之后(图2)。
LKA的实现过程涉及到一堆比较复杂的数学公式,笔者在这里就不列出了,感兴趣的朋友可以去看原文进行推导。笔者理解这就是一个即插即用的用来增强特征表示的模块,像CondLaneNet也是在backbone和FPN之间穿插了一个Transformer encoder来增强特征表示。
3.3 General Lane IoU loss
![d7bc49dff0742031083536666b3c1f4f.png](https://i-blog.csdnimg.cn/blog_migrate/81388d99f475c669e5f6ba07ba110594.png)
动机:CLRNet提出了LIoU loss,以解决基于anchor的方法对anchor上每个采样点计算L1 loss来回归而没有将一条车道线视为一个整体来进行回归的问题。但LIoU loss也有一些局限性,如图4所示,其实就是无法直接优化没有重叠的部分,对于这种情况,反而是对每个采样点计算L1 loss更适用。
因此作者对LIoU loss进行了优化,加了一个额外的惩罚项来强调不重叠的两条车道线之间的空间关系。和LIoU类似,首先扩展每个点,形成具有一定宽度e的线段,然后计算线段的IoU。然后计算每对扩展段之间的L1距离,得到间隙距离ξ:
![3b0f7584f4cf0ab887e2b7e86716d98e.png](https://i-blog.csdnimg.cn/blog_migrate/183f0b9b7e11feb66a0bdba94fb620ed.png)
用LIoU减去间隙距离与并集的比值,就得到了GLIoU:
![cf7dd71dadc7626d641850316d554cc2.png](https://i-blog.csdnimg.cn/blog_migrate/cd2e1f730928386f3806a85413362641.png)
其中j表示第一个验证点的索引。公式(9)和公式(10)上和的定义是在CLRNet中引入的。如果预测与gt重叠,那么GLIoU就退化成了LIoU。如果预测与gt不重叠,那么引入额外的惩罚项ξ来更准确地捕捉L1距离,同时仍然将车道线视为一个整体。
那么GLIoU loss就可以定义为:
![7e902eafdfd6bd780e318ac90765f8e3.png](https://i-blog.csdnimg.cn/blog_migrate/fd085422b123021bf2bdd769b2a3bfa0.png)
GLIoU的范围为(−2,1],当预测车道与地面真值完全匹配时,GLIoU = 1。虽然GLIoU的下界是-2,看起来不对称,但它是预测弯道形状更合适的选择,因为在大多数情况下,预测与gt并不完全对齐。GLIoU loss的重点不是重叠部分,而是改善重叠较差的部分。
3.4 自适应车道线感知单元ALAU
![5f12995fdf6efa8706d9b9f5ac1b544c.png](https://i-blog.csdnimg.cn/blog_migrate/c36cbe186e68673f594eb996cc66f6f6.png)
动机:传统的卷积网络进行车道检测可能不是最优的,因为它们运行在固定的网格上,不能很好地与不规则形状的车道线对齐。虽然可变形卷积网络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的特征,然后分类和回归)。
3.5 训练细节
3.5.1 正负样本匹配
和CLRNet一样,都是采用YOLOX提出的SimOTA动态匹配策略,具体过程详见CLRNet。
3.5.2 loss
![32f39583e30710e54a3d22caa8a8e26a.png](https://i-blog.csdnimg.cn/blog_migrate/155b09a1711483d62789b8ce6537a8a7.png)
是用于对anchor上分布的采样点回归的GLIoU loss,是对anchor进行分类的focal loss,是对起始点区域进行分类的focal loss,θ是起始点角度的L1 loss。
4.实验部分
作者在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利用时序信息,所以这篇文章的方法并不属于视频车道线检测的范畴。
4.1 性能对比
![2d83e5a4685060d7a45e8c1c58c2667d.png](https://i-blog.csdnimg.cn/blog_migrate/a03ef6c571ca302e193f77075dcd44ff.png)
在CULane数据集上的比较,在基于anchor的方法中排名第二,仅次于CLRNet。
![dcfbf9c822263a1b9e6bacfb16eb66f4.png](https://i-blog.csdnimg.cn/blog_migrate/60be2da2ddf325aa7d3234fb9ef4e791.png)
在VIL-100上远超baseline模型MMA-Net。CLRNet在VIL-100上未能保持其优势,为了与CLRNet进行公平的比较,作者将起点重新定位到图像的三个边缘(表中加了个*号的就是),但结果依然优于CLRNet(图7是ADNet和CLRNet在VIL-100数据集上的可视化对比)。
![0d3a7b9ca5152a3733f179353421a815.png](https://i-blog.csdnimg.cn/blog_migrate/052cae675547daf647bcc2d9adee26bd.png)
![8fbab8f5d917fb949fba08500196dfb1.png](https://i-blog.csdnimg.cn/blog_migrate/0cb94e5ac967a6802345df2dbc1d0a6c.png)
Tusimple现在已经刷的差不多了,目前最高还是CLRNet(ResNet18为backbone的分数是97.89)。
![e68950d594611329e9122cf369a6a766.png](https://i-blog.csdnimg.cn/blog_migrate/9aaeba0ae3bd8037df0dfba1c7151fe8.png)
性能和速度对比。
4.2 消融实验
1、整体消融研究。
在baseline模型(ResNet)逐渐增加起始点生成单元(SPGU)、自适应车道线感知单元(ALAU)、GLIoU loss和大内核注意力模块(LKA)。
![ca1e575842d875cc28e4dd521da8ca04.png](https://i-blog.csdnimg.cn/blog_migrate/036041741fd728e4c1529fd6ded2fd72.png)
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。
![57460d461db7bc28e3168d5e1810ea7a.png](https://i-blog.csdnimg.cn/blog_migrate/b20d411b588c5f1d91a9c24aca0a6a99.png)
5.总结
1、ADNet:利用SPGU生成高质量anchor,利用ALAU增强车道线特征表示;
2、提出GLIoU loss来解决LIoU loss的局限性;
3、大内核注意力模块LKA,第一个研究Large Kernel机制在车道线检测任务中保证anchor质量的有效性,因为车道线通常覆盖整个图像,往往需要非常大的上下文才能准确捕获。
4、VIL-100结果SOTA(但其实低于同期的RVLD),CULane和Tusimple也取得不错的结果。
① 全网独家视频课程
BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、协同感知、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)
![1e160f9a371421de34e11fc8ab24d960.png](https://i-blog.csdnimg.cn/blog_migrate/5c5073e9c8a3acf808c3a575045655cc.png)
② 国内首个自动驾驶学习社区
近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!
![7e3508e227ea99987bb5e56cefaba220.png](https://i-blog.csdnimg.cn/blog_migrate/52071e3de41af8e96f7ca1192de97880.png)
③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
④【自动驾驶之心】平台矩阵,欢迎联系我们!