
基于视觉的驾驶员辅助系统:调研、分类和进展(上)
摘要
基于视觉的驾驶员辅助系统是ITS快速发展的研究领域之一,这是由于各种因素,例如汽车安全要求级别、嵌入式系统的计算能力以及更接近自动驾驶期望的提升。这是一个跨学科的领域,包含计算机视觉、机器学习、机器人导航、嵌入式系统、汽车电子和安全关键软件等专业领域。在本文中,我们使用一致的术语调研了基于视觉的高级驾驶员辅助系统,并且提出了一种分类法。我们还提出一种抽象模型,试图建立自上而下的应用程序开发视图,以扩展到自动驾驶系统。
介绍
大多数汽车制造商采用某种形式的相机系统(至少在他们的高端车型上),无论是用于倒车保护的简单后视相机、用于车道偏离预警、前向碰撞警告等的前视相机,还是用于车辆前方环境完整深度估计的双目相机。本质上,越高级的应用需要越高端的处理单元,因此制造商的生产成本更高。然而,随着汽车的安全立法的发展,相机系统将越来越多地应用于低端车辆上,很快将成为很多车型的标准配置。
图1给出了若干当前基于视觉的应用的高级覆盖范围,从环视(SV)等视觉应用到交叉交通警告(CTA)、泊车辅助(PA)和碰撞警告(FCW和RCW)等驾驶员辅助系统。一些安全性严格的视觉系统也在生产中(或者即将生产),例如自适应巡航控制(ACC)和电子后视镜更换(CMS)。显而易见的是,相机系统是汽车市场中最多功能的传感器系统之一,提供了所有传感器系统中最广泛的应用。
本文的目的是给出该技术、视觉应用开发以及当前和未来技术的高层次调研。这将包含当前可用的基于视觉的产品,以及汽车视觉系统中下一代和新兴的应用。最后,我们将讨论自动驾驶车辆中使用视觉系统的趋势,这是一个特别相关的话题,因为在很多司法管辖区中立法者开始实行允许自动驾驶车辆在公共道路上行驶的法律。通过这样做,他们认识到自动驾驶汽车将通过改善道路安全、交通效率和总体驾驶体验来彻底改变全球汽车行业。我们将讨论在通用框架中对问题进行建模和构建的必要性,该框架是鲁棒且可扩展的,以支持不同的应用。我们还将针对基于视觉的ADAS开发提出一种通用的可扩展软件模型。
分类
在本节中,我们提供了对视觉系统分类的不同方式以及它们在提供ADAS功能中的使用。在当前文献中,对于本文讨论的应用没有一致的术语和分类。在这里,我们为基于视觉的ADAS提出一种一致且精确的术语。
显示(A_DI)/警报(A_AL)/半自动化(A_SA)/自动化(A_AD)/自主(A_AS):该分类描述了视觉系统和用户/系统本身之间的交互级别。这种分类类似于由NHTSA提出的自动化级别。如果一个功能达到自动化级别,它也能够作为一个较低级别的功能使用。
大约25年前,当相机首次被安装在量产车辆上时,它们只是作为一种辅助手段以提高驾驶员在困难场景下的能见度,例如倒车或者夜视。使用单个相机的输入能够渲染不同的视图端口,覆盖物(例如驱动管)能够进一步辅助车辆定位。相机数量的提升以及允许拼接四个相机输入的硬件为用户提供了几乎无缝拼接的两维俯视图。这在很多驾驶场景中提供给驾驶员帮助,例如泊车和靠近物体时的低速操作。可视化最新的进展为创建车辆周围的三维碗状视图,这允许用户改变虚拟相机的视角。
尽管可视化是环视相机(前、后、左和右相机)基础的功能,但是众所周知前视相机仅用于提供驾驶员辅助,并且通常没有直接的视觉输出给用户。相机已经成为标准警报类型功能中的必要传感器,例如交通标志识别(TSR)、交叉交通警告(CTA)、车道偏离预警(LDW)和目标检测(OD)。这些功能提供给驾驶员有关驾驶情况的有价值信息,但是驾驶员是否根据这些信息采取行动取决于他自己。
半自动系统提供的功能中,驾驶员仍然完全负责车辆的整体控制,但是其中一项功能(制动/转向/灯光切换)是自动化的。驾驶员能够确保在任何时候控制自主功能。此类功能的示例包括自适应巡航控制(ACC)、自动紧急制动(AEB)、车道保持(LK)、远光灯辅助(HBA)。
自动系统允许驾驶员在特定条件下移交控制权给车辆导航的多个安全关键功能,并且依赖于车辆自身在环境中安全地导航。根据请求或任务完成,或者当系统识别到无法实现安全自动化的情况时,车辆的控制权将返还给驾驶员。驾驶员仍然应该保持注意并且在短时间内合理地从系统接管车辆。此类系统的示例包括自动泊车(AP)、高速公路驾驶辅助(HDA)和交通堵塞辅助(TJA)。
自动驾驶是该行业的最终目标。这样的自动化将允许用户仅输入目的地,并且不期望在旅途过程中接管车辆的控制权。这些系统将由上述的很多功能组成,其作为整体自动驾驶系统的一部分。完全自动驾驶系统还将能够以无驾驶员模式运行。这个类别能够被进一步细分,因为未来几年将逐步引入自动驾驶级别。
市场上第一批系统将是部分自主的。这些系统将完全接管大部分行程的车辆控制,并且在自动驾驶更为困难的情况下,将控制权返还给驾驶员(具有适量的提醒)。最终,这些困难情况将被处理,并且完全自动驾驶系统将进入市场。值得注意的是,可能需要特定级别的基础设施以实现这个目标。
内部(V_I)/外部(V_E):汽车相机系统一种广泛分类为它们是内部相机还是外部相机。该分类指出相机视野所覆盖的位置,而不是相机在车辆上的物理位置。典型的汽车相机是面向外部的,向用户(或者车辆系统)提供有关车辆导航所在的外部环境的信息。这种系统能够提供诸如CTA和TSR等应用。近年来,有增加内部监测相机的趋势。这些系统的目的通常为监测车辆上的乘客(尤其是驾驶员),提供诸如驾驶员检测(DM)、后座儿童监测和手势识别等功能。
单视/环视(SV):传统的后视/前视/夜视相机解决方案作为单一来源进行处理,与其它的车载相机系统没有交互。单个前视相机通常是窄视野(FOV)相机(FOV < 60°),而倒车相机具有更宽的FOVs。环视系统由四个鱼眼相机(FOV > 160°)组成,包括前视相机(安装在汽车前方)、左视相机和右视相机(安装在汽车后视镜下方)和后视相机(通常安装在汽车后备箱下方),它们连接到单个ECU上。这些相机从采集、标定和图像质量角度进行控制,以便允许生成视图,如俯视图和三维碗状视图,同时还允许图像处理功能。这些功能能够利用单个或者多个视图,例如车道标记检测和目标检测(OD)。
单目/双目(ST):绝大多数汽车相机系统是单目的。近年来,一些汽车供应商已经转向双目系统。双目相机由两个或者更多镜头组成,每个镜头有一个单独的图像传感器。这些有效地分离的相机使用相机之间已知的基线和重叠FOV一起配对。对于前视相机应用,这允许在场景中进行更精确的深度估计,其增加了鲁棒性并且提供一定程度的冗余。双目相机能够增强AEB和ACC等功能。由于需要额外的相机和处理硬件,因此这些系统比单目系统计算代价更昂贵,同时还具有更大的封装尺寸。
主动(C_A)/被动(C_P):典型的汽车相机为被动系统。它们利用环境中的光线并且在可见电磁光谱内工作。因此,在低光照条件下,系统性能通常会降低。市场上有一些主动的汽车相机,例如主动夜视(NV)和飞行时间(TOF)相机,它们需要人工红外光源来照亮环境。有源系统中光源的波长使得它对于人眼是不可见的。尽管一些制造商提供了显示选项,但是这些相机通常着重于向用户提供ADAS功能,而不是用于显示目的。
低速(S_L)/高速(S_H):用于纯可视化/低速操作(<20Kph)目的的相机通常以每秒25至30帧(fps)的帧率运行(通常由主机显示器的要求影响)。这些相机的帧率能够在低光照条件下被进一步降低(例如15fps),以便通过增加曝光时间来提高图像的质量。用于ACC或者AEB等高速应用的相机和用于后视镜更换(CMS)等高速可视化的相机,能够以高达60fps或者更高的帧率运行。运行在所有这些相机上的视觉应用能够处理所有捕获的图像或者具有比相机采集帧率低数倍的帧率。算法处理帧率的选择取决于很多因素,包括功能运行过程中的车速、帧间运动的要求、算法的计算负载和来自功能自身的更新速率。
独立/融合(FUS):独立相机是向用户提供相关输出的系统,没有与其它传感器系统进行任何数据融合。这是大多数显示相机的情况,因为融合不是必要的,但也是当前大多数现有的前视/后视和环视解决方案的情况。目前,市场上现有的融合系统融合了激光雷达和雷达的传感器数据以及视觉信息,以提高系统可用性、准确性和鲁棒性。传感器融合在汽车领域仍然是一个相对较新的研究领域,然而由于其在实现自动驾驶目标方面的重要性,所以正处于快速发展阶段。来自相机、超声、激光雷达和雷达传感器的多传感器数据融合将使下一代系统实现所需的可用性、精确性和鲁棒性,以完成自动驾驶的目标。
视觉算法构建模块
在本节中,我们将讨论标准单目和双目视觉相机的汽车视觉ADAS应用的基础构建模块。本节没有包含夜视和飞行时间相机,但是很多步骤仍然适用。计算机视觉教科书和开源软件库详细地介绍了这些主题,在此我们根据典型视觉应用的需求对其进行总结。以下图像处理技术的子集与高级解释逻辑的组合构成了大多数基于图像处理的ADAS应用的基础。
采集:首先,捕获图像并且将其传给图像处理算法,用于以特定的预定义帧率进行处理。该功能能够处理纯灰度图像,也能够根据算法实现要求颜色信息。
控制器:在处理之前,通常会对图像进行一些检查,以确保图像和功能本身都处于能够提供有用结果的状态。这些检查可能包括以下部分(如果系统上有相关信息):标定精度检查、图像脏污检查和图像质量检查(如噪声和光照级别)。
预处理:此步骤的目的为改进采集的图像,以便提高后续处理的有效性。预处理可以由很多不同的操作组成,包括:感兴趣区域提取、图像下采样、图像金字塔生成(用于处理尺度)、图像平滑(例如高速滤波用于降低图像噪声)或者边缘检测(例如Sobel算子用于突出图像梯度)。
分割:分割是将图像划分成具有相似特征的多个区域的过程。其目的是通过定位物体边界(例如道路边缘或者天空)来简化图像的表示,这可以减少处理时间并且提高后续处理步骤的性能。分水岭分割是常用方法的一个例子。
运动估计:这是很多有趣的ADAS应用的基础,并且通常是算法中计算代价最高的部分。运动估计涉及在时间上从上一帧图像到下一帧图像的图像像素的跟踪或者匹配。图像上像素运动是两种运动的结果:1)对应的3D点在场景中移动;2)相机本身相对于场景移动。跟踪能够被细分为两个主要的方法:即稀疏和稠密。稀疏跟踪包括首先在图像上检测显著特征(角点,例如Harris角点检测器),然后使用光流技术跟踪它们(例如Lucas Kanade跟踪器)。稠密光流涉及跟踪图像中每个像素的位置(例如Horn-Schunck)。这两种方法具有它们各自的优势:稀疏光流倾向于提供更高百分比的匹配点对,其具有更低的处理代价,而稠密光流提供更大的图像覆盖率和更多的统计信息来处理异常值。匹配方法执行特征(突出的像素)检测和描述子计算,然后与后续图像中检测到的特征进行匹配。这种特征检测器的示例包括A-KAZE、SIFT、SURF和ORB。这些方法比光流对于图像噪声、光照变化和投影变换更为鲁棒。然而,它们在图像中更稀疏,更重要的是,它们的计算成本更高。
深度估计:深度估计是指为获得传感器视野内环境空间结构表示的一组算法。尽管这是很多主动传感器系统(例如TOF相机、激光雷达和雷达)的主要焦点,但是对于被动相机而言,这仍然是一个复杂的主题。相机的深度感知技术有两种主要类型:即双目和单目。
双目相机相对于单目相机的主要优势是提高了感知深度的能力,它通过解决每个像素的对应问题而工作,允许将像素位置从左相机图像映射到右相机图像。显示像素之间这些距离的图称为视差图,这些距离与来自相机的对应世界点的物理距离成比例。通过已知的相机标定和基线,能够投影和三角化两个相机之间的像素对形成射线以解决每个像素在世界中的三维位置。
单目系统也能够感知深度,但是需要相机的运动来创建用于三角化的基线。该场景重建方法被称为从运动估计结构(SFM)。如上述运动估计部分,使用稀疏或者稠密的技术从一帧到下一帧跟踪或者匹配图像中的像素。已知的在被处理帧之间的相机运动和相机标定被用于投影和三角化点对之间的世界位置。BA是一种常用的方法,其根据最优性准则来同时优化场景中估计的三维位置和相机的相对运动,涉及所有点的对应图像投影。示例如图2所示。
双目方法更为准确,因为它们具有已知的固定基线,并且使用更小FOV的相机,从而在被处理区域获得更好的空间分辨率。它们还需要强度更小的处理,因为对应关系问题更容易解决;然而,三维重构受限于两个相机的重叠区域,并且双目相机的系统代价更高。SFM技术通常使用稀疏处理来降低计算复杂度。对于后视镜相机,SFM问题类似于双目相机,因为横向运动创建了虚拟的基线(运动双目)。然而,由于相机相对于场景纵向运动,这对于前视相机是复杂的,导致图像中扩展焦点附近的三角化结果较差。
状态跟踪:能够在整个图像处理流程的不同位置处使用状态跟踪以便提高性能。状态跟踪能够被用于提供对丢失/丢弃的检测和噪声一定程度的鲁棒性,处理错误计算,预测下一时间间隔的状态,以及在时间上平滑处理过程中不同部分的输出。这种状态跟踪器的常见示例包括卡尔曼滤波器和粒子滤波器。
物体检测/分类:有两种主要类型的分类类型:即有监督和无监督。有监督分类是基于人类能够在多个图像中选择代表特定类别物体的样本缩略图的知识。使用旋转梯度直方图(HOG)、局部二值模式(LBP)和小波等特征提取方法应用于人类分类的样本图像,使用机器学习构建预测模型以便对物体进行分类。很多基于视觉的ADAS功能使用机器学习方法在行人检测(PD)、人脸检测、车辆检测和交通标志识别(TSR)等应用中进行分类。最终算法的质量高度依赖于用于学习分类器的样本数据的数量和质量。典型的分类器包括SVMs、随机森林和卷积神经网络。
无监督分类是指在没有要被分类数据的先验知识的情况下试图寻找数据中结构的问题。图像处理中常用的无监督分类方法包括K-mean聚类和迭代自组织数据分析技术(ISODATA)。无监督分类通常被用作其它应用的一部分,例如移动物体的聚类。
文章转载自公众号:自动驾驶专栏
