百度无人车实现全球首个基于深度学习的激光点云自定位技术
数名来自百度智能驾驶事业群组(Baidu IDG)的研究员和工程师们实现了全球首个基于深度学习的激光点云自定位技术,不同于传统的人工设计的复杂算法,该系统首度基于深度学习网络实现了高精度厘米级的自定位效果,取得了重要的技术突破。该系统的相关技术论文收录在今年 6 月份在美国洛杉矶长滩市举行的国际顶会 CVPR 2019。
作为人工智能最「硬核」的落地方向之一,自动驾驶在学术界和工业界引起了广泛关注。自动驾驶的实现不仅将带来汽车产品形态的根本性变化、颠覆传统汽车技术体系和产业格局,还将引发消费者出行和生活方式、信息技术和通信方式、信息和交通基础设施的变革。然而与高回报成正比的则是实现难度。完整的自动驾驶系统包含了自定位(Localization)、自动驾驶地图(AD Map)、障碍物感知(Perception)、决策和规划(Decision and Planning)、控制(Control)等模块。
高精度自定位是实现自动驾驶的必要技术之一,目前主流的 L4 及 L5 级别的自动驾驶汽车高度依赖一套高精度、高可靠性、强场景适应能力的自定位系统。这套系统为自动驾驶系统提供了高精度厘米级的定位能力,配合上自动驾驶地图,无人车就可以根据自身处于环境中的位置来读取预存在地图中的环境信息,这些预存在地图里的数据包含了包括红绿灯、人行横道、车道线、道路边界、停车位等各种无人车所需要的环境信息,借助这些信息,无人车巧妙地规避了需要实现一个高准确度的在线环境信息感知系统的难题,大幅降低无人车的技术难度,变不可能为可能。
同时,作为无人车的核心模块之一,定位系统一旦出现问题,会造成无人车跑偏撞路肩等灾难性事故。在此论文中,来自百度的技术专家们提出了一套全新的基于深度学习的激光点云自定位技术方案,实现了厘米级的定位精度,同时有着更好地对环境变化的适应能力。
链接:https://songshiyu01.github.io/pdf/L3Net_W.Lu_Y.Zhou_S.Song_CVPR2019.pdf
摘要:百度提出了一种基于学习的点云定位技术,该技术对传统的定位方法进行拆解,使用深度学习网络来取代传统的各个环节和步骤。该方案是全球范围内,业界首次通过使用直接作用于激光点云的深度学习网络来解决自动驾驶的自定位问题。
为了验证算法的有效性,同时百度计划在 Apollo 平台开放一组总计约 380km 的数据集,该数据集包含了制图、训练、测试三个子集,涵盖了城市道路,园区内部道路以及高速等多种场景,地图和测试集之间的最长时间跨度达一年。在该数据集上,百度验证了其算法相对于传统方法的优势。目前,该研究论文已被计算机视觉领域顶会 CVPR 2019 收录。
引言
众所周知,深度学习技术近年来在各个人工智能领域都取得了令人瞩目的成绩,战胜人类围棋冠军棋手的 AlphaGo 更是令普通大众都深刻感受到了 AI 技术突破带来的威力。然而,我们同时发现深度学习目前可以良好解决的问题,主要集中在需要理解、分析、判断等人类根据经验定义的问题。例如,在计算机视觉领域,深度学习在解决图像分割、图像分类、物体检测等问题都取得了非常良好的效果。但是,对于另一大类重要的问题,例如和测量测距、三维重建等相关的几何问题,虽有个别工作取得了一定进展,但总体来说深度学习尚未在相关领域取得决定性的突破。无人车自定位问题则是这类问题的一个典型代表,目前无论从高校到行业巨头,各路玩家的无人车自定位技术也都还没有成功应用深度学习技术的先例。然而,历史的经验告诉我们,一旦基于学习的技术在解决某个人工智能问题领域取得突破性的进展,这种技术演进的洪流通常会以势不可挡之势在各个性能指标维度迅速大幅超越传统人工设计的算法,成为新的行业技术标准。
定位作为自动驾驶的基础模块之一直是研究的热点问题,现有传统的激光点云定位技术如图 1 上半部分所示,其中包含包含了特征提取、特征匹配和时序优化等模块,整个算法的输入包括实时在线激光点云,定位地图以及来自惯性传感器的初始预测的定位位置和姿态,最后的输出则是定位算法优化之后的位姿结果。整体方案的思路和人类认路的方法其实是高度近似的,我们平时也是通过一些典型的地标建筑物等实现对自身位置的判断。不同的是,无人车的定位结果需要厘米级的位置精度以及亚角度级的姿态精度来保证无人车可准确地从自动驾驶地图中提取必要的信息。尽管上述方案已经取得了当前最佳的定位效果,但是这类人工设计的算法进行特征提取和匹配时,对环境的变化非常敏感。在不断动态变化的环境中无法最智能地捕捉环境中不变的信息(例如,地标、路牌等)从而实现对自身位置的高精度高鲁棒性的估计,取决于环境变化的剧烈程度在实际应用中需要经常对定位地图进行更新,这会带来成本的上升。
百度提出的方案如图 1 下半部分所示,通过将传统方法中的各个流程使用不同类型的网络结构来进行改造,实现了开创性的基于深度学习技术的无人车激光自定位技术:L3-Net。
图 1 传统方法与 L3-Net 技术流程对比,L3-Net 使用 PointNet 网络实现特征提取,使用 3D CNNs 网络进行特征匹配和优化,最终使用 RNNs 网络完成时序上的平滑。
根据论文内容,百度提出的技术方案的先进性集中体现在以下几个方面:
- 提出了行业内首个基于深度学习的自动驾驶自定位技术解决方案,可以准确的估计车辆的位置和姿态,取得了厘米级精度的定位效果。
- 使用不同的网络结构拆解取代传统激光点云定位的技术流程并将其串联起来统一训练,使网络能够以端到端的方式完成在线激光点云定位任务。
- 即将发布一组包含城市道路、园区道路、高速等复杂场景的全长 380km 的通用数据集用于同类算法测试,更进一步充实百度 Apollo 开放平台的开放内容。
方法
百度提出的基于深度学习的激光定位系统需要一个预先建立的激光点云定位地图、在线激光点云以及来惯性传感器的预测位姿作为输入。其中预建的激光点云定位地图是通过离线制图算法对多次采集的同一区域的点云数据进行融合,并使用点云识别算法剔除动态地物得到。在线点云是由自动驾驶车辆上安装的激光雷达设备在行驶过程中采集获得,而预测位姿则由上一帧定位结果加上惯性传感器或者车辆运动模型估计的增量运动来进行递推。总的来说,这个定位框架通过最小化在线点云和地图的匹配距离,优化预测位姿从而获得定位结果的。一般来说,无人车需要定位模块输出六个自由度位姿,包括三个坐标轴(x, y, z)方向上的平移(∆x,∆y,∆z)以及三个坐标轴上的旋转(俯仰角,翻滚角和航向角),但是由于惯性传感器通常可以提供相对准确的俯仰和翻滚角信息,而当(x,y)估计准确时,高程 z 通常可以从地图中获取。因此,在目前主流的自定位系统设计中一般只估计 2D 水平平移(∆x,∆y)和航向角,L3-Net 也采取了类似的设计。
图 2 百度提出的基于学习的激光自定位网络架构 L3-Net。该网络通过两个阶段进行训练,第一阶段训练只包含了黑色箭头部分,包括关键点选择、特征提取以及基于 3D CNNs 的特征匹配;第二阶段训练包含了青色箭头的部分,这一阶段训练包含了用于时序平滑的 RNNs 网络。
具体来说,百度提出的 L3-Net 算法流程如图 2 所示。对于每一帧在线点云,需要找到一系列的关键点,并以关键点为中心的收集局部点云块从中提取特征描述子。关键点的提取需要同时考虑局部和全局的几何结构关系。L3-Net 首先利用点云的密度找到了一些候选点。接着对每个候选点使用经典点云 3D 结构特征估计其线性和散乱性的概率,最终综合考虑候选点之间的距离及其结构特性选取出关键点。对于每个关键点,该方法收集了其局部范围内的点云信息,再通过 mini-PointNet 网络结构得到特征描述子。其中 PointNet 是 2017 年 CVPR 收录的直接作用于无序点云的深度学习网络结构,L3-Net 这里使用的 mini-PointNet 是其简化版本,由一个多层感知机(Multi-Layer Perceptron, MLP) 和一个 Max-Pooling 层组成,这也是直接作用于无序点云的网络结构应用于高精度激光点云定位/匹配任务的首次尝试。
在获得了关键点的特征描述子后,需要对 2D 水平位置(∆x,∆y)和航向角结果进行求解,这等价于求解预测位姿和真值在水平位置和航向角上的偏移量。针对这个问题,L3-Net 采用了搜索的方法,对预测位姿为中心的(∆x,∆y,∆yaw)三维状态空间进行离散化,取其中一定范围内的定位状态构成集合。对于在线点云中的一个关键点,通过计算集合中每种定位状态下在线点云与地图的匹配效果可以获得的 cost volume。接着使用 3D CNNs 对 cost volume 进行正则化操作,这样做是为了抑制其中的异常值,提升匹配效果。正则化后,L3-Net 将所有关键点的 cost volume 相加并通过 softmax 层得到(∆x,∆y,∆yaw)定位空间的 probability volume,进而估计出(∆x,∆y,∆yaw)的定位结果。
在得到了每帧点云定位结果后,L3-Net 通过 LSTM 网络对车辆的运动模型进行建模,利用定位的时序关系提升定位结果,实验表明获得了更加平滑和精确的定位结果。
图 3 基于深度学习的 L3-Net 激光点云定位系统与其他系统对比的结果。
图 4 L3-Net 定位网络各阶段输出化的可视化效果。Cost Volume 栏中每一列表示一个关键点的匹配情况,其中每一行表示一种航向角状态,每个图片表示水平位置的 cost 分布。在把所有关键点的 cost volume 合并到一起后,可以看到匹配响应显著增强。最终估计的定位结果(0.538m, 0.993m, 1.001 度)和其对应的来自数据集的定位真值(0.524m, 0.994m, 1.044 度)在最右栏展示。
总结
针对自动驾驶中的自定位问题,百度提出了一套基于深度学习的激光点云自定位算法。百度使用不同类型的网络结构对传统方法中的各功能模块进行替代,并在一个包含多种场景路况和大尺度时间跨度的数据集上验证了算法效果,实现了厘米级的定位精度。该数据集包含了城市道路、园区道路和高速等多种富有挑战的路况场景,数据总里程达 380km,即将在百度 Apollo 平台开放。