结构导向车道检测
摘要
近年来,随着深度神经网络和自动驾驶的快速发展,车道检测取得了长足的进步。然而,主要存在三个问题,包括车道的特征化、场景与车道之间的结构关系建模以及对车道的更多贡献(如实例和类型)的支持。在本文中,我们提出了一种新的结构导向框架来同时解决这些问题。在该框架中,我们首先引入了一种新的车道表示来表征每个实例。然后,提出了一种自上而下的消失点导向锚定机构,以产生密集型锚,有效地捕获各种车道。其次,使用多级结构约束来提高车道的感知能力。在此过程中,引入了像素级感知和二值分割来提升锚点周围的特征并自下而上恢复车道细节,提出了车道级关系来建模车道周围的结构(即平行),并使用图像级注意力从场景的角度自适应地关注图像的不同区域。在结构指导的帮助下,锚被有效地分类和重新分级,以获得精确的位置和形状。在公共基准数据集上的实验表明,所提出的方法在单个GPU上以117 FPS的速度优于现有技术。
一、介绍
车道检测旨在检测道路场景中的车道,是一项基本的感知任务,具有广泛的应用(例如,ADAS[Butakov和Ioannou,2014]、自动驾驶[Chen和Huang,2017]和高精度地图制作[Homayunfar et al.,2019])。车道检测已经取得了重大进展,它也被用作道路场景理解任务的重要元素,例如驾驶区域检测[Yu et al.,2020]。
图1、车道检测的挑战。(a)各种表现形式。存在许多类型的注释[TuSimple,2017;Pan等人,2018;Yu等人,2020;Lee等人,2017],这使得难以统一地描述车道。(b)研究不足的场景结构。车道位置强烈依赖于结构信息,如消失点(黑点)、鸟瞰图中的平行度和透视引起的距离注意。(c)要支持的更多属性。车道具有更多的属性,如实例和类型,这些属性应该进行预测。
为了解决车道检测的任务,近年来提出了许多基于学习的方法[Pan et al.,2018;Qin et al.,2020],在现有基准上取得了令人印象深刻的性能[TuSimple,2017;Pan et al.,2018]。然而,仍然存在一些阻碍车道检测发展的挑战。首先,缺乏统一有效的车道表示。如图1a所示,存在各种定义,包括点[TuSimple,2017]、掩码[Pan etal.,2018]、标记[Yu et al.,2020]和网格[Lee et al.,2017],对于不同的场景,它们在形式上有很大的不同。其次,很难对场景和车道之间的结构关系进行建模。如图1的(b)所示,依赖于场景的结构信息,如消失点的位置和车道的平行度,非常有用,但没有方案来描述它。最后,在预测车道时,预测其他属性也很重要,包括实例和类型(见图1的(c)),但对现有方法进行扩展并不容易。这三个困难尤其难以处理,大大减缓了车道检测的发展。由于这些困难,车道检测仍然是一项具有挑战性的视觉任务。
为了解决第一个困难,许多方法都用简单的拟合曲线或掩码来表征车道。例如,SCNN[Pan et al.,2018]将该问题视为语义分割任务,并在特征图中引入逐片卷积,从而实现消息传递。对于这些方法,车道被表征为一种特殊的形式(例如,点、曲线或掩码),因此通常很难支持具有不确定数量标记或网格的格式。同样,支持后者的人[Lee et al.,2017]也不太支持前者。为了解决第二个问题,一些方法使用消失点或平行关系作为辅助信息。例如,消失点预测任务[Lee et al.,2017]用于隐式嵌入地理度量上下文识别能力。在这些方法中,他们通常只关注某一种结构的形成,或者不直接端到端地使用它,这导致结构不能完全发挥作用,算法复杂。对于最后一个问题,使用一些基于聚类或检测的方法来区分或分类实例。Line CNN[Li et al.,2019]利用线路建议作为参考来定位交通曲线,这迫使该方法学习车道的特征。对于这些方法,它们可以区分不同的实例,甚至可以扩展到更多的属性,但它们通常需要额外的计算,并且有许多手动设计的超级参数,这导致了较差的可扩展性。
图2、我们方法的框架。我们首先通过提取器提取常见特征,提取器为消失点引导锚定和像素级感知提供特征。锚定产生密集的锚,感知利用二元分割来促进车道周围的特征。借助车道级关系和图像级注意力,利用提升特征对锚点进行分类和回归。虚线箭头表示监督,图中省略了对消失点和车道分割的监督。
受这些观察和分析的启发,我们提出了一种新的结构导向车道检测框架,如图2所示。为了表征车道,我们提出了一种基于箱线的建议方法。该方法利用车道的最小外接矩形进行实例识别,并利用其中心线进行结构化定位。为了利用结构信息进一步提高车道检测,提出了消失点引导锚固机制来生成意图锚(即尽可能少且准确的锚)。在该机制中,消失点以分割的方式学习,并用于自上而下产生结构锚,可以有效地捕捉各种车道。同时,我们提出了多层次的结构约束,以提高对车道的感知。在此过程中,像素级感知借助于车道二值分割来改善车道细节,车道级关系旨在通过神经网络通过逆透视映射(IPM)对车道间的平行性进行建模,图像级注意力是从场景的角度对具有自适应权重的图像进行关注。最后,提取结构引导下车道锚的特征,进行准确的分类、回归和其他属性的预测。在CULane和Tusimle数据集上的实验结果验证了所提出的方法的有效性,该方法实现了最先进的性能,并在117 FPS下高效运行。
本文的主要贡献包括:
1)我们提出了一个结构导向的车道检测框架,该框架对车道进行了表征,可以准确地对无限车道的形状进行分类、定位和重新存储。
2) 我们介绍了一种消失点引导锚定机构,其中消失点将被预测并用于产生密集的anchors,该机构可以精确地捕获车道。
3) 我们提出了多级结构约束,用于感知像素级的一元细节,建立车道级的成对关系模型,自适应地处理图像级的全局信息。
二、相关工作
在本节中,我们将从两个方面回顾旨在解决车道检测挑战的相关工作。
2.1、传统方法
为了解决车道检测问题,传统的方法通常基于手工制作的特征,通过检测标记的形状和拟合样条曲线。[Veit等人,2008]对用于检测道路标线的特征进行了全面概述。Wu和Ranganathan,2012]使用最大稳定极值区域特征,并执行模板匹配来检测多个道路标记。然而,有些方法在陌生的条件下往往会失败。
2.2、基于深度学习的方法
深度学习的发展,基于深度神经网络的方法[Pizzati和Garc´ıa,2019;Van Gansbeke等人,2019;郭等人,2020]在车道检测方面取得了进展。SCNN[Pan et al.,2018]概括了传统的深层逐层卷积,以实现在行和列之间的像素之间的消息传递。ENet SAD[Hou et al.,2019]提出了一种知识提取方法,该方法允许模型在没有任何额外监督或标签的情况下自我学习。PolyLaneNet[Tabelini et al.,2020]对车道标线采用多项式表示,并通过深度多项式回归输出多项式。超快[Qin et al.,2020]将车道检测过程视为使用全局特征的基于行的选择问题。CurveLanes[Xu et al.,2020]提出了一种车道敏感架构搜索框架,以自动捕获长距离连贯和准确的短距离曲线信息。
在这些方法中,采用了不同的车道表示,并考虑了一些结构信息以提高性能。然而,这些方法通常基于神经网络强大的学习能力来学习车道的拟合或形状,与场景相关的结构信息对车道的作用还没有得到足够的关注和讨论。
三、提出的方法
为了解决这些困难(即,表征车道,对场景和车道之间的关系进行建模,并支持更多属性),我们提出了一种用于车道检测的新型结构引导框架,称为SGNet。在这个框架中,我们首先介绍了一种新的车道表示。然后提出了一种自上而下的消失点引导锚固机制,并使用了下一个多级结构约束。拟议方法的细节描述如下。
3.1、车道表示
为了适应不同风格的车道标注,我们介绍了一种新的基于框线的车道表示方法。首先,我们计算车道实例Llane的高度为h、宽度为w的最小外接矩形R(“长方体”)。对于这个矩形,获得了垂直于短边的中心线Lcenter(“线”)。正X轴与L中心顺时针方向的夹角为θ。以这种方式,Lcenter提供了车道的位置,h和w限制了所涉及的区域。基于R和Lcenter,可以执行基于点、掩码、标记符、网格和其他格式的车道预测。在本文中,之所以采用基于车道检测关键点的解决方案,正是因为公共数据集中基于点的车道标注风格(例如,CULane[TuSimple,2017]和Tusimle[Pan et al.,2018])。
图3、车道表示
受现有方法的启发[Li et al.,2019;Chen等人,2019;Qin et al.,2020],我们定义了具有等距y坐标y={yi}和yi=PH−1·i(i=1,2,…,P−1)的车道实例的关键点,其中P表示通过图像高度的所有关键点的数量,该数量固定在具有相同高度H和宽度W的图像上。因此,车道的x坐标表示为x={xi}。为了便于表达,Lcenter的直线方程定义为
中a、b和c可以很容易地通过θ和Lcenter上的任何点来计算。接下来,当中心线的y坐标为yi时,我们可以计算相应的x坐标为
然后,我们将车道Llane和中心线Lcenter之间的x坐标∆x的偏移量定义为
因此,基于Lcenter和∆X,我们可以计算车道实例Llane。通常,学习Lcenter和∆X比直接拟合Llane的关键点更容易。
3.2、特征提取器
如图2所示,SGNet以ResNet[He et al.,2016]作为特征提取器,对其进行了修改,以去除像素级预测任务的最后一个全局池化和全连接层。特征提取器有五个用于en编码的残差模块,称为Ei(πi),参数为πi(i=1,2,…,5)。为了获得更大的特征图,我们通过具有256个3×3核的卷积层对E5(π5)进行卷积,然后对特征进行×2上采样,然后与E4(π4)进行元素求和,以获得E 04(π04)。最后,对于H×W输入图像,特征提取器输出H/16×W/16特征图
3.3、消失点导向锚定
为了学习车道表示,有两种主要方法来学习中心线Lcenter和x偏移∆x。第一种方法是直接用角度、数量和位置回归来学习确定的Lcenter,由于回归任务的固有困难,通常很难获得精确的结果。第二种方法是基于成熟的检测任务,使用密集锚进行分类、回归,然后获得代表车道实例的建议。第二个模型已被证明在一般的对象检测任务中运行良好,因此我们选择它作为我们的基本模型。
学习中心线Lcenter和x偏移∆x,我们提出了一种新型的消失点导向锚定机构(称为VPG锚定)。消失点(VP)提供了强烈的几何场景特征,代表道路的尽头,也是车道在远处相交的“虚拟”点。由于VP是车道的交叉点,因此场景中的车道必须通过VP,而不通过VP的线很可能不是场景中的行车道。因此,从VP辐射出的密集线理论上可以覆盖图像中的所有车道,这相当于将chors的生成空间从R H×W×Nproposal缩小到R Nproposable。Nproposal表示在一个像素上生成的锚的数量。
如图2所示,特征图E04(π04)被馈送到VPG Anchoring。在该机制中,VP由一个简单的分支预测,该分支由多尺度上下文感知的atrous空间金字塔池(ASPP)[Chen et al.,2018]实现,然后是具有3×3的256个内核的卷积层和softmax激活。VP预测分支表示为φV(πV),参数为πV。
通常,VP在车道数据集中没有注释,例如CU lane[Pan et al.,2018],因此我们对所有车道实例的中心线交点进行平均,得到近似的VP。此外,单个点通常很难预测,因此我们将VP的区域扩展到16个像素的半径,并使用分割算法进行预测。为了实现这一点,我们期望φV(πV)的输出通过最小化损耗来近似VP(表示为GV)的地面实况掩码
其中BCE(·,·)表示像素级二进制交叉熵损失函数。
图4、VP引导的锚固机构。基于(a)消失点(黑点)和(b)消失点周围的区域(黑色和灰色点)生成的锚点(金线)。
为了确保生成的锚足够密集,我们选择了一个以VP为中心的Wanchor×Wanchor矩形区域,并以每个Sanchor取一点来生成锚。对于每个点,每个Aanchor角(Aanchor∈[0180])都会生成锚,如图4所示。通过这种方式,与一般的全尺寸均匀生成甚至专门设计的车道方法相比,锚是有针对性的、密集的且不冗余的[Li et al.,2019]。请注意,锚贯穿整个图像,为了方便显示,图2和图4中只显示了VP下方的部分。
3.4、分类和回归
为了对生成的锚点进行分类和回归,我们提取了基于E4(π4)的具有多个卷积层的高级特征图。特征图命名为FA∈R H0×W0×C0,其中H0、W0和C0是FA的高度、宽度和通道。对于每个锚点Llane,从FA中提取锚点上每个点的通道级特征,得到车道描述符DA∈R HO×C0。该描述符用于对存在的ConfLlane进行分类,并回归x偏移∆XLlane,包括车道的长度len。为了了解这些,我们期望输出通过最小化损失来近似地面实况存在GConf-Liane和x偏移G∆XLlane
其中SL1(·,·)表示平滑的L1损失,L表示提议的数量。最后,使用Line NMS[Li et al.,2019]来获得具有置信阈值的最终结果。
3.5、多层结构约束
为了进一步提高车道感知,我们要求场景和车道之间的结构关系,并深入探索像素级、车道级和图像级的结构。
像素级感知
自上而下的VPG锚定机制涵盖了车道的结构和分布。同时,还需要自下而上的细节,以确保更准确地恢复和描述车道细节。为了提高细节感知,我们引入了车道分割分支来定位车道位置,并提高了像素级的一元细节。如图2所示,车道分割分支与VP预测分支具有相同的输入和相似的网络结构。车道分割分支表示为φP(πP),参数为πP。为了分割车道,我们期望PP=φP(πP)的输出通过最小化损失来近似二进制车道掩码(表示为GP)的基本真值掩码
为了提升像素级一元细节,我们通过以下操作对输入特征FA进行加权
其中MA被馈送以进行分类和回归,而不是FA。
车道级别关系
事实上,车道在施工过程中符合一定的规则,其中最重要的是车道是平行的。由于成像的原因,这种关系在透视变换后不再保持,但它可以潜在地建模。为了对车道级别关系进行建模,我们通过神经网络通过H矩阵[Neven et al.,2018]进行IPM。学习H后,可以将站姿Llane中的车道转换为鸟瞰图中的L 0lane,其中不同的实例是平行的。形式上,我们定义车道之间的关系如下。对于图像中的两个车道实例Llane1和Llane2,通过学习的H矩阵将它们投影到鸟瞰图,并获得相应的实例L 0lane1和L 0lane2。这两个实例可以拟合为以下线性方程:
在这两个方程中,在y相等的条件下,x的差总是恒定的。因此,我们可以得到a1b2=a2b1。扩展到所有实例,车道级别关系可以公式化为
图像级别的注意
在相机成像过程中,远处的物体经过投影后会变小。通常,车道的重要信息在视觉上并不突出,但它们同样重要。分析发现,在成像过程中,车道与VP的距离与尺度成反比。因此,我们基于VP生成透视注意力图PAM,这是基于成像后的注意力和距离是二维高斯分布的强假设。PAM通过自适应地限制分类和回归损失(来自等式5)来确保不同区域的注意力,如下所示。
其中|·|表示归一化为[0,1]。
通过考虑等式(4)、(5)、(6)、(9)和(10)的损失,整体学习目标可以公式化如下:
其中P是{{πi}5i=1,π04,πV,πC,πR,πP,πL}的集合,πC、πR和πL分别是分类、回归和车道级关系子网络的参数
图5、最先进的算法和我们的方法的定性比较
个人总结
三个问题
1、缺乏统一有效的车道表示(各个算法表示车道的方式不一样)
2、很难对场景和车道之间的结构关系进行建模(转成BEV之后车道线是平行的,前视图中车道线有共同的消失点)
3、预测车道的同时,预测其他属性,例如实例分割、车道线类别
车道描述
参考图3
整体理解
这篇论文整体还是有些意思的,但是流程太多了,作者也没开源代码,应该是在这吹牛呢
个人觉得比较有意思的地方是车道线的描述方式、用卷积的方式预测车道线消失点、根据车道线消失点预设anchor、将得到的车道线转俯视图然后旋转修正车道线的位置
作者首先一顿卷积,然后分了三个头,一个用来预测车道线的消失点;一个跟根据车道线的消失点设置anchor;最后一个头进行语义分割得到第一版的车道线。将anchor的结果和语义的结果进行拼接,得到特征图。根据特征图对车道线进行描述得到第一版的实例车道线。将第一版的实例车道线和特征图进行拼接,然后在BEV上对车道线进行调整得到终版的实例车道线。
Feature Extractor:
公用的特征提取层
VP-guided Anchoring Generator:
上面那张图用来预测图像中的消失点
下面这张图根据消失点预设anchor
Image-level Attention:
消失点注意力
Pixel-level Perception:
语义分割,预测车道线(非实例)
Feature Map:
根据预设的anchor和语义分割结果生成特征图
Lane Descriptor:
根据特征图结果描述车道线的各个属性:车道长度、偏置、置信度、类型
得到第一版实例车道线
Lane-level Relation
将特征图和第一版实例车道线进行拼接,然后转BEV图,作者认为BEV图中车道线应该是平行的,因此作者在BEV图上对得到的车道进行旋转,然后得到第二版的实例车道线
论文地址
https://arxiv.org/abs/2105.05403