apollo学习整理(二)感知

转载请注明出处 https://blog.csdn.net/gloria_iris/article/details/91474781

通过学习apollo课程,对感知内容进行简单梳理。这部分内容较多,预计分为4部分概述


其课程链接: http://apollo.auto/devcenter/courselist_cn.html?target=3

1. 计算机视觉

1.1 基本概念

自动驾驶感知的具体任务,如图1:

  • 检测:找出物体在环境中的位置;
  • 分类:明确对象是什么;
  • 跟踪:随着时间的推移观察移动物体,如其他车辆、自行车和行人;
  • 语义分割:将图像中每个像素与语义类别分别进行匹配,如道路、汽车或天空;
    感知的具体任务 图1 自动驾驶感知的具体任务

将分类作为研究计算机视觉一般数据流程的例子,分类器是将摄像头采集的图像作为输入,该图像的标签或“类别”作为输出的一种算法,如交通标识分类器;分类器甚至可以识别行为,如一个人在走路还是跑步。分类器的种类很多,但都包含一系列类似的步骤:输入->预处理->提取特征->图像分类,如图2。为了完成视觉任务,需要建立模型来帮助计算机了解图像内容。在计算机视觉中,无论经过训练的模型执行什么任务,通常都将摄像头图像作为输入。

图2 计算机视觉处理的一般流程

1.2 摄像头图像

摄像头图像是最常见的计算机视觉数据,从计算机角度来看,图像是一个二维网格(矩阵),矩阵中的每个单元格都包含一个值,数字图像全部由像素组成,其中包含非常小的颜色或强度单位。图像中的每个像素都只是一个数值,这些值构成了图像矩阵,通过改变像素值,可以改变图像亮度等信息。通常,这些数字网格是许多图像处理技术的基础,多种颜色和形状转换只是通过对图像进行数学运算以及逐一像素进行更改来完成。
在这里插入图片描述

图3 图像于矩阵的关系

彩色图像被构建为值的三维立方体,每个立方体都由高度、宽度和深度,深度为颜色通道数量,大多数彩色图像以RGB三种颜色组合表示,RGB图像可以用一个薄盒子表示,将深度视为三重叠加的二维色层很有帮助。
在这里插入图片描述
图4 彩色图像的矩阵表示

1.3 LiDAR图像

激光雷达传感器创建环境的点云表征,提供了难以通过摄像头图像获得的信息,如距离和高度。激光雷达传感器使用光线,尤其是激光来测量与环境中反射该光线的物体之间的距离,激光雷达发射激光脉冲并测量物体,将每个激光脉冲反射回传感器所花费的时间与光速相乘得到距离信息。反射需要的时间越长,物体离传感器越远,激光雷达通过这种方式来构建世界的视觉表征。如图5,激光雷达通过反射光脉冲来检测汽车周围的环境,蓝色点表示反射激光脉冲的物体,中间黑色区域是无人驾驶车本身占据的空间。由于激光雷达测量激光束反射,它收集的数据形成一团点或“点云”,点云中的每个点代表反射回传感器的激光束,这些点云可以告知关于物体的许多信息,例如其形状和表面纹理,通过对点进行聚类和分析得到物体的相关信息。这些数据提供了足够的对象检测、跟踪或分类信息,可以看到在点云上执行的检测和分类结果,红点表示行人,绿点表示其他车辆。激光雷达提供了用于构建世界视觉表征的足够空间信息,计算机视觉技术不仅可以使用摄像头图像进行对象分类,还可以使用点云和其他类型的空间相关数据进行对象分类。
在这里插入图片描述

图5 点云图及目标识别结果

2. 基础知识

2.1 机器学习

机器学习是使用特殊算法来训练计算机从数据中学习的计算机科学领域,通常这种学习结果存放在一种被称为“模型”的数据结构中,“模型”是一种可用于理解和预测世界的数据结构。使用数据和相关的真值标记对模型进行训练,如显示车辆和行人的图像并告诉计算机哪个是哪个的标签,由于模型利用了人类创造的真值标记,被称为监督式学习。假设类似的学习过程,没有标记车辆和行人的真值,让计算机自己学习图像中的相似与不同,这类算法通过分析输入数据找到区别,被称为非监督式学习。还有一种算法称为"半监督式"的学习,它将监督学习和无监督学习的特点相结合。该方法使用少量的标记数据,和大量的未标记数据来训练模型。

强化学习是另一种机器学习,允许通过各种方法的尝试来解决问题,然后衡量哪种方法最为成功。计算机将尝试许多不同的解决方案,最终使其方法与环境相适应。例如,在模拟器中强化学习训练汽车右转,在初始位置发动车辆,然后以不同的方向和速度进行实验驾驶,若汽车完成右转动作则得分,这种方式主要针对导致成功结果的初始动作进行操作。起初,汽车可能无法找到执行转弯的方法,就像人类学习一样,最终会获得成功右转的经验,完成任务。

方法 特点
监督学习 带有相应标签的数据
非监督学习 没有标签的数据
半监督学习 带有标签的零件数据和没有标签的零件数据
强化学习 从经验中总结和改进

2.2 神经网络

生物神经元通过相互连接,构成了神经元网络或神经网络,通过类似的方式,创建了用于机器学习的人工神经网络(ANN)。人工神经网络式通过数据来学习复杂模式的工具。在人类神经结构中,神经网络由大量的神经元组成,人工神经元负责传递和处理信息,也可以对神经元进行训练。人工神经网络具有相似的运作方式,通过密集训练,计算机可以辨别汽车、行人、交通信号灯和电线杆等,并不总是理解为何要做出这种判别,但他们学习了用于执行任务的模型,只是很难直观理解该模型。
在这里插入图片描述

图6 人类神经网络和人工神经网络ANN

人类观察物体时,大脑的活动步骤可能为:1)识别特征,如车轮、车窗和颜色;2) 然后通过特征对图像进行检测和分类,如确定图形是否为车辆时,大脑可能不会认为颜色是关键特征(汽车有多种颜色),所以大脑会将更多权重放在其他特征上,并降低颜色的重要性。
在这里插入图片描述

图7 大脑识别车辆

同样,神经网络也会从图像中提取许多特征,这些特征可能是人类无法描述,甚至无法理解的特征,但最终并不需要理解,计算机将调整这些特征的权重,以完成神经网络的最终任务,这就是深层神经网络的思维方式。

2.3 反向传播算法

第5章中讨论了神经网络如何“学习”数据,这章主要侧重于学习的发生。学习有时称为训练,由三步循环组成:前馈、误差测定和反向传播。首先,随机分配初始权重,即人工神经元的值,通过神经网络来馈送每个图像,产生输出值,这种模式称为前馈。
在这里插入图片描述

图8 前馈过程

随后进行误差测定,误差是真值标记与前馈过程所产生输出之间的偏差。
在这里插入图片描述

图9 误差测定

最后是反向传播,通过神经网络反向发送误差,此过程类似前馈过程,只是以相反方向进行。每个人工神经元都对其值进行微调,这是基于通过神经网络后向传播的误差。所有这些独立调整的结果,可生成更准确的网络。
在这里插入图片描述

图10 反向传播

一个训练周期包括前馈,误差测定和反向传播还远远不够。为了训练网络,通常需要数千个这样的周期,但最终结果应该是模型能够根据新数据坐出准确预测。

2.4 卷积神经网络CNN

CNN是一种人工神经网络,对感知问题特别有效。CNN接受多维输入,包括定义大多数传感器数据的二维和三维形状。如果使用标准神经网络对图像进行分类,则需要通过一种方法将图像连接到网络的第一层,这属于一维。标准做法是通过将图像矩阵重塑为一个矢量,并在一个大行中连接所有列,将图像展开为一维像素阵列。
在这里插入图片描述
这种方法打破了图像中所嵌入的空间信息,如果图像中有车轮,则车轮中的所有像素将散布在整个像素阵列中,神经网络很难从图像中提取车轮。CNN通过维持输入图像之间的空间关系来解决这个问题,具体来说CNN通过将过滤器连续划过图像来收集信息,每次收集信息时,只对整个图像的一小部分区域进行分析,这个过程被称为“卷积”。当我们在整个输入图像上对一个过滤器进行卷积时,我们将该信息与下一个卷积层相关联,例如CNN可以识别第一个卷积层中的基本边缘和颜色信息,通过在第一层上卷积新过滤器,CNN可以使用边缘和颜色信息,来归纳更复杂的结构,如车轮、车门和挡风玻璃,而另一个卷积可使用车轮、车门和挡风玻璃识别整个车辆,最后神经网络可使用这一高阶信息对车辆进行分类。
在这里插入图片描述
CNN有时会侧重于图像中令人惊讶的部分,但这也是深度学习的神奇之处,CNN根据其任务查找真正需要的特征,任务可能是图像检测、分类、分割或其他类型的目标。

3. 具体任务

3.1 检测和分类

驾驶过程中会遇到许多障碍物,静态障碍物包括墙壁、树木、杆子和建筑物等,动态障碍物包括行人、自行车和各种汽车。计算机首先需要这些障碍物的位置,然后进行分类。无人驾驶车辆在行驶过程中可能会探测到许多不同的物体,根据所检测目标的类型来确定路径和速度。若感知到前方有一辆自行车,汽车可能会减速或变道,以安全地驶过自行车。若感知到前方有另一辆汽车,并预测到前方车辆的行驶速度,无人车可能会选择跟车或换道。
交通信号灯的分类示例,首先使用计算机视觉技术对图像中信号灯定位,然后根据灯光显示的颜色对信号灯进行分类。
在这里插入图片描述
目标物的检测与分类:首先可以使用CNN来查找图像中对象的位置,在对图像中对象进行定位后,可以将图像发送给另一个CNN进行分类。如YOLO和SSD是不同体系的结构。
也可以使用单一CNN体系结构对对象进行检测分类,此时通常做法:在单个网络体系结构的末端附加几个不同的“头”,一个头来执行检测,另一个可能执行分类,如图11。典型的体系结构为R-CNN及其变体Fast R-CNN和Faster R-CNN.
在这里插入图片描述

图11 单个网络体系结构

3.2 跟踪

若对视频中每帧图像的每个对象进行检测并用边界框进行识别,使用跟踪技术会带来一定的优势。例如在运行检测算法时,对象被其他对象遮挡部分,则检测算法可能会失败。由于跟踪可以保留身份信息,可解决部分遮挡问题。
跟踪算法的第一步为确认身份,通过查找特征相似度最高的对象,将之前检测到的所有对象与当前帧中检测到的所有对象进行匹配。计算机视觉算法可以计算出复杂的图像特征,如局部二值模型和方向梯度直方图,用来实现图像匹配。连续视频帧中,两个障碍物之间的位置和速度没有太大的变化,也可以用来快速找到匹配的对象。确认对象身份后,可以使用对象的位置,以估计下一个时间步长的速度和位置,该预测可以帮助识别下一帧中的相应对象。
跟踪的任务可以概括为:测量不同帧中检测到的物体间的相似性为检测到的物体赋予身份标识估计在前一帧中检测到但在当前帧中被遮挡的车辆的位置

3.3 语义分割

语义分割涉及对图像的每个像素进行分类,来尽可能地了解环境,并确定车辆可同行区域。语义分割依赖于一种特殊类型的CNN,称为全卷积网络(FCN),FCN用卷积层来替代传统CNN结构末端的平坦层,网络中的每一层都是卷积层,因而被称为“全卷积网络”。
在这里插入图片描述
典型的CNN中,多次卷积后的输出比原始输入图像小得多,然而图像分割的输出尺寸必须与原始图像的尺寸相匹配,为了达到该目标,需要对中间输出进行上采样处理,直到最终输出大小与原始输出图像相匹配。网络的前端通常被称为编码器,因而这部分网络对输入图像的特征进行了提取和编码;网络的后半部分通常被常委解码器,因为它对这些特征进行了解码并将其应用于输出。
在这里插入图片描述

图12 图像分割网络结构

4. 体系结构

4.1 Apollo感知

Apollo开放式软件栈可感知障碍物,交通信号灯和车道。对于三维对象检测,Apollo首先在高精度地图上圈出感兴趣区域ROI,将ROI过滤器应用于点云和图像数据,以缩小搜索范围并加快感知,然后通过检测网络馈送已过滤的点云,输出用于构建围绕对象的三维边界框,最后使用检测跟踪相关联的算法,来跨时间步识别单个对象。该算法先保留在每个时间步要跟踪的对象列表,然后在下一个时间步中找到每个对象的最佳匹配。
对于交通信号灯的分类,Apollo先使用高精度地图来确定前方是否存在交通信号灯,若前方存在则重点检测摄像头的存在范围,在摄像头捕获到交通信号灯图像后,Apollo使用检测网络对图像中的信号灯进行定位,然后Apollo从较大的图像中提取交通信号灯,将信号灯ROI图像提供给分类网络以确定灯的颜色。若存在多个信号灯,需要选择哪些灯于其车道相关。Apollo使用YOLO网络来检测车道线和动态物体,包括车辆、卡车、自行车和行人等,经过YOLO网络检测后,在线检测模块会并入来自其他传感器的数据,对车道线预测并进行调整,车道线最终被并入名为“虚拟车道”的单一数据结构中,同样也通过其他传感器的数据,对YOLO网络所检测到的动态对象进行调整,以获得每个对象的类型、位置、速度和前进方向。虚拟通道和动态对象,均被传递到规划与控制模块。
在这里插入图片描述

图13 Apollo感知模块简易版

4.2 传感器数据比较

感知通常依赖于摄像头、激光雷达和雷达。
雷达
雷达通过多普勒效应测量速度。多普勒效应会根据对象距离远近,测出雷达的频率变化。多普勒效应对传感器融合至关重要。因为它可以把速度作为独立的测量参数,从而提升了融合算法的收敛速度。
雷达还可以生成环境的雷达地图,进而实现定位。因为雷达波在坚硬表面会回弹。因此,它可以直接测量对象距离,无需在视线范围内也可以。
在车上的所有传感器中,雷达是至不容易受雨雾影响的。而且视野宽阔,可达 150 度,距离可达200 多米。与激光雷达和摄像头相比,雷达分辨率较低,尤其是在垂直方向,分辨率非常有限。分辨率低意味着来自静态物体的反射可能产生问题。例如,街道上检修孔盖或汽水罐,可能产生很高的雷达反射率,但他们并不大。我们将其称为雷达杂波。因此,当前的车载雷达通常会忽视静态物体。

激光雷达
激光雷达是激光探测与测量的简称,使用红激光束来确定传感器和附近对象的距离。当前的激光雷达使用旋转座架发射激光,扫描周边环境。激光室脉冲式的,脉冲被对象反射,然后返回一个点云,来代表这些物体。激光雷达的空间分辨率远远高于雷达。因为激光束越聚焦,垂直方向的扫描层数量就越多,因此每层的激光雷达的密度也越高。
目前,激光雷达还不能直接测量对象的速度,必须使用两次或多次扫描之间的位置差来确定。。激光雷达受天气和传感器清洁程度影响也很大,因此需要保持清洁。它们块头也比其他传感器更大,因此也很难安装,除非只想在车顶安装一个大的激光扫描器。

下表给出三种传感器的优缺点
在这里插入图片描述

4.3 融合策略

Apollo使用激光雷达和雷达来检测障碍物,用于融合输出的主要算法是卡尔曼滤波。卡尔曼滤波有两个步骤:第一步为预测状态,地儿不是更新测量结果。假设正在跟踪一个行人,此时状态表示行人的位置和速度,(1)从已经掌握的行人状态开始,预测行人未来的状态;(2)误差结果更新,使用传感器新测量的数据来更新我们所认为的行人状态。卡尔曼滤波算法是预测和更新步骤的无限循环.
在这里插入图片描述

图14 卡尔曼滤波的过程
实际上由两种测量结果更新步骤:同步和异步,同步融合同时更新来自不同传感器的测量结果,而异步融合则逐个更新所受到的传感器测量结果。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gloria_iris/article/details/91474781