Camera是自动驾驶系统中的主要传感器,它们提供高信息密度,最适合检测为人类视觉而设置的道路基础设施。全景相机系统通常包括四个鱼眼摄像头,190°+视野覆盖车辆周围的整个360°,聚焦于近场感知。它们是低速、高精度和近距离传感应用的主要传感器,如自动泊车、交通堵塞辅助和低速紧急制动。在这项工作中,论文对此类视觉系统进行了详细的调查,并在可分解为四个模块组件(即识别、重建、重新定位和重组)的架构背景下进行了调查,共同称之为4R架构。论文讨论了每个组件如何完成一个特定方面,并提供了一个位置论证(即它们可以协同作用),形成一个完整的低速自动化感知系统。
本文的工作部分受到了Malik等人在[5]中的工作的启发。这项工作的作者提出,计算机视觉的核心问题是重建、识别和重组,他们称之为计算机视觉的3R。在此,论文建议将计算机视觉的3R扩展并专门化为自动驾驶计算机视觉的4R:重建、识别、重组和重新定位。
重建意味着从视频序列推断场景几何体,包括车辆在场景中的位置。这一点的重要性应该是显而易见的,因为它对于场景绘制、障碍物避免、机动和车辆控制等问题至关重要。Malik等人将此扩展到几何推断之外,以包括反射和照明等特性。然而,这些附加属性(至少目前)在自动驾驶计算机视觉环境中并不重要,因此论文将重建定义为更传统意义上的三维几何恢复。
识别是一个术语,用于将语义标签附加到视频图像或场景的各个方面,识别中包括层次结构。例如,自行车手有一个空间层次结构,因为它可以分为自行车和骑手的子集,而车辆类别可以有汽车、卡车、自行车等分类子类别。只要对自动驾驶系统有用,这种情况就可以继续下去。灯可以按类型(车灯、路灯、刹车灯等)、颜色(红、黄、绿)以及它们对自动驾驶车辆的重要性(需要响应,可以忽略)进行分类,从而完成系统的高级推理。
重新定位是指车辆相对于其周围环境的位置识别和度量定位。可以针对宿主车辆中预先记录的轨迹进行,例如,经过训练的停车场,也可以针对从基础设施传输的地图进行,例如HD Maps。它与SLAM中的环路闭合高度相关,尽管不只是考虑环路闭合问题,而是考虑根据一个或多个预定义地图定位车辆的更广泛问题。
重组是将计算机视觉前三个组成部分的信息组合成统一表示的方法。在本文中,使用这个术语来等同于“后期融合”,这是自动驾驶的重要步骤,因为车辆控制需要传感器输出的统一表示,这也允许在后期融合多个摄像头的输出。
近域感知系统介绍
自动停车系统
自动停车系统是短距离传感的主要用例之一,图4描述了一些典型的停车用例。早期商业半自动泊车系统采用超声波传感器或radar,然而,最近,全景摄像头正成为自动停车的主要传感器之一。超声波和毫米波雷达传感器用于自动停车的一个主要限制是,只能根据存在的其他障碍物来识别停车位(图5)。此外,环视相机系统允许在存在可视停车标记(如涂漆线标记)的情况下停车,同时也被视为实现代客泊车系统的关键技术。
交通拥堵辅助系统
由于大部分事故都是低速追尾碰撞,交通拥堵情况被认为是短期内可以带来好处的驾驶领域之一,尽管目前的系统可能缺乏鲁棒性。在自动交通拥堵辅助系统中,车辆在交通拥堵情况下控制纵向和横向位置(图6)。此功能通常用于低速环境,最高速度为∼60kph,但建议更低的最高速度为40kph。虽然交通拥堵援助通常考虑高速公路场景,但已经对城市交通拥堵救援系统进行了调查。鉴于此应用的低速特性,全景摄像头是理想的传感器,尤其是在城市环境中,例如,行人可以尝试从传统前向摄像头或radar系统视野之外的区域穿过。图7显示了使用全景相机进行交通堵塞辅助的示例。除了检测其他道路使用者和标记外,深度估计和SLAM等特征对于推断到物体的距离和控制车辆位置也很重要。
低速制动
一项研究表明,自动后向制动显著降低了碰撞索赔率,配备后摄像头、驻车辅助和自动制动的车辆报告碰撞减少了78%。全景相机系统对于低速制动非常有用,因为深度估计和目标检测的组合是实现此功能的基础。
鱼眼相机
鱼眼相机为自动驾驶应用提供了明显的优势,由于视野极广,可以用最少的传感器观察车辆的整个周围。通常,360°范围只需要四个摄像头覆盖。然而,考虑到更为复杂的投影几何体,这一优势带来了成本。过去的几篇论文综述了如何建模鱼眼几何形状,例如[34]。论文不打算在此重复这一点,而是关注鱼眼相机技术的使用给自动驾驶视觉带来的问题。
在标准视场相机中,直线投影和透视的原理非常接近,具有常见的透视特性,即现实世界中的直线在图像平面上投影为直线。平行的直线组被投影为一组直线,这些直线在图像平面上的一个消失点上会聚。通过光学畸变的偏离很容易纠正。许多汽车数据集提供的图像数据消除了光学畸变,具有简单的校正方法,或几乎不可察觉的光学畸变。因此,大多数汽车视觉研究都隐含了直线投影的假设,鱼眼透视图与直线透视图有很大不同。相机场景中的一条直线被投影为鱼眼图像平面上的一条曲线,平行线集被投影为一组在两个消失点处会聚的曲线[38]。然而,失真并不是唯一的影响,图8显示了环视系统中安装在镜子上的典型摄像头的图像。在鱼眼相机中,物体图像中的方向取决于它们在图像中的位置。在本例中,左侧的车辆旋转了近90◦ 与右侧车辆相比,这对目标检测卷积方法中假定的平移不变性有影响。在标准相机中,平移不变性是可以接受的假设。然而,如图8所示,鱼眼图像并非如此,在任何计算机视觉算法设计中,必须仔细考虑如何处理这一点。
解决这些问题的自然方法是以某种方式纠正图像。可以立即放弃对单个平面图像的校正,因为首先,过多的视野必然会丢失,从而抵消鱼眼图像的优势,其次,插值和透视伪影将很快占据校正输出的主导地位。一种常见的方法是使用多平面校正,即鱼眼图像的不同部分被扭曲成不同的平面图像。例如可以定义一个立方体,并将图像扭曲到立方体的曲面上。图9显示了两个此类表面上的翘曲。即使在这里,插值和透视效果也是可见的,必须处理曲面过渡的复杂性。
另一种校正方法是考虑圆柱表面的warping ,如图10所示,在这种warping 中,圆柱轴线的配置使其垂直于地面。观察结果表明,汽车场景中的大多数感兴趣对象都位于近似水平的平面上,即路面上。因此希望保留水平视野,同时允许牺牲一些垂直视野,这带来了有趣的几何组合。
垂直是通过线性透视投影,因此场景中的垂直线在图像中投影为垂直线。图像中较远或较小的对象在视觉上类似于透视相机,甚至有人建议,通过这种变形,可以使用标准透视相机训练网络,并在鱼眼图像上直接使用它们,而无需训练[39]。然而,在水平方向上,新图像中存在失真,大型近景物体表现出强烈的失真,有时甚至比原始鱼眼图像中的失真还要大。
如图11所示,当我们处理透视相机时,当物体与相机以恒定的Z距离移动时,就会产生平移,也就是说,在与图像平面平行的平面上。然而,在圆柱形图像中,水平面上的距离必须保持不变,才能进行图像平移(对象必须绕圆柱体轴旋转)。相比之下,在原始鱼眼图像中,不清楚什么对象运动会导致图像平移。
WoodScape dataset
WoodScape全景数据集在两个不同的地理位置采集的:美国和欧洲。虽然大多数数据是从轿车中获得的,但运动型多用途车中有很大一部分数据可确保传感器机械配置的强大组合,驾驶场景分为高速公路、城市驾驶和停车用例。数据集中为所有传感器以及时间戳文件提供内部和外部校准,以实现数据同步,包括相关车辆的机械数据(例如,车轮周长、轴距)。为该数据集记录的传感器如下所示:
- 1)4x 1MPx RGB鱼眼摄像头(190◦ 水平视野)
- 2)1x激光雷达,20Hz旋转(Velodyne HDL-64E)
- 3)1x全球导航卫星系统/惯性测量装置(NovAtel Propak6和SPAN-IGM-A1)
- 4)1x带SPS的GNSS定位(Garmin 18x)
- 5)来自车辆总线的里程表信号
系统架构注意事项
在自动驾驶计算机视觉设计中,尤其是pipelines设计中,一个重要的考虑因素是嵌入式系统的约束,其中多个摄像头和多个计算机视觉算法必须并行运行。由于计算机视觉算法是计算密集型的,汽车SoC有许多专用硬件加速器用于图像信号处理、镜头畸变校正、密集光流、立体视差等。在计算机视觉中,深度学习在各种识别任务中发挥着主导作用,并逐渐用于几何任务,如深度和运动估计。
为了最大限度地提高处理硬件的性能,最好从处理阶段的角度考虑嵌入式视觉,并在每个处理阶段考虑共享处理,pipelines如图12所示。
1) 预处理:pipelines的预处理阶段可以看作是为计算机视觉准备数据的处理。这包括图像信号处理(ISP)步骤,如白平衡、去噪、颜色校正和颜色空间转换。关于ISP和ISP在汽车环境中用于计算机视觉任务的调整的详细讨论,请参考[52]。ISP通常由硬件引擎完成,例如作为主要SoC的一部分。很少在软件中完成,因为需要完成大量像素级处理。正在提出一些方法来自动将ISP管道的超参数调整为优化计算机视觉算法的性能[52]、[53]。值得注意的是,目前正在提出简化ISP视觉感知pipelines的方法,可以参考[54]。
2) 像素处理阶段:像素处理可以被视为计算机视觉体系结构中直接接触图像的部分。在经典的计算机视觉中,这些算法包括边缘检测、特征检测、描述符、形态运算、图像配准、立体视差等。在神经网络中,这等同于CNN编码器的早期层。这一阶段的处理主要由相对简单的算法控制,这些算法必须每秒多次在数百万像素上运行。也就是说,计算成本与这些算法每秒可能运行数百万次的事实有关,而不是与算法本身的复杂性有关。这一阶段的处理硬件通常由硬件加速器和GPU主导,尽管有些元素可能适合DSP。
3) 中间处理阶段:顾名思义,中间处理阶段是从像素到对象检测阶段之间的桥梁。在这里,要处理的数据量仍然很高,但大大低于像素处理阶段。这可能包括通过视觉里程表估计车辆运动、视差图的立体三角测量和场景的一般特征重建等步骤,在pipelines的这个阶段包括CNN解码器。这个阶段的处理硬件通常是数字信号处理器。
4) 目标处理阶段:对象处理阶段是整合更高层次推理的阶段,在这里可以聚类点云来创建目标,对对象进行分类,并且通过上述推理,可以应用算法来抑制移动目标的重缩放。此阶段的处理主要由更复杂的算法控制,但操作的数据点较少。就硬件而言,通常适合在ARM等通用处理单元上运行这些处理器,尽管通常也会使用数字信号处理器。
5) 后处理:最后后处理阶段,也可以称为全局处理阶段。在时间和空间上持久化数据。由于可以拥有长时间持久性和大空间地图,因此前几个阶段的总体目标是最小化到达此阶段的数据量,同时维护最终用于车辆控制的所有相关信息。在此阶段,将包括 bundle adjustment、地图构建、高级目标跟踪和预测以及各种计算机视觉输入的融合等步骤。由于处理的是系统中最高级别的推理,并且理想情况下处理的是最少的数据点,因此这里通常需要通用处理单元。
原文首发微信公众号【自动驾驶之心】:一个专注自动驾驶与AI的社区(https://mp.weixin.qq.com/s/NK-0tfm_5KxmOfFHpK5mBA)