Apollo无人驾驶入门课程笔记之感知 (四)
时间:2020-11-05
内容:无人驾驶课程笔记之感知篇
文章目录
一、感知概述
对于无人车的感知系统,其根本就在于模拟人在驾驶过程中感知环境的方式。
首先我们回想一下我们在驾驶车辆的时候是如何感知世界的呢?人有眼睛可以看,耳朵可以听,皮肤有触觉等等,这些器官都可以帮助我们顺利的感知周围的世界,做出正确的驾驶决策。
而无人车为了模拟人类的感知系统就必须通过摄像机、雷达、激光雷达等传感器来实现对周围环境的感知,而且获得这些数据后,无人车系统还需要和人脑一样去处理这些数据并作出判断,因此经常需要使用到人工智能、深度学习、神经网络等工具。
二、无人车感知工具
2.1 计算机视觉
计算机视觉就是计算机模拟人类视觉的一种方法。人在看到一个图像后,根据以往的经验,可以迅速做出图像中的东西什么种类、什么颜色,但计算机不行,对于计算机来说那就是一堆数字。
所以要计算机实现人类视觉的功能,主要有以下几个关键:
1、检测——指找出物体在环境中的位置;
2、分类——指明确对象是什么;
3、跟踪——指随时间的推移观察移动物体;
4、语义分割——将图像中的每个像素与语义类别进行匹配如道路、汽车、天空。
目前在计算机视觉领域通过机器学习、深度学习等解决上述问题是主要做法,也取得了一定的进展,具体更详细的步骤需要进一步学习相关算法。
2.2 摄像头图像
前文讲述了计算机视觉的基本原理,其主要工作就是进行图像的分类识别等工作,而摄像头图像是最常见的计算机视觉数据来源。
那么计算机是如何识别一张摄像头拍摄的图像呢?以下图汽车为例,从计算机的角度来看,图像只是一个二维矩阵,矩阵中的每个单元格都包含一个值,数字图像全部由像素组成,其中包含非常小的颜色或强度单位,我们可以利用图像处理技术对其中的数字做出非常多的处理。
以上我们是以一张灰度图像进行介绍的,其图像矩阵为一个二维矩阵,而彩色图片则包含更多信息,被构建为一个三维立方体,每个立方体都包含高度、宽度和深度,大多数彩色图像以三种颜色组合表示红色、绿色。蓝色,称为RGB图像。对于RGB图像来说,深度值是3,因此可用立方体来表示。
2.3 LiDAR图像
激光雷达作为另一种常用于无人驾驶的传感器,通过其采集的环境的点云表征,提供了难以通过摄像头图像获得的信息–距离和高度。激光雷达传感器主要是通过激光反射时间来测量与反射物体之间的距离,构成周围环境的视觉表征。如下图所示:
激光雷达通过发射光脉冲来检测汽车周围的环境,蓝色点表示反射激光脉冲的物体,中间的黑色区域是无人驾驶车本身占据的空间,在点云中,每个点除了包含距离等信息外,还包含物体本身的形状和表面纹理等信息,为对象检测、跟踪和分类提供了足够的数据。
激光雷达数据提供了用于构建世界视觉表征的足够空间信息,计算机视觉技术不仅可以使用摄像头图像进行对象分类,还可以使用点云和其他类型的空间相关数据进行对象分类。
三、数据处理常用算法
根据上述内容,我们明白了在无人车感知周围环境的原理以及主要使用设备,而通过设备感知的数据和图像必须经过算法处理后,无人车才能对其进行识别、分类,最终做出行驶决策。
当前在无人驾驶系统中常用的算法主要:
机器学习、
神经网络、
反向传播算法、
卷积神经网络。
通过这些算法,计算机可以较好的完成图像分类、物体识别等工作,对于这些算法更详细的内容需要进一步学习。
四、无人车的感知实现
上文介绍了无人车感知系统的基本组成以及实现感知的硬件构成,本节将完成描述无人车感知系统的工作流程。
4.1 检测与分类
在感知任务中,首先是要对感知的物体进行检测和分类,在驾驶过程中会遇到许多障碍物,静态障碍物包括墙壁、树木、杆子、建筑物;动态障碍物包括行人、自行车、汽车。汽车必须知道这些障碍物的大小、位置,以便于确定行驶路径和速度。
以无人车过红绿灯为例,它必须先利用计算机视觉对交通信号灯进行定位,然后根据信号灯颜色判断其类型,确定接下来的行驶方案。
目前检测和分类常用的算法是:可以先使用检测CNN来查找图像中的对象的位置,在对图像中的对象进行定位后,可以将图像发送给另一个CNN进行分类。也可以使用单一CNN体系结构对对象进行检测和分类,一种通常的做法为在单个网络体系结构的末端附加几个不同的“头”,一个头可能执行检测,另一个则可能执行分类。经典体系结构为 R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD等。
4.2 追踪
追踪的目的主要是为了解决两个问题:
1、在检测失败时是至关重要的,如果你在运行检测算法时,对象被其他对象遮挡一部分,则检测算法可能会失败,但追踪可以解决遮挡问题。
2、追踪可以保留身份,障碍物检测的输出为包含对象的边界框,但是对象没有与任何身份关联,单独使用对象检测时,计算机不知道一个帧中的哪些对象与下一帧中的哪些对象相对应,该任务对人类来说很简单,但对汽车来说很困难
4.3 分割
语义分割涉及对图像的每个像素进行分类,用于尽可能详细地了解环境并确定车辆可驾驶区域。
语义分割依赖于一种特殊类型的CNN,被称为全卷积网络FCN。FCN用卷积层来替代传统CNN体系结构末端的平坦层,现在网络中的每一层都是卷积层,因此名称为“全卷积网络”。
五、Apollo的感知系统
5.1 Apollo的感知系统简介
略
5.2 传感器数据比较
感知通常依赖于摄像头、激光雷达、雷达,如图显示了这三种传感器的优缺点。摄像头非常适用于分类,在Apollo中摄像头主要用于交通信号灯分类、车道检测。激光雷达的优势在于障碍物检测,即使在夜间仍能准确地检测障碍物。雷达在探测范围和应对恶劣天气方面占优势,通过融合这三种传感器的数据可实现最佳聚合性能,被称为“传感器融合”
一般来讲目前无人车系统为了保证更高的准确度都是将这些传感器叠加使用的(直接堆硬件)。
5.3 感知融合策略
Apollo使用激光雷达和雷达来检测障碍物,融合输出的主要算法为卡尔曼滤波。
关于卡尔曼滤波需进一步学习,此处不做过多介绍!
5.4 总结
本章主要讲了无人车感知系统的原理及其实现方法,介绍了几种感知常用的算法,并且以Apollo感知系统为例,讲述了其感知的实现方式。