自动驾驶 | 感知篇(下)

自动驾驶感知篇(上)

自动驾驶汽车环境感知系统中的视觉系统通常包括道路检测和道路目标检测。道路检测包括车道线标记检测和路面检测两大类。道路目标检测主要包括车辆检测和行人检测。就方法而论,包括传统的基于人工提取的特征的方法。也包括最近发展起来的深度学习方法。

车道线标志检测

车道线标记检测是识别道路上的车道线标记,并根据检测到的线估计车辆的姿态。这些信息可以作为车辆位置反馈给车辆控制系统。

由于各种各样的不确定性在现实交通道路状况和道路奇点(singularities)这仍然是一个具有挑战性的问题, 这其中可能包括来自汽车和树木的阴影,光照条件的变化,破损的路面标志,和其他标记,如方向箭头,警示文字和斑马线等

大多数车道线检测算法都有三个共同的步骤:

  • 车道线特征提取,可通过边缘检测或颜色检测,或通过SVM等学习算法或boost分类算法;
  • 将像素拟合到不同的模型中,如直线、抛物线、双曲线,甚至锯齿线;
  • 基于拟合模型估计车辆姿态。
    在车辆位姿估计前还可能存在一个步骤,即利用连续性,基于当前帧中的检测结果通过卡尔曼滤波和粒子滤波等滤波机制指导下一步搜索。
车道线特征提取

其是识别属于车道线标记的像素,剔除非车道线标记像素。文献中的大多数方法都是基于以下观察,即车道标记与道路路面对比较大。

基于梯度的算法。有局部对称阈值的Sobel边缘检测器、自适应阈值化和梯度增强转换等。但是这些算法对噪声敏感,在杂波和阴影中会出现大量的离群值。此外,这些算法视角局限于局部视图,忽略了车道线标记(细长明亮结构)的形状特征。

基于图像梯度的一些对噪声不敏感的高级变体例如,可控滤波器是基于二维高斯函数的二阶导数的,脊检测器基于一阶导数的张量场构造的。当梯度的方向与假定的车道线方向偏离太多时,这两种方法都可以得到梯度方向的响应,有助于去除离群值。

另一组算法试图从不同的角度检测车道线标记,沿图像行搜索图像低-高-低强度模式。这种类型最常见的算法是box filter(也称为top-hat filter)或其他形式的变体,它们比上述算法更可靠。简而言之,这种算法用某种形式的阶跃滤波器对图像进行卷积,选择高响应像素作为每一行图像的车道候选线。这通常能够提取车道线标记的中轴而不是边缘。为了使这种算法能够正常工作,必须根据图像中车道线标记宽度精确地调整其尺度或步长,以防止过不足滤波。否则,原始图像不得不通过反向透视映射(IPM)进行转换,以补偿相机的透视效果。因此,这也需要一个很好的相机俯仰角(或视角)的估计。同时,需要进行插值来弥补IPM图像中缺失的像素。随着观测距离的增大,插值越来越不准确。为了解决这一问题,有学者提供了一种自适应机制,可以在原有宽度测量的基础上在线更新步长。

上述车道线提取算法的另一个常见缺点是无法将车道线标记与其他道路标记(如警示信文字等)区分开来。这些道路标记有时会导致严重的估计错误。

模型拟合

它是从车道线检测结果中提取车道的高级表示的过程。根据所使用的模型,车辆姿态可以从拟合模型中得到,该模型还可用于指导下一帧车道线检测,以提高连续性。

文献中提出过多种道路模型。包括参数化模型和半参数化模型,后者主要由B-Snake、Cubic、active contours等样条构成。这些模型的优点是更加灵活,可以覆盖各种路面形状。然而,它们的计算要求更高,也更复杂。另外,它们对控制点选择要求比较高。由于没有单一的模型可以覆盖所有类型的道路形状,因此也需要考虑在线选型。

时间集成步骤(time intergration step)

是利用以前的信息来指导当前图像中的搜索。它增强了连续图像之间的平滑性和连续性。可以提高车辆姿态估计的精度,防止错误检测故障的发生。

大多数提出的方法是基于统计的。一般用卡尔曼滤波或粒子滤波。粒子滤波更加可靠,尤其是在车辆振动或非平坦路面引起的连续图像之间的突变情况下。

一般来说,粒子滤波可以直接应用到图像(或像素)、车道线模型和车辆。

  • 每个粒子都包含图像中控制点的位置,用于三次样条拟合。
  • 每个粒子可以代表车道线模型参数,参数的变化被简单地假设为服从高斯分布。
  • 每个粒子可以在代表在真实世界坐标系中车辆的位置,再一次,车辆的运动被简单地假设为高斯函数。

由于连续图像之间的变化纯粹是由车辆运动引起的,有学者提供了一种更加直观直观的方法,将粒子滤波应用于运动车辆,并考虑其显式动力学模型。

基于车道线模型估计车辆的横向位置和运动方向

要将这些信息从2D图像恢复到3D现实世界,需要深度信息。在大多数方法中,我们假设相机的高度不变,路面平坦,深度就是由相机的视角或俯仰角度。IPM就是一个典型的例子,但它对俯仰角的估计噪声非常敏感,对俯仰角的估计噪声影响很大。因此,在视差图像能够有效、准确地构造的前提下,采用立体摄像机进行深度恢复是一种更加可靠、直接的方法。但是路面的低纹理对获取视差图像提出了处理挑战。这也是立体视觉在这一研究领域没有得到广泛应用的主要原因。

有学者使用密集映射来获取视差,也有采用极大后验-马尔可夫随机场(MAP-MRF)方法来获取视差。然而,这两种方法都不是很有效,而且容易受到平滑噪声的影响。为了缓解这些不足,也有人提出了一种基于车道线模型的对应匹配算法。

道路表面检测

路面检测告诉自动驾驶汽车在自由空间的位置,确定可行驶区域和不可行驶区域。它是在线路径规划和控制的操作前提。一般来说,这些方法可以分为三类:基于特征的检测、基于特征的学习和深度学习。

基于特征的检测

基于特征的检测首先根据一些预定义的特征,如HOG特征识别原始图像中的特征点或特征块(patches)。在立体图像的上下文语境中,这些特征可能指的是视差。在识别特征的基础上,可以采用模型拟合和分割两种算法对路面进行识别。

有学者采用一种基于立体视差测量的通用b样条模型拟合算法来表示路面。这种方法舍弃了平坦路面假设,设计了卡尔曼滤波器来平滑拟合结果。

也有学者没有使用模型拟合,而是将路面检测问题转化为CRF优化问题。该作者通过把目标类标注和稠密立体重构结合到公式中,并对这两项任务进行联合优化(优化后改善了原先单任务的性能),构造了CRF能量函数。

基于特征的学习

基于特征学习的方法还可以提取一组与像素或图像patch相关的特征,然后训练基于这些特征的分类器为像素或patch分配道路或非道路标签。

有作者提出了一种学习上下文信息的检测算法,它可以方便地对目标图像patch进行分类。对于每一个图像patch,除了自身,它还与另外两种类型的辅助图像patch相关联:一种是根据目标图像patch周围的预定义模式得到的上下文patch,另一种是定位在图像底部的道路patch。从这三种类型的patch中提取出三个特征向量,然后连接成一个单独的最终向量。将矢量输入多层感知器神经网络进行分类。但是,这种方法并不能考虑全局信息,对于道路patch的选择也存在争议,因为它是基于一个假设:即图像的底部始终是道路区域。

Tobias等提出了一种结合场景空间布局的两层检测框架,用于处理各种复杂的情况。第一层由道路边界、道路标志和车道标志三个基本分类器组成。对这三个分类器分别进行训练,生成三个置信度图。
之后,结合环境全局属性的空间射线特征是基于置信度图映射生成的。最后,GentleBoost分类器进对基于空间射线的特征进行了训练

有分类器采用共同促进算法,将基于基元 (filter-bank, color, HoG, location)和disptons (U-disptons, V-disptons)的特征图合并在一起。然而,这些特征检测或特征学习分类下的算法在不稳定的驾驶环境下都不够鲁棒。性能仍然受到车道线标记检测部分中列出的所有噪声因素的影响。

深度学习

有学者将图像patch作为卷积神经网络CNN的输入,CNN将图像patch的中心点划分为道路和非道路。
作者演示了如何将patch的空间信息整合到CNN中,使空间先验在表象之上学习( enable the learning of spatial priors on top of appearances)。

与这两种方法不同,Mohan提出了一种将CNN与深度去卷积神经网络相结合的新型架构。
该架构还用能于多块训练,使得从场景中有效学习空间先验成为可能。

深度学习方法虽然性能优良,但其缺点也非常明显:计算量大、存储量大、处理时间长、不可追溯、地面真值标注过程繁琐。有学者提出了一种新的CNN结构,目的是在分割质量和运行时间之间取得良好的平衡。通过集成一个CNN和深度反卷积网络,专门设计了反卷积端类和过滤器之间的映射减少了运行时间。它以原分辨率的整幅图像作为网络输入,而不是图像patch,实现了大约50ms的运行时间。

为了缓解ground truth标注的困难,Laddha等提出了map-supervised deep learning pipeline。该方法根据车辆位置、航向、摄像机参数、GPS、OpenStreetMap数据自动进行地面真值标注。
利用像素外观特征进一步降低标注噪声。基于这些机器生成的地面真值标注对CNN进行了训练。

道路目标检测

道路目标检测主要涉及车辆和行人目标类。
由于对象的类型、外观、形状和尺寸的不同,传统方法往往不够健壮,对于自动驾驶汽车的应用也不够普遍。如KITTI数据库所列,对于汽车、行人和自行车的检测,所有领先的方法都是基于深度学习方案。与传统的基于特征的学习方法相比,深度学习在障碍物检测领域表现出了优越的性能。因此,在本节中,我们将只回顾基于深度学习的方法

通常,深度学习方法的一般流程是在输入图像周围生成一组边界框,然后通过CNN网络发送每个边界框,确定分类(包括背景),并微调边框位置。边界框建议的常用方法是选择性搜索Selective Search和边缘框EdgeBoxes。

Faster-RCNN是第一个将边界框的生成和检测统一在同一个网络下的深度学习方案,实现了端到端的训练过程。该网络主要由两个部分组成:提议层和检测层,这两个网络共享了大部分CNN层。
建议层的输出是建议的边界框,作为检测网络的输入,其实用于识别和边界框的微调。

RCNN在训练过程中虽然速度较快,但并没有固定提案框的大小,因此其对对象的尺度来说是不变的,当遇到对象尺度变化较大的具有挑战性的场景时,其在小目标检测方面的性能并不是很理想。主要原因是对于原始图像中的小目标,经过几层卷积和池化后,最后一层的剩余信息太少,无法很好的检测。这个问题可以通过增大输入图像的大小或者使用一组不同尺度大小的图像作为输入来解决,但这也会增加计算时间和内存需求。

为了解决尺寸问题,Yang等提出了一个尺度相关地池(scale-dependent pooling, SDP)网络。
根据边界框的高度对于较小的建议边界框的特征向量,不是只从网络的最后一个卷积层池化特征向量,而是,在较早的卷积层中池化。在不同的层分别进行检测和边界框微调。为了提高效率,作者还训练了一种基于MLP的串联拒绝分类器(CRC)来过滤每一层的一些边界。
这种方法没有一致的标准,不能端到端进行培训。边界框的提出是基于Edgebox的。

也有作者提出了一个统一的多尺度深度学习网络(MS-CNN),该网络将原始图像作为唯一输入,把相关边界框和对象类别作为输出。与Faster-RCNN类似,该网络也结合了建议层和检测层。与SDP网络类似,MS-CNN中的提案层池化了来自不同层的特征,以生成边界框。然后将所有这些建议传递到同一个检测网络,用于对象识别和边界框微调。上述算法的目标都是检测二维图像中的物体,在三维世界中没有输出信息。有学者进一步根据物体的二维外观、三维姿态和三维形状将其划分为子类别,训练深度学习网络从二维图像中恢复二维和三维信息。提出的网络称为Sub-CNN,由两个CNN网络组成,subcategory-aware CNN和object detection CNN。感知子类的CNN生成到目标检测网络的提案包围框。

与fast - rcnn和MS-CNN不同,这两个网络不共享任何CNN层。Sub-CNN由于有两个独立的CNN网络,所以运行时间更长(2秒vs. 0.4秒),但是它能够显示出对自动驾驶汽车更有用的3D世界信息。文献中也有一些方法可以减少处理时间,使深度学习方法达到(近)实时的效果,如YOLO (You Only Look one) , SSD (Single Shot Detection)。它们能够以每秒30帧以上的速度处理图像,这取决于网络的大小。但是,这种快速的性能是以牺牲检测速率为代价的。随着硬件和软件技术的进一步发展,可以在运行时间和检测率之间取得更好的平衡。

融合

不同的传感器有不同的优点和缺点。为了充分利用各传感器的优点,需要传感器融合技术。

激光雷达能够产生三维测量值,它不受环境光照的影响,但提供的物体外观信息很少;
相反,相机能够提供丰富的外观数据,提供更多关于物体的细节,但在不同的光照条件下,其性能并不一致;此外,相机并不隐式地提供3D信息。

目前应用于激光雷达和相机融合的技术,根据融合过程的位置大致可以分为两大类,即特征级融合(早期、集中式融合)和决策级融合(后期、分布式融合)。基于融合机制,可分为基于MRF/CRF、基于概率和基于深度学习的融合机制三大类

基于MRF/CRF的融合。点云中的每个点在图像中都有一个相关联的像素,这个像素是基于激光雷达设备和相机之间的转换确定的。这样图像像素的颜色强度就可以赋值给该点。通过将点云转换为所有点都是图节点的图,设计了一个MRF。能量最小化函数模拟了点的强度变化与深度变化之间的关系。这种方法只利用图像的强度信息,而忽略了其余的图像线索.

肖等人也提出了一种用于传感器融合的随机场方法,但其拥有不同的能量函数。该能量函数由三项组成,其中两项与常规MRF项(值项和平滑项)相同。第三项是基于激光点的。预训练分类器首先对激光点进行分类,判断它们是道路点还是非道路点。然后将这些点投影到图像平面上,对应的像素以相同的概率分配到这些点上。第三项来自这些概率。

也有作者没有直接使用稀疏激光点,而是通过对点进行上采样,从点云重构出稠密深度图。基于原始图像和稠密深度图提取两组HOG(梯度直方图金字塔,可以基于HOG金字塔通过学习多尺度形变部分模型(multi scale deformable part model)进行行人检测。

Premebida等人为传感器融合提供了一种分布式方法。摄像机数据用于训练AdaBoost分类器,激光雷达数据用于训练GMM(高斯混合模型)分类器。之后作者设计了一个基于每个分类器计算的后验概率得到的决策规则,最终对目标进行分类。

基于深度学习的传感器融合方案通常需要稠密的深度图或其变体,这意味着需要将点云转换为深度图。

方法之一是图像和深度图可以经过两个独立的CNN网络,只有最后一层的特征向量被连接在一起,共同完成最终的检测任务。

方法之二是点云首先被转换成三通道HHA地图(包含水平视差、离地高度和角度)。HHA和RGB(红绿蓝通道)图像也经过了两个不同的CNN网络,但是作者发现融合应该在CNN的早期到中期进行,而不是在最后一层。

综上所述,为了更好地利用激光雷达和摄像机之间的传感器融合,实现对自动驾驶车辆的鲁棒环境感知结果,是十分必要的。然而,目前的融合机制还处于初级阶段,不能充分利用这两个传感器的所有信息。另外那些新开发的用于目标检测的深度学习算法还没有扩展到在融合的摄像机和激光雷达信息上运行,这种扩展可以显著提高单个传感器数据处理的性能。

0%