作者 | Jessie
出品 | 焉知
众所周知,可靠地环境状态感知的能力,尤其是潜在对象的存在及其运动行为,对于自动驾驶至关重要。在自动驾驶系统运行过程中比较重要的是对其行驶的周边环境进行态势评估。这需要通过多个车载摄像机图像、激光点云、毫米波雷达点云协助一定的算法模型实现。原理是对于车身周围的整个环境的探测描述,以获得校正后的360度鸟瞰图BEV(Birds Eye Views)图像。校正的BEV图像可被分割出语义类别,以语义分割图像作为输入,可以减少模拟数据与现实世界数据之间的实际差距,并且可以成功应用于实际工况下的探测过程中。总体说来,在鸟瞰图中可以很好的估计遮挡情况下的语义场景,这一过程可以对3D几何形状和可见场景语义有更加准确的了解,同时对遮挡区域进行更加准确的预测,生成质量更高的道路layout。同时,BEV图像的建立可以对具有低照度和大量的车辆生成车辆和道路layout的清晰估计。
BEV的遮挡区域预测
由于BEV投影保留了物体的大小和距离,为学习提供了强大的先决条件。同时,神经网络方法生成的BEV图像并不依赖手动标记数据,而是在模拟合成数据集上进行训练,并泛化到现实世界数据,通过给出道路场景的单个图像,神经网络架构实时(30 fps)在鸟瞰视图中推理非模态场景。使那些在图像不可见的静态场景(道路,人行道)以及交通参与者幻觉般恢复。这种拟合预测的方法可以很好地应用在对环境动态过程的预测规划中,实现对遮挡区域的预测。
对于每个车载摄像机,虚拟射线是从其安装位置投射到语义分割的真值BEV图像边缘上,且这个射线仅投射到特定摄像头视野的边缘像素。对于BEV图像而言,通常是根据以下规则处理这些射线的所有像素以确定它们的遮挡状态:
序号 |
语义分类 |
遮挡射线情况说明 |
1 |
建筑物,卡车 |
总是挡住视线 |
2 |
道路 |
永远不会遮挡视线 |
3 |
卡车,公共汽车 |
汽车挡住了视线,但不能挡在后面的较高物体 |
4 |
所有道路级目标 |
被部分遮挡的物体仍然完全可见; |
5 |
所有环境目标 |
仅当目标在所有摄影机透视图中均被遮挡时,才将其标记为遮挡。 |
这里需要说明BEV对这种遮挡目标的预测对自动驾驶行为中极具挑战性的场景,比如当大多数视图被车辆遮挡,并且场景呈现出高动态范围(HDR)和阴影等现象时,自动驾驶系统可以接收BEV的预测结果实现很好的风险态势评估,态势评估结果可以对自车的轨迹预测和决策规划模型产生很好的先验知识输入,比如增加轨迹预测过程中某个方向上的危险权重,适当的对轨迹进行偏移调整,决策规划模型可能会对相应的横纵向控制策略进行调整,比如经过对应方向路口前进行一定程度的减速,对向偏移等。
此外,BEV图像中可以实现的单道路环境级分布图,准确的估计移动车辆的未来轨迹。同时对具有低照度和大量的车辆,BEV的单层布局方式能够准确生成车辆和道路layout的清晰估计。
BEV的定位建图
此外,BEV图像可以很好的实现地平面估计、道路分割和3D目标检测,生成质量较高的车道级Layout。这一过程主要依靠端到端深度学习架构直接从视觉图像、激光点云、毫米波点云中进行估计,估计的过程会充分考虑到三者各自所具备的优势,进行权重分配,实现有效的前融合和后融合。
如上图所示,在视觉处理端口,整个传感器数据融合过程接收输入端的各个方向的摄像头感知结果,生成视觉多任务模型,这些任务包含2D感知、深度和路面高程、动态目标3D检测,生成多摄像头融合模型,该模型用于俯视动态目标3D检测实现道路俯视图语义分割。
而在整个雷达处理端口,接收整个激光雷达和毫米波雷达输入,再进行点云拼接,然后利用点云朵人物模型进行3D检测和语义分割,结果输入视觉和点云融合模型进行增强的道路俯视图语义分割并生成动态目标3D检测,最后生成语义预测模型。
BEV的这种道路布置输出对于自动驾驶开发来说是非常好的一种检测能力,基本可以看成一种伪高精地图,甚至可以实现车道级的定位和预测,并且实时性相对于众包建立的高精地图高很多,这就不仅能够很好地解决高精地图所能解决的很多定位问题,可以很好的帮助解决一些定位相关的边缘极端场景。
比如高精定位的更新速度往往是按照月级进行更新,这就意味着,当由于道路施工等场景下,高精定位并不能进行有效的实时更新,其更新速度和能力的短板导致自动驾驶系统往往不能将实时道路信息纳入到态势评估的考虑范围,这就导致在自车的轨迹规划中不能充分进行风险规避。而BEV图像由于是实时生成的“地图信息”,这就能够很好的解决对于环境实时性定位的问题。
此外,BEV建图过程中存在动态目标预测,即对于行驶过程中的不可见危险目标会有一定的预测能力,甚至可以部分解决类似鬼影的问题,这也可以很好的辅助自动驾驶系统解决相关的规划控制极限问题,比如实现提早收油、减速或者转向等,并且可以通过环境报警提示自车驾驶员和环境车辆进行避撞。
当然,纯BEV生成的类似定位你信息也存在一定的局限性,比如定位建图范围窄,各向预测距离近等问题,这些都是基于众包高精定位的强项。因此,最好的方式是通过BEV与地图引擎的结合来做相应的融合定位。
BEV的环境3D模型重建
对于自动驾驶来说,用激光雷达对前方目标进行三维信息探测已经是业界公认的事实了,由于这种三维信息往往会给予规划控制模块足够的信息用于确认目标方向上是否允许车辆继续向前持续行驶。这里需要注意,虽然说鸟瞰图主要是针对2D的整体显示,但是在预测过程中,也会选择性的对其3维模型仍旧形成相应的点云重建信息,一般情况下,这类重建是针对其激光雷达点云进行的,而随着摄像机配置逐渐由单目向双目的演进,基于双目甚至三目图像的重建将逐渐进入到整个应用过程中。这种重建类型主要是针对自动驾驶过程中异形目标可以实现很好的检测,即便场景库对该目标没有实质性的训练过,但仍旧能够在通过BEV建图过程中直接将其标准为不可预知的目标。甚至将其深度、高度、密度等信息在鸟瞰图中进行标识,为自动驾驶进行提前规划。
BEV图像可以应用在预先绘制的环境中工作,在一天中的不同时间或一年中的不同季节,光照和天气可能会发生剧烈变化的情况。使用基于语义的BEV映射允许只使用2D卷积网络,而不是3D,这有助于提高速度。定位到拓扑节点和训练神经网络来预测相对位姿,也可以限制最大误差到拓扑节点内。
基于BEV图像的鸟瞰图生成
既然BEV图像对于自动驾驶显得如此重要,那么就需要在这里对相关的图像生成原理进行阐述说明。自动驾驶感知中BEV的图像生成由一组神经网络组成,这些神经网络从不同的传感器探测中获取环境数据,这些传感器包含毫米波雷达、激光雷达、整个车载摄像头,并将其转换为单个通用的自上而下的语义网格表示形式。
这种表示与传感器特定的参考框架无关,并且捕获了周围场景的语义和几何信息。因为这些模式共享一个单输出表示,可以轻松地汇总产生融合的输出。多个神经网络,每个传感器模态(Radar,Lidar和Camera)各一个,接收一系列输入传感器数据,通常对于自动驾驶而言会要求输出代表3个目标类别(弱势道路用户即VRU、车辆和背景)的一系列自上而下的共享语义网格;然后,使用聚合函数融合序列,以输出语义网格的融合序列。最后,再将其输入到一个解析器网络预测最终的鸟瞰图分割,做“填洞”和“平滑”等工作。
下面将具体讲解一下基于序列图像数据生成鸟瞰图方法。
整个系统总体架构包括用于每个传感器模式的神经网络,网络体系结构均由具有卷积层的编码器-解码器网络组成。与激光雷达和毫米波雷达网络相比,视觉网络使用略有不同的编码器和解码器方案,ResNet为主干,主要是解决像素空间特征问题。
Step1:首先对摄像头输入的图像进行畸变校正;为了创建鸟瞰图图像,点云数据中的相关轴将是 x 和 y 轴。一般汽车坐标系中的轴方向与真实世界坐标系是相反的。因此,必须移动这些值,以便 (0,0) 是图像中的最小可能值。
Step2:N个RGB道路场景图像由不同角度的摄像头(包括前视、侧视以及后视)捕获,并分别通过语义分割网络Semantic生成语义分割图和深度估计网络Depth生成深度估计图;
Step3:所得到的视觉图像语义分割和深度图被组合并投影到3-D变成语义点云,这里点云语义图可能是不完整的。
Step4:将该点云投影到完整的鸟瞰图中,进行BEV点云编码,整个处理过程涉及鸟图视角转化。相应的转化过程如下:
1)首先基于图像特征沿高度轴进行折叠生成条形特征图;
这一过程中必须限制所要查看矩形,且需要创建一个过滤器,只保留我们感兴趣的区域内的点,然后将点位置映射到像素位置,为了捕捉到更多的细节,需要进行数据缩放并通过平移转换映射到新的原点位置周围。由于我们使用点数据来指定图像中的 x 和 y 位置。因此,可以用高度数据来填充这些像素位置的值。但要注意像素值应该是整数且应介于 0-255 之间。
2)然后基于图像深度轴进行图像扩展生成对极鸟瞰图;
整个过程涉及创建图像数组,只需初始化一个数组,其维度取决于之前在矩形中所需的值范围和选择的分辨率。然后使用转换为像素位置的 x 和 y 点值来指定数组中的索引,并将之前滤波器过滤后的像素值的值分配给这些索引。
3)对极鸟瞰图在笛卡尔坐标系下进行重采样生成鸟瞰图视角特征图;
Step5:对编码及视角转化后的图像进行BEV图形解码生成BEV语义图;
在解码后为了查看鸟瞰图,需要将图像存储为一个 numpy 数组。如果我们希望将其可视化,我们可以将其转换为 PIL 图像并查看。可以在 matplotlib 中使用光谱颜色映射从而有助于我们更轻松地分辨价值差异。
总结
自动驾驶系统感知算法应用中,基于BEV的图像感知算法是应用得十分广泛的。特别是基于传感器融合的BEV算法可以很好的解决整个感知定位过程中的环境整体探测能力,更能生成如伪高精地图用于进行形式态势评估。特别针对自动驾驶之前的极端场景(如鬼影、大曲率弯道、不确定的3D障碍物等)的解决可以起到很好的规避作用。本文以BEV图像处理原理说明其在自动驾驶感知能力上能解决的场景应用,相信在机器视觉这一领域,BEV的研究成果也可以很好的应用在自动驾驶研究过程中。