感知周围环境,需要计算机视觉技术。
计算机视觉:计算机看待和理解世界的方式。最常用的是CNN(卷积神经网络)
无人驾驶四大感知世界的任务:
图像分类器将图像作为输入,输出标识该图像的标签或“类别”。
流程:
输入数据(image)-- 预处理(灰度、旋转等) – 提取特征 – 分类模型
提供距离和高度等摄像头无法提供的信息,使用光线测量,测量发射到反射回来的时间。点云中每个点代表反射会传感器的激光束。
可以回顾机器学习PPT部分(更加详细)
模型:存储计算机从数据中学习得到的结果的数据结构,用于理解和预测世界
监督学习
无监督学习
半监督学习
强化学习:涉及及允许模型通过尝试许多不同的方法来解决问题,衡量哪种方法最成功。
神经网络学习三步走(循环):
反向传播算法
卷积神经网络
先使用检测CNN来查找图像中的对象的位置(定位),再将图像发送给另一个CNN进行分类
如果使用单一CNN体系结构对对象进行检测和分类,常用做法是需要在单个网络结构体系的末端附加几个不同的“头”,一个执行检测,一个执行分类。
经典体系结构——R-CNN及其变体 Fast R-CNN 和 Faster R-CNN
YOLO和SSD是具有类似形式的不同体系结构
跟踪:对每个帧中的对象进行检测并用边界框对每个对象进行标记。
如果对每个帧的每个对象进行检测并用边界框进行标识,跨帧追踪对象的好处:
追踪步骤:
语义分割涉及对图像的每个像素进行分类,用于尽可能详细地了解环境并确定车辆可驾驶区域。它依赖于一种特殊类型的CNN——全卷积网络(FCN)
FCN用卷积层代替CNN结构末端的平坦层,网络的每一层都是卷积层。FCN提供了可在原始输入图像上叠加的逐像素输出。
传统CNN经过多层卷积后输出比输入小得多。然而为了分割像素,输出尺寸必须与原始图像的尺寸相匹配,为此可以对中间输出进行上采样处理,直到最终输出大小和原始输出图像大小相匹配。
编码器网络对输入图像的特征进行提取和编码,解码器网络对特征进行了解码,并将其应用于输出。
对三维对象的检测,Apollo在HD Map上使用感兴趣区域(ROI)来重点关注相关对象,Apollo将ROI过滤器应用于点云和图像数据以缩小搜索范围并加快感知。
然后通过检测网络馈送已过滤的点云,输出用于构建围绕对象的三维边界框。
最后使用检测跟踪关联算法来跨时间步识别单个对象。该算法先保留在每个时间步要跟踪的对象列表,然后在下一个时间步中找到每个对象的最佳匹配。
对交通灯的分类:
1.先使用HD Map确定前方是否有灯
2.如果有,Map会返回灯的位置,这侧重于摄像头搜索范围,在摄像头捕获到灯图像后,Apollo使用检测网络对图像中的灯进行定位,从较大的图像中提取灯,将剪裁的灯图像提供给分类网络来确定灯的颜色。
3.如果有许多灯,系统需要选择哪些灯与其车道有关
Apollo使用YOLO网络来检测车道线和动态物体,在检测后,在线检测模块会并入来自其他传感器的数据,对车道线预测进行调整,车道线最后并入“虚拟车道”的单一数据结构中。也通过其他传感器数据对YOLO网络检测的动态对象进行调整,以获得每个对象的类型、位置、速度和前进方向。虚拟通道和动态对象均被传递到规划与控制模块。
摄像头适合分类,LiDAR适合障碍物检测,Radar(雷达)在探测范围和恶劣环境占优势
Apollo使用激光雷达和雷达来检测障碍物。用于融合输出的主要算法为卡尔曼滤波。
卡尔曼滤波的两个步骤(循环往复):
传感器融合提高感知性能,因为各传感器相辅相成