自动驾驶之感知算法

感知是自动驾驶的第一环,十分重要,同时感知算法要考虑传感器的功能特性、适配其采集到的数据,才能开发出更好的算法。感知算法根据使用的传感器不同而不同。



激光雷达(Lidar)点云感知的两种检测算法——启发式的Ncut、深度学习算法CNNSeg

点云障碍物感知的主要任务是感知障碍物的位置、大小、类别、朝向、轨迹、速度等。核心是点云检测分割技术

启发式Ncut

启发式Ncut

特别注意:首先要利用地图信息对点云进行预处理;例如:去除ROI(感兴趣区域)之外的点云,降低点云图的复杂度。

算法核心思想:将点云转化为拓扑图分割问题,利用图聚类的方法(Ncut)解决问题,每一簇即为一个障碍物,虽然可以予点云以区分,但是缺乏对应的语义信息。

深度学习方法:CNNSeg

算法核心思想:利用卷积神经网络来处理激光雷达捕获的点云数据,并对点云中的目标进行识别;关键词:数据驱动、特征学习。

Apollo的实践:

1.前视图(front-view):将所有点云都投到前视图(front-view)(投影面是一个圆柱面)来构造特征,将点云问题转化为矩阵问题,进而使用深度学习进行处理。通过构建全卷积神经网络对前向视图进行处理。

2.制作俯视图:借助自采集车队,采集更多的实际数据,并且扩展数据视角,制作俯视图,通过将俯视图+前视图相结合的方式进行训练。同时,修改Loss函数,包括使用3D回归和Segmentation的损失函数。如下图:

经过多次实验,发现基于俯视图的Segmentation方法效果最好

但是俯视图没有高度信息,于是把前视图和Camera图像加进来进行辅助检查,综合了Lidar测距准Camera识别准的优点,从而诞生了Middle-Level Fusion方法(Multi-View 3D Object Detection Network for Autonomous Driving);该方法使用俯视图提取Proposal,利用前视图和光学图像辅助进行更加精准的位置回归。流程图如下:

俯视图+前视图+Camera



视觉感知——CNN检测、CNN分割与后处理

视觉感知最早从ADAS(高级驾驶辅助系统)发展而来(ADAS采用人工构造的特征,使用浅层分类器);现在主流已经变为“深度学习+后处理计算”;其特点是计算硬件要求升级、数据需求量大增、安全性评估的变化。

面向自动驾驶的深度学习的特点:1.2D感知向3D感知渗透,模型输出更丰富(后处理需要的3D信息、跟踪信息、属性信息等都会放在CNN中进行学习);2.环视能力构建(传统方法靠一个Camera完成前向检测、碰撞检测、车道线检测。无人驾驶需要环视);3.感知+定位+地图紧密结合。

自动驾驶领域的CNN检测

1.场景有几何约束(规则道路),可以辅助检测

2.模型输出需要更加丰富;Detectation--->2D to 3D--->Tracking

3.多任务学习(学习多种障碍物特征),网络结构适配;(由多个专用网络则流程太长难以满足需求)

4.属性识别——不仅限于障碍物级别的输出

CNN分割

分割与检测有相似之处,但是分割粒度更细,相比于检测的“画框”,它要求边缘分割

后处理—— 针对下游模块

2D-to-3D的几何计算:需要考虑相机位姿的影响、接地点、稳定性

时序信息计算(针对跟踪处理):相机帧率与延时的要求、跟踪不能耗费太多时间、利用检测模块的输出进行跟踪;考虑轻量级的Metric Learning

多相机的环视融合:相机布局决定融合策略,要做好视野重叠 



红绿灯检测算法、Radar感知与超声波感知

红绿灯检测算法:

任务描述:在距离停止线50~-2米的范围内精准识别红绿灯亮灯状态,检测精度要求非常高(需要达到99.9%),同时召回不能太低(recall = TP/(TP + FN));天气等环境问题;红绿灯的制式;

红绿灯感知算法的技术途径

自动驾驶中使用深度学习进行红绿灯感知模块的构建,主要分为以下几步:

1.相机选择和安装

2.高精地图的交互

3.使用深度学习识别灯颜色的变化(分为检测和颜色分类两步)

一条道路上有很多红绿灯,检测算法会把所有的灯都检测出来,地图会告知需要看几个灯,但是并不知道看哪几个灯。因此需要把对应关系匹配起来,需要做3D到2D的投影,投影又受到标定、定位、同步、地图等因素的影响,需要综合考虑

Radar感知

Radar波长长,适应较为恶劣的天气,但是精确度不够

超声波感知


超声波只能进行近距离感知,并且无法感知具体的位置;对无人驾驶帮助不大,更多的是用于倒车和特别近距离的感知; 图中的绿线,如果两个探头感知范围存在重叠部分,这两个传感器的两根绿线会交接,就可以确定障碍物的准确位置。

你可能感兴趣的:(自动驾驶之感知算法)