查看原文
其他

《听大咖 讲论文》直播回顾丨数据驱动的自动驾驶预测架构及其在Apollo平台上的应用

许珂诚 Apollo开发者社区 2022-07-29


去年,百度在长沙宣布自动驾驶出租车队Robotaxi测试运营正式开启。今年开始,Apollo在长沙全面开放载人测试运营,目前覆盖的路网面积已达70公里,站点数量50个以上。



同时,Apollo生态联盟也在不断壮大,已拥有200+生态合作方,囊括全球主流的整车、零部件、芯片、通信、出行、初创公司和科研公司,拥有40000多名全球开发者。Apollo已在不同场景落地,疫情期间生态合作伙伴的约100辆无人消毒车在17个城市运行。


当然,这些成绩离不开技术积累。根据今年3月发布的《北京市自动驾驶车辆道路测试报告(2019年)》,百度在多个技术维度上获得第一。在牌照方面,百度是全国目前唯一获得T4驾考牌照的公司。而在自动驾驶专利上,百度的自动驾驶技术专利位列全国第一

 

那么,百度Apollo在核心技术上具体是如何更迭的?

 

6月30日,在CSDN、百度APP、B站举办的《听大咖 讲论文》——Apollo自动驾驶专场上,百度技术工程师精选了3篇百度智能驾驶领域的年度优秀论文,为开发者揭秘百度Apollo背后的核心技术创新,内容涉及鲁棒LiDAR定位系统的定位模块、控制模块、自动驾驶预测技术等。这些技术为解决因施工修路造成的定位失败问题、车辆的动力学状态问题、周边行人车辆的预测问题,提供了更优越的思路。除此之外,还对自动驾驶技术的发展做出展望。


上期我们为大家整理了<听大咖>直播回顾丨百度Apollo自动标定系统:一种工业级、数据驱动、基于学习的车辆纵向动力学标定算法》,今天我们将继续为大家送出第四篇论文讲解,由百度Apollo高级软件架构师——许珂诚为我们讲解《数据驱动的自动驾驶预测架构及其在Apollo平台上的应用》


了解更多相关内容,请点击下方视频观看:



  ENJOY THE FOLLOWING  



百度Apollo在创新性、实用性和规模化方面都有深厚的工作积累,我们的预测模块已能够实现一套全自动、跨区域、规模化部署的解决方案。

 

下图所示的是Apollo整体框架,其中感知、定位、地图模块通过预测算法给出障碍物未来的运动轨迹,输出给下游规划模块。在自动驾驶中,可以通过预测周边障碍物的行为,帮助主车提前做出决策,从而降低交通事故的发生率。




预测技术作为自动驾驶中承上启下的关键组成部分,近两年受到了学界和工业界的重视,有许多优秀论文在算法创新上做了很多的工作,对于一些特定的问题也有比较好的效果的提升,但针对现今日益强烈的跨区域规模化的发展需求,也有论文提出完整解决方案。

 

在这方面,总结了三个主要面临的痛点问题:

 

第一,模型跨区域部署。大部分预测模型都是从实际路测数据中学习出来的,那从原始数据到模型的端到端过程包含很多道工序,当我们往跨区域规模化方向发展,需要源源不断收集新的区域数据来强化模型。一个能打通从线上线下、具备高度自动化的数据流水线非常必要,这篇论文其中一部分内容就是介绍Apollo的预测模型如何设计这个方案。

 

第二,对于一些线上方法不可避免地有一些参数需要调整。有些参数是为了适应某个地区的交通状况,到了新的区域就需要重新调试。传统人工调试方法显然不能满足规模化发展要求,因为参数调试需要耗费人力和时间。所以这个问题,解决方法是数据驱动的自动化调参机制。

 

第三,线上计算耗时高。现在有许多工作优化了预测模型的表现,但模型都相对比较复杂,实际应用中有比较高的耗时,在Apollo开源平台,我们通过工程化的优化,把一些复杂模型计算耗时限制在了可接受范围之内。

 

针对以上三个痛点以及对应的解决方案,这次主要介绍Apollo预测模块自动化数据流,并且还详解讲解其中两个重要算法部分,一个是语义地图在Apollo平台的部署用于轨迹点预测;另一个是预测模型之后的轨迹生成方法以及它的自动调参机制。

 


 


Apollo预测模块的整体框架。其中两个重要的算法内容:一个是语义地图在Apollo平台的部署中用于轨迹点预测,另一个是预测模型之后的轨迹点生成方法以及它的自动调参机制


在消息预处理阶段,预测模块监听来自感知、定位和上一帧规划模块发出的消息,并且把定位模块的消息转换成一个障碍物的格式和感知模块输出的周边障碍物信息,一起送入一个LRU缓冲器中,对于每个障碍物会在感知输出的基础上预处理一些和它周边环境相关的信息,比如车道、路口以及与周边其他障碍物的关系。为了打通线上线下,对于每一帧障碍物,我们用障碍物ID和时间戳作为Key传入数据库中,这样在线下进行各种数据应用的时候,可以根据Key来获取相关的信息。

 

消息预处理的第二部分,根据不同的场景对障碍物优先级进行划分,对于优先级较高的障碍物,采用相对复杂的模型以达到更好的预测效果;对于优先级相对比较低的障碍物,采用相对简单的模型来降低线上计算压力。对于障碍物优先级的划分,根据直路场景和路口场景做不同的处理,在直路场景中,我们会把主车当前车道标记为Caution,如果是要换道的话,也会引入目标车道最近的前车和后车。在路口环境中,会把路口范围内以及与主车车道有交叉或者交汇最近的几辆车作为Caution。对于这些标记为Caution的障碍物,我们认为是有较大可能性会和我们发生行为交互。

 

线上架构的第二部分是模型推理,那些被认为是Caution级别的障碍物会采用语义地图结合LSTM模型进行推理,这个模型能够兼顾静态地图信息和动态交互信息直接输出障碍物的预测轨迹点以及轨迹点的概率分布。对于普通级别的障碍物,我们会根据它所在的场景分别使用车道模型和路口模型来预测它们的行为,车道模型会预测障碍物未来要去哪条车道,路口模型会预测障碍物未来从哪个路口出口离开,那么这些模型所需要的特征会按照同样障碍物ID和时间戳组合作为Key自动存入数据库中。这样既可以避免重复的特征抽取,也可以保证线上线下模型特征的一致性。

 

线上架构的第三部分是轨迹点后处理,它包含两个方法,一个是基于轨迹点预测模型之后的延伸,按照预测出来的最后几个轨迹点的走势来判断将来会沿着哪条车道行径;另一个是基于行为预测模型的轨迹点生成方法,在这个方法中,引入了一些轨迹规划的算法思想,根据一种采用将选择方法来模拟车辆按照某种行为的运动方式。存储一些相关的信息到数据库中,在线下会进行一套数据驱动的机制来自动调参。

 

Apollo预测模块的线下数据流水线架构,如下图所示,它可以自动化地完成数据标注、特征抽取、模型训练、参数调整以及结果评价的应用。那么这三个数据库就是之前介绍的线上架构存储信息的,它也是连接线下的纽带。可以从里面抽取相应的信息来分别做数据标注、模型训练和自动调参,下面对这几个数据应用一一做介绍。



数据标注应用会对每帧每个障碍物根据它的未来运动的真值再结合高精地图的信息来标注未来轨迹点车道序列或者是入口、出口。标注的结果会按照分类类别存入线下文件中,用同样的Key来读取。模型特征的抽取会从来自线下的数据库中按照模型的类别存储特征,对于每个样本可以用同样的kin来读取,这些特征会和数据标注的结果一起进行模型训练,依托于百度云的算例,我们同时可以进行大量不同模型的训练。在Apollo未来的版本中,也会逐步开放模型训练的数据库。

 

对于自动调参部分,可以从数据库中提取出采样轨迹的代价值,再结合主车未来轨迹的真值一起送入一个Siamese神经网络来进行自动调参,最后可以把模型的自动调参产生的预测轨迹结合数据标注未来轨迹真值做一个端到端的评价分析,从而对整个线下数据流起到指导作用。

 

 

 


下图所示,以左边场景为例,这是入口场景,里面有3辆障碍车和我们自己的主车,根据这个横道分别用不同颜色的色块来表示。除了静态地图信息,还包括主车在内的障碍物信息,障碍物用黄色来表示,通过颜色渐渐变暗的强弱来表示它的运动历史。



对于每个需要作预测的目标障碍物,可以从大的语义地图中扣取出一个代表它周围40mx40m的图片,如下图所示,这个图片能够对障碍物周边情况进行很好的建模,为了把目标障碍物给区分出来,我们把它标记为红色,并且让它处于中偏下的位置,这样使得图片能够包含多一些它前方的环境因素,那些环境对它的行为尤为重要。



把障碍物语义地图的图片通过CNN网络编码成一个环境特征向量,然后结合LSTM我们可以对轨迹点进行直接的预测,每个预测轨迹点都可以作为输入,通过LSTM迭代最终形成完整预测轨迹。如果对预测出来的轨迹点加上一些概率分布的信息,配合最大似然函数可以判断出预测轨迹点的不确定性。因为这个模型的输入相对比较复杂,需要绘制许多地图信息和障碍物信息,所以在线上部署的时候做了一些工程优化。 


我们模型的表现是达到业界领先水平,在不同的行为上预测精度具有一定的鲁棒性。通过我们在加州两个不同城市的测试结果,看到模型的表现非常地稳定,这也很好地验证了整个这套架构具有快速跨区域部署的能力。

 


 

轨迹点预测主要采用语义地图的建模方式,并且取得了比较好的预测结果,但因为出于效率的考虑,只对Caution级别的障碍物用这样的模型,对于其它普通优先级的障碍物,根据它的场景来预测相应的行为,并且根据预测出来的行为生成合理的轨迹,这些是接下来详细介绍的内容。

 


这两个是Apollo预测模块主要使用的行为预测模型,如上图所示,左边这个是预测车辆未来前进的车道序列,右边这个是预测车辆未来会从哪个路口出口离开。行为预测完了以后,需要根据预测出来的行为来生成轨迹,这样的轨迹需要能够很好的模拟障碍物根据某种行为采取的某种状态,为了达到这个目的,我们借鉴了一些规划里面的经验,设计了一种基于采样将选择的轨迹生成方法,并且借助神经网络来自动调节里面的参数。



结合前面的先验概率和通过代价值计算出来的似然,可以获得一个后验概率,以及所对应最终的一条最优轨迹。就像在图中三个行为的概率最终被改成了执行为80%,左转、右转均为10%,同时我们给这三个行为分配了一条对它们来说比较合理的轨迹。这样既可以对机器学习模型给出的行为概率做一个后验的修正,也可以给轨迹的速度分布做一个比较合理的预测。这个算法的调试归结于对这三个代价函数权重的调试,这些权重其实代表了某一地区的交通状况,到底是更激进,还是更保守,以及当地司机对这些因素的重视程度。希望通过这些权重值最终选择出来的轨迹能够代表当地司机的一个驾驶习惯。

  



我们的目标是让预测技术能够实现快速、高效地跨区域部署,为此设计一套全自动数据流,高效并且能够保持线上线下一致性。另外,我们还有两个算法层面的应用,一个是基于地图轨迹预测的模型部署,另一个是轨迹生成方法中数据驱动的自动调参机制。




Q:


语义地图torch模型实车部署时推理耗时较长,是如何优化的呢?


A:

用torch自带的GPU推理机制来加速



Q:


语义地图模型中的轨迹点方差等信息如何使用才能够弥补感知效果不好的情况呢?


A:

方差等信息是未来预测轨迹点的,主要是输出给下游规划模块来调整决策



Q:


对于障碍物种类的问题, 是否就是常见的机动车、 vru和交通标志? 是否能够识别二维(高度相对可忽略)的障碍物, 比如水坑、冰层和路洼。

A:

对于障碍物种类,一般分为行人、机动车、非机动车、锥桶



Q:

Siamese网络与离线标定表的3层网络是同一个吗?

A:

有一些区别的,我们这里其实是用Siamese网络来解一个优化问题,然后提取出里面的权重,在线上使用



Q:


经过多个LSTM的轨迹点预测,会不断累加上一个轨迹点的误差。这样最终的达到误差能达到要求吗?

A:

这个误差情况有可能存在。但LSTM能够更好的模拟动力学状态,保证轨迹的平滑性合理性



Q:


语义地图模型中是否有必要从轨迹点中提取出行为的概念给决策规划使用呢?

A:

在Apollo中,不需要,因为预测和规划的接口就是轨迹。规划模块是根据预测模块给出的轨迹点来做决策的。



Q:


这几个代价函数有优先级吗?权重都一样吗?

A:

没有优先级,权重不一样,可以通过自动调参的模型来从数据中学习出来。


Q:


对于处于视野盲区,不借助RSU,仅靠单车智能可以实现行为预测吗?

A:

这个更像是一个关于感知的问题,视野盲区内如果能有辅助工具来识别出障碍物的话,预测就可以正常进行。



Q:


先验概率如何获得?

A:

先验概率就是行为预测模型输出的概率



Q:


轨迹是确定的,概率为1,语义地图模型中得到的预测3s,如果预测轨迹偏差较大,如何保证整体轨迹的效果呢?

A:

我们除了轨迹点,也同时输出高斯概率分布,表示轨迹点的不确定性。下游可以利用这个信息来做决策。



Q:


每个司机有不同驾驶习惯,用地区来划分,可以这样一概而论吗?

A:

根据我们的经验,不同地区确实存在驾驶习惯的差异



Q:


行人轨迹预测采用语义地图模型比单纯的LSTM模型有更好的效果吗?

A:

是的,我们做过测评,精度可以提升50%左右。



Q:


被预测车辆的数据参数都有哪些,以及怎么获取的?

A:

被预测车辆的信息是从感知模块获取的



Q:


这个自动调参是用的auto-ml以及nas的方法吗?轨迹预测有试过一些相关的学术数据集吗?

A:

这个自动调参的方法和auto-ml不一样。auto-ml是调机器学习的超参数,而我们的方法是用一个模型从数据中学习规则方法里面的参数。本文的重点是数据驱动的工程架构,所以在一些算法方面的评估没有展示的太多。



Q:


这些训练数据集是一个个绘制出来的吗?

A:

是的



Q:


新入职的普通工程师在Apollo的具体工作是什么样的呢?

A:

一般会从一个小的项目开始着手来熟悉代码,然后慢慢做到规模稍大一些的项目,逐渐对整个系统有所了解。



Q:


障碍物每个行为下的预测轨迹,自车都会考虑吗?还是选取概率对应最大的那条轨迹?

A:

预测模块会输出概率较大的轨迹给规划模块



Q:


如果在进行预测时,感知或定位数据不准确,如何保证预测的鲁棒性呢?

A:

这种情况就需要提高感知和定位的准确性,从根上解决问题。



Q:


是否直行一定比转弯有更大概率?

A:

这个不一定的,有些情况下车头方向已经明显偏向某一边了,那肯定是转弯的概率更大一些。



Q:


这些训练数据集,图片中汽车轨迹与颜色信息都是需要手工绘制出来的吗

A:

对,都是手工绘制出来的。



Q:


被预测车辆的数据参数都有哪些,是只有位置吗?

A:

会有位置、速度、朝向、形状



Q:


意图预测是否在云端?语义图片的剪切范围如何确定呢?

A:

预测的模型推理是在车端的。语义图片的剪切范围是根据经验以及计算效率来确定的。



Q:


在十字路口概率分析中,转弯自行概率是根据不同地区的保守层度进行不断优化的吗?

A:

转弯的概率是行为预测模型输出出来的。



Q:


这几个函数是怎么设计的呢?

A:

主要是参考了规划模块里的cost函数,然后选取几个相对比较重要的。



Q:

先验概率看来是基于某种手工的专家规则确定的?

A:

先验概率是行为预测模型确定的。



*论文链接:https://arxiv.org/abs/2006.06715


以上就是本次关于数据驱动的自动驾驶预测架构及其在Apollo平台上的应用课程的全部内容。欢迎大家提出问题,进入社群进行交流。更多相关技术干货也可以继续关注后续的课程。




点击文章左下角『阅读原文』

可看直播视频回放





自Apollo平台开放已来,越来越多开发者积极地参与到我们所开设的分享当中,并基于Apollo擦出更多火花。


欢迎开发者继续关注Apollo开发者社区每月的课程分享,获取更多学习资料和自动驾驶相关技术内容。


开发者还可以添加Apollo小哥哥(微信号: apollo_xzs)为好友,加入开发者交流社群与业内开发者进行互动,期待大家的沟通交流!

                             





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存