点击下方
卡片
,关注
「3D视觉工坊」
公众号
选择
星标
,干货第一时间送达
来源:深蓝AI
添加小助理:cv3d008,备注:方向+学校/公司+昵称,拉你入群。文末附3D视觉行业细分群。
扫描下方二维码,加入「
3D视觉从入门到精通
」知识星球
,星球内凝聚了众多3D视觉实战问题,以及各个模块的学习资料:
近20门秘制视频课程
、
最新顶会论文
、计算机视觉书籍
、
优质3D视觉算法源码
等。想要入门3D视觉、做项目、搞科研,欢迎扫码加入!
为了减少对高清地图的依赖,自动驾驶领域的一个发展趋势是利用车载传感器在线生成矢量地图。然而,目前的方法大多受限于仅处理单帧输入,这妨碍了它们在复杂场景中的鲁棒性和有效性。为了解决这一问题,本文提出了一种在线地图构建系统,该系统利用长期的时间信息来建立一致的矢量地图。首先,该系统通过现成的网络高效地融合所有历史道路标记检测结果到一个语义体素地图中,该地图采用基于哈希的策略来利用道路元素的稀疏性。然后,通过分析融合的信息找到可靠的体素,并逐步聚类成道路标记的实例级表示。最后,系统结合领域知识来估计道路的几何和拓扑结构,这些结果可以直接被规划与控制模块使用。复杂城市环境中进行的实验证明了本文的系统输出比仅用网络输出的结果更加一致和准确,并且可以有效地应用于闭环的自动驾驶系统中。
地图通常用于定位和规划控制。传统上,自动驾驶车辆主要使用预制的HD地图,但其制作和维护依赖于昂贵且耗时的多传感器移动测绘系统。为了减少对这些离线HD地图的依赖,研究人员开发了利用车载传感器实时构建在线地图的无地图解决方案,如HDMapNet和MapTR。这些方法从鸟瞰图视角构建地图,但容易受到遮挡和光照变化的影响,且地图间的时间一致性不足。
为改善时间一致性,研究人员探索了多种方法,如使用深度网络进行时间融合的StreamMapNet和MapTracker,它们通过记忆缓冲区保留先前的特征并结合当前数据以提高一致性,但这增加了计算和存储负担。另一种方法是跟踪和融合神经网络的3D检测,如MonoLaM,这种方法更灵活高效,但依赖于检测结果的一致性。此外,与成熟的HD地图相比,大多数在线地图构建方法缺乏对PnC算法至关重要的车道级信息。本文提出了一个在线地图构建系统,用于闭环自动驾驶,要求地图时间一致且包含车道信息。本文融合检测网络的输出而非高维特征,采用基于空间哈希的稀疏体素地图,随时间融合检测数据。这种方法无需显式时间数据关联,能高效提取稳定的道路标记实例,如图1所示。本文还提出了一种基于常见道路布局的通用程序,从体素中提取的矢量化实例构建车道和连接,输出可直接用于PnC算法,支持复杂城市环境中的自动驾驶。
主要贡献包括:
●一个用于无HD地图自动驾驶的在线地图构建系统。它可以直接输出轻量级的几何和拓扑道路结构,供PnC算法使用;
●一种有效的基于体素的融合方法,可以高效地将嘈杂的道路标记检测融合成一致且准确的矢量化实例;
●在复杂的现实世界城市环境中进行全面实验,以验证所提出系统的效能和适应性。
▲
图1|所提出系统在城市道路测试中的结果©️【深蓝AI】编译
■
3.1 3D道路标记检测
获取3D道路标记最直接的方法是将图像平面上的语义信息投影到3D空间。例如,RoadMap使用逆透视建图将前向摄像头的语义分割投影到地面平面。然而,IPM假设地面是平面的,因此在上坡路段等条件下可能会退化。可以使用额外的硬件,如激光雷达和立体摄像头,来获取实际高度以实现准确投影。
另外,研究人员已经探索直接从图像中预测3D道路标记。大多数最近的研究将检测任务在BEV视角中制定,以充分利用环绕视角摄像头的信息。环绕视角图像的特征被聚合到BEV空间,并在BEV特征上执行道路元素的分割。为了进一步促进下游任务,道路元素的矢量化形式(例如,多段线)可以在单独的后处理步骤中生成,或者直接从网络以端到端的方式生成。尽管最先进的网络已经能够实现出色的检测性能,但
它们大多依赖于单一时间点的图像,并且在现实世界场景中仍然缺乏稳定性。
■
3.2 道路制图
缓解单次检测不稳定性的一个常见方法是融合多次信息来构建持久的地图。这主要是作为一个离线过程开发的。例如,利用多传感器的SLAM技术进行离线高清地图构建。为了最小化所需的传感器和成本,RoadMap采取基于视觉的方法,为视觉定位构建离线地图。与此相反,在线道路制图有潜力降低离线维护成本,并吸引了越来越多的研究兴趣。大多数工作采用成熟的SLAM技术。Road-SLAM使用IPM获取道路标记点,并将其分割和分类为不同类型。分类后的标记用作基于姿态图的SLAM中的地标。
其他工作探索直接使用3D道路标记。例如使用立体摄像头提取参数化为Bézier曲线的3D路径边界,然后在EKF中估计摄像头姿态和3D曲线。本文的工作属于在线道路制图类别,但在几个方面有所不同。首先,由于基于体素的融合策略,本文的方法不需要显式数据关联。其次,与其他基于体素的方法相比,本文能够生成矢量化的道路标记。最后,所提出的系统专注于为现实世界自动驾驶系统中的下游模块直接生成可用的地图,而上述方法主要服务于定位目标。
最近,为了提高稳定性,检测网络中直接引入了显式时间融合。这些方法,如StreamMapNet和MapTracker,通常维护一个过去网络特征的窗口,以便与当前特征融合。这会产生不可忽视的计算成本,因此限制了可以利用的时间信息的范围。
本文所提出的系统利用环绕视角摄像头和里程计姿态作为输入,输出矢量化的道路标记(车道线、道路边缘和停止线)以及道路布局(车道和车道连接)供PnC模块使用。
▲
图2|所提出系统的示意图 ©️【深蓝AI】编译
■
4.1 道路标记检测和预处理
本文使用深度神经网络(MapTR)来检测车辆周围的3D道路标记。唯一的假设是网络将检测到的标记输出为多段线,这使得本文的方法与广泛的网络兼容。具体来说,每个检测到的道路标记被表示为有序的3D点,带有语义标签和置信度,即
其中
是道路标记类型,
是置信度。请注意,3D点是在车辆的本体坐标系中。
由于网络检测的不完美,本文首先根据几个线索发现并拒绝
中可能错误的路面标记。首先,如果检测到的标记
的置信度
低于某个阈值,则该标记会被丢弃。其次,计算多段线
连续线段之间的角度,并拒绝锯齿形多段线。相关的阈值是手动调整的。然后,将过滤后的道路标记转换到一个预定义的参考框架
中,以便融合到持久的表示中。具体来说,多段线的点被转换为
。
单次时间点过滤后的道路标记仍然可能包含相当多的噪声,并且没有强制执行时间一致性(见图2,第二列)。因此,本文融合不同时间点的检测结果以获得更稳定的几何和语义信息,即语义地图。此外,融合过程应该是增量的,以适应像本文这样的在线系统。
▲
图3|体素哈希数据结构。语义体素地图以哈希表格式维护,并由按空间坐标索引的独立块组成 ©️【深蓝AI】编译
本文使用基于体素哈希方法的动态体素地图,以高效地融合不同时间点检测到的道路标记。如图3所示,体素地图由独立块组成,这些块按其空间坐标索引。一个哈希表维护块位置和它们在内存
操作。值得注意的是,该方法通过仅在有效观测的地方分配块来处理地图增长。这使得它特别适合表示道路标记,因为道路标记本质上是稀疏的。
在本文的方法中,在参考框架
中创建了一个语义体素地图,语义地图中的一个体素存储了几何和语义信息,如下所示:
其中
是体素的中心,
表示体素(即它所占据的体积)被检测为某种特定道路标记类型的次数。
当有新的观测数据可用时,每个道路标记按照以下方式集成到语义体素地图中。首先,本文通过根据预定义的体素大小对多段线进行采样,确定所有可能与
重叠的体素的位置。然后,本文为以前未观测到的位置在语义地图中分配新的体素。最后,本文更新所有体素的检测次数如下:
为了促进后续步骤中体素的聚类,本文还额外维护有关观测体素的实例级信息。概念上,本文维护一个二维矩阵
(称为共观测矩阵),它可以被语义地图中的任何两个体素索引,其中
表示
和
在同一道路标记检测中出现的次数。直观上,
指示这两个体素属于同一物理道路标记的可能性。要使用
更新
,本文只需将所有重叠体素对的相应条目增加一。
上述更新过程累积了每个体素的所有历史检测信息,,以便选择可靠的体素,这些体素累积了足够的观测次数,可以被确定为某种类型的道路标记。具体来说,考虑在(2)中制定的体素,设
为最可能的道路标记类型的检测次数,当且仅当
处理完
中的所有道路标记后,可以获得由于最新检测而变得可靠的体素集合。在所有更新的体素中,满足标准(5)的体素被统称为
其中
是最可能的道路标记类型,
是相应的检测次数。
用于更新实例级信息,如下所述。
为了使语义体素地图对下游模块有用,本文进一步聚类语义体素以识别各个道路标记并估计它们的几何参数。这个过程,被称为实例建图,也是增量进行的。形式上,在每个时间点
有不同类型道路标记的实例集合
,并且:
其中
表示类型为
的所有实例。每个实例
由一组体素和一个参数化的几何模型
组成。最初,
是空的,实例是从
增量构建的。
新可用的可靠语义体素
用于更新现有的语义实例
或创建新的实例。对于每个体素
,首先选择所有与它相同道路标记类型的实例
。然后,对于
中的每个实例 ,使用在 (4) 中定义的共观测矩阵
来确定
是否属于该实例。具体来说,对于
中的每个体素
,计算体素和候选体
属于同一实例的概率为
其中
的范围从0到1。然后计算具有足够大概率的体素数为
时,
被认为是属于该实例并被添加进去,其中
和
分别是可能属于同一实例的体素的最小数量和比例。如果体素与任何实例都不匹配,则创建一个新实例。
共观测矩阵保留了道路标记检测中的实例级信息,除了每个体素累积的几何信息。使用共观测矩阵进行聚类的好处是不需要复杂的几何阈值,并且相当稳健。
本文使用多段线作为道路标记的参数模型,(7)中的几何模型参数变为
。多段线是简单而有效的模型,用于表示道路标记的形状。例如,停止线可以被紧凑地建模为两点多段线,而弯曲的车道线/道路边缘可以用更多的点轻松建模。
▲
图4|体素根据主成分(蓝色)被分成组 ©️【深蓝AI】编译
要从每个道路标记实例中的体素(7)估计一条多段线,本质上需要将体素分成几组,每组都可以拟合成一条直线,并且误差足够低。因此,本文设计了一种基于PCA的分割方法,如图4所示。首先,计算体素中心的第一和第二主成分,分别记为PC1和PC2,相应的特征值分别为
和
。那么:
1)如果
/
低于给定阈值,则认为体素主要分布在PC1上。可以根据预定义的长度将PC1分割成段,并且根据它们的中心在PC1上的投影落在哪个段来进行体素分组。
2)否则,体素首先根据PC1和PC2被分成四个象限,每个象限中的体素按照第一种情况处理,但是使用更小的段落长度以考虑可能的大曲率。一旦确定了体素组,可以轻松地为每个组拟合一条直线,并将拟合的直线连接成一条完整的多段线。
基于道路标记实例(7)可以进一步生成详细的道路布局,即车道及其连接,这可以直接被PnC算法使用。注意,以下步骤只需要处理实例的参数模型,因此非常高效。
▲
图5|从道路标记实例生成车道和连接 ©️【深蓝AI】编译