目录

1. 简介

2. 不同的预测方式

3. 基于车道序列的预测

4. 障碍物状态

5. 预测目标车道

6. 递归神经网络

7. 递归神经网络在目标车道预测的应用

8. 轨迹生成


本文转自微信公众号:Apollo开发者社区 原创:涛涛CV Apollo开发者社区 9月6日

上一篇文章中,我们发布了无人驾驶技术的 感知篇 (下),讲解了感知模块的余下内容。越多的开发者了解学习并掌握Apollo,Apollo就会越简单,可依靠。希望更多的开发者加入Apollo社区,与更多优秀开发者沟通交流。

本期我们将介绍预测模块的相关知识,深度学习无人驾驶感知的剩余内容。希望各位开发者在学习同时能够做好笔记,在Apollo社区中参与讨论,对相关问题发表自己的见解。


视频链接为:Apollo自动驾驶入门课程Sebastian预测_腾讯视频

1. 简介

无人车是在许多物体间穿梭行驶,其中许多物体本身就是一直在移动的,比如像其他汽车、自行车、行人。无人车需要预测这些物体的行为,这样才能确保做出最佳决策。在环境中为所有其他的物体做出预测,这些共同形成了在一段时间内的预测路径,在每一个时间段内会为每一辆汽车重新计算预测他们新生成的路径,这些预测路径为无人车在规划阶段做出决策提供了必要信息。

预测路径有实时性的要求,实时性是指算法的延迟越短越好,一辆车如果是 60 千米/小时速度,那么它在每0.25 秒会行驶 5 米,所以需要确保无人车在行驶之前,前方5 米没有任何障碍物并且可以安全地穿行。

下一个目标是准确性。如果预测出相邻多车道的汽车想并入我们的车道,我们需要减速。而另一种情况是如果预测它会保持在自己的车道上行驶,我们需要做出的预测尽可能保持准确,这样才能帮助我们无人车做出很好的决策。

预测模块也应该能够学习新的行为,当路上有很多车辆,情况将变得复杂。开发出每种场景的静态模型是不可能完成的任务,所以预测模块能够学习新的行为,用这种方式可以使用多源的数据进行训练,使算法随着时间的推移而提升预测能力。

CNN根据其任务查找真正需要的特征,任务可能是图像检测、分类、分割、其他类型的目标。

2. 不同的预测方式

我们将介绍两种不同的预测方式,分别基于模型的预测数据驱动预测

假设无人车来到一个T型路口并且看到一辆车从左面行驶而来,此时还不清楚这辆车是要右转还是直行,用基于模型的方法可以为此场景构建了两个候选的预测模型。一个模型描述了进行右转弯,用绿色轨迹表示,另一个模型描述了继续直行,用蓝色轨道表示。认为任意一种模式发生的概率都是相同的,所以有两个候选模型,每个模型都有自己的轨迹。继续观察移动车的运动,看它与哪一条轨迹更加匹配,如果看到车辆开始向左改变车道,我们会更加确信车辆最终会直行另一方面如果看到车在右转弯车道保持前行,我们会更加倾向于预测对车辆右转,这就是基于模型预测方法的工作原理。

数据驱动预测使用机器学习算法,通过观察结果来训练模型,可以在现实世界中利用此模型去做出预测。数据驱动方法的优点是训练数据越多,模型效果越好。基于模型的方法的优点在于它的直观,并且结合了现有的物理知识以及交通法规还有人类行为多方面知识。

3. 基于车道序列的预测

Apollo 提供了一种叫基于车道序列的方法,为了建立车道序列,首先将道路分成多个部分,每一部分都覆盖了一个易于描述车辆运动的区域。比如如图是一个部分区域的十字路口。为了预测,我们更关心车辆如何在这些区域内转换,而不是在某个区域内的具体行为。可以将车辆的行为划分为一组有限的模式组合并将这些模式组合描述为车道序列,例如直行汽车的运动可以描述为车道序列是 0-1-3-7。

4. 障碍物状态

无了预测物体的运动也需要知道物体的状态,当我们行驶时,通过观察一个物体的朝向、位置、速度、加速度来预测它将会做什么。

这同样是一辆无人驾驶汽车如何观察物体的状态,除了位置、速度、朝向、加速度之外,无人车还需考虑车道段内物体的位置。例如预测模块会考虑从物体到车道线段边界的纵向和横向距离,还包含之前时间间隔的状态信息以便做出更准确的预测。

5. 预测目标车道

使用车道序列框架的目标是为道路上的物体生成轨迹。先从一个稍微简单的问题开始,会预测车道线段之间的过渡。假设在车道段0中检测到一辆车,并且会预测在接下来的几个时间段中它将如何行驶,它可能停留在车道段0然后向右转或者可能转向车道段1然后直行,我们已经将预测问题简化为选择问题。

现在所要做的就是选择车辆最有可能采取的车道顺序,可以通过计算每个车道序列的概率来进行选择。将车辆状态和车道段作为输入,该模型用于提供车辆可能采用每个车道序列的概率,希望模型能够学习新的行为因此应该使用观测数据对模型进行经验性训练,在训练中将真实的车辆行为提供给模型,不仅包括车道段和对象的状态,还包括对象最终选择哪条车道序列。随着记录随着时间的增加,模型可以自我迭代更新,精确度不断提升。每个记录将由观察对象跟随的车道段序列和对象的相关状态组成,在每个时间点,对象占用一段并具有特定的状态,整个记录由一系列车道段和对象的相关状态组成。

6. 递归神经网络

递归神经网络RNN是一种利用时间序列数据特征的一种预测方法。

神经网络是可训练的多层模型,从输入提取高级特征并使用这些特征来计算得到输出。神经网络有许多结构,一个基本的神经网络首先得到输入,然后将数据通过隐藏层,然后经过处理得到输出,这种结果有时被称作多层感知网络MLP。

在训练的过程中会有很多训练数据输入模型,每一个数据都由原始的数据和对应的标签组成,例如输入数据是一张图片,而标签就是一个包含汽车的符号或者是其他符号。神经网络从数据中学习的方式叫做后向传播,首先神经网络得到输入并产生输出,然后计算机比较输出与真值之间的误差。

接着这种误差通过后向传回到整个网络,中间的隐藏层根据观察到的这种差别调整其中的中间值或者叫权重,这样可以在未来提高神经网络的准确率。

建立像这样的多重结构的递归神经网络称之为 MLP单元,从数据序列中提取出高级特征,每个MLP单元将序列的一个元素作为输入并预测序列的下一个元素作为输出。为了对元素之间的顺序关系建立模型,在每个单元之间建立一个额外的连接,这意味着每个单元根据原始输入和前一个单元的输出进行预测,这 RNN的基本结构。

7. 递归神经网络在目标车道预测的应用

Apollo使用RNN建立一个模型来预测车辆的目标车道,为车道序列提供一个RNN模型,为相关对象状态提供另一个RNN模型。连接这两个RNN的输出并将它们馈送到另一个神经网络,该神经网络会估计每个车道序列的概率,具有最高概率的车道序列是我们预测目标车辆将遵循的序列。为了训练这个网络,使用现有的记录,每条记录都包含一个车道序列、相关的对象状态、一个标签,用于指示对象是否遵循此特定车道序列。在训练中,比较网络输出和真值标记并使用反向传播来训练网络。

8. 轨迹生成

轨迹生成是预测的最后一步,一旦我们预测到物体的车道序列,就可以预测物体的轨迹。在任何两点A和B之间,物体的行进轨迹有无限的可能。

如何预测最有可能的轨迹?可以先通过设置约束条件来去除大部分候选轨迹,首先假定汽车将与目标车道的中心对齐,继续去除车辆无法实际执行的轨迹。通过考虑车辆当前的速度和加速度从剩余的轨迹中进行选择,实际上我们并没有实际列出所有可能的轨迹并逐一去除它们。

相反只是在数学理论上来应用这一想法,注意车辆在两点的位置和方位,这两个姿势表示运动模型的初始状态和最终状态,可以使用这两个条件来拟合一个多项式模型,在大多数情况下这种多项式足以进行预测。

更多详细课程内容,大家可以登陆官网继续学习!

也可以添加社区小助手(Apollodev)为好友,回复“课程学习”进群与其他开发者共同交流学习。

自课程上线以来,浏览量已超10万,已帮助全球97个国家约 7000 名学员入门自动驾驶与 Apollo 开源平台,其中37%为海外学员,本门课程已成为优达学城 (Udacity) 近期获得关注度最高的免费课程之一。

Apollo自动驾驶入门课程第⑥讲 — 预测相关推荐

  1. Apollo自动驾驶入门课程第④讲 — 感知(上)

    目录 1. 感知的概述 2. 计算机视觉 3. 摄像头图像 4. LiDAR图像 5. 机器学习 6. 神经网络 7. 反向滤波法 本文转自微信公众号:Apollo开发者社区 原创: 阿波君 Apol ...

  2. Apollo自动驾驶入门课程第①讲—无人驾驶概览

    目录 1. 全面了解自动驾驶主要模块 2. 了解无人车的运作方式 3. 开放式软件栈 4. 本节其他重点 本文转自微信公众号:Apollo开发者社区 原创: 阿波君 Apollo开发者社区 8月1日 ...

  3. Apollo自动驾驶入门课程第⑧讲 — 规划(下)

    目录 1. 路径-速度解耦规划 2. 路径生成与选择 3. ST图 4. 速度规划 5. 优化 6. 路径-速度规划的轨迹生成 7. Lattice规划 8. ST轨迹的终止状态 9. SL轨迹的终止 ...

  4. Apollo自动驾驶入门课程第⑦讲 — 规划(上)

    目录 1. 规划简介 2. 将地图转为图形 3. 路径查找算法:A* 4. 轨迹生成 5. Fernet坐标系 本文转自微信公众号:Apollo开发者社区 原创: 阿波君 Apollo开发者社区 9月 ...

  5. Apollo自动驾驶入门课程第⑤讲 — 感知(下)

    目录 1. 卷积神经网络 2. 检测与分类 3. 跟踪 4. 分割 5. Apollo感知 6. 传感器数据比较 7. 感知融合策略 本文转自微信公众号:Apollo开发者社区 原创: 阿波君 Apo ...

  6. Apollo自动驾驶入门课程第②讲 — 高精地图

    目录 1. 高精地图与传统地图 2. 高精地图与定位.感知规划的关系 2.1 高精地图用于定位 2.2 高精地图用于感知 2.3 高精地图用于规划 3. Apollo高精度地图与构建 3.1 Apol ...

  7. Apollo自动驾驶入门课程第⑩讲 — 控制(下)

    目录 1. 线性二次调节器 2. 模型控制预测 3. 总结 本文转自微信公众号:Apollo开发者社区 原创: 阿波君 Apollo开发者社区 昨天 Apollo自动驾驶课程马上进入尾声,在无人驾驶技 ...

  8. Apollo自动驾驶入门课程第③讲 — 定位

    目录 1. 定位的概述 2. 定位方法介绍 2.1 GNSS RTK 2.2 惯性导航 2.3 激光雷达定位 2.4 视觉定位 2.5 Apollo定位 本文转自微信公众号:Apollo开发者社区  ...

  9. Apollo自动驾驶入门课程第⑨讲 — 控制(上)

    目录 1. 简介 2. 控制流程 3. PID控制 4. PID优劣对比 本文转自微信公众号:Apollo开发者社区 原创: 阿波君 Apollo开发者社区 9月26日 上周我们发布了无人驾驶技术的  ...

最新文章

  1. linux查询引脚功能复用,Linux:使用pinctrl子系统动态切换复用pin脚的功能
  2. 《编码:隐匿在计算机软硬件背后的语言(美)》读书笔记一
  3. shell中的小括号与大括号
  4. 【转】通过Graph 浏览器体验Microsoft Graph
  5. OAuth2.0授权协议的一个简单解释
  6. Mechine Learing一:工程刚需的 “算法” 评估指标
  7. 深度学习难?学完它,拿高薪绝对不是问题
  8. COCOS2D-X编译成android的项目
  9. querydsl动态 sql_QueryDSL-JPA
  10. 计算机科学与技术如何创新,计算机科学与技术专业创新能力的培养途径
  11. 黄色一般表示碳膜电阻,蓝色金属膜,灰色保险电阻
  12. android 窗口切换花屏,分享Android4平台二级页面滚动花屏问题的解决方案v1.0.0
  13. php公众号解决投票刷票,微信公众号投票活动如何防止刷票现象
  14. 因果推断杂记——因果推断与线性回归、SHAP值理论的关系(十九)
  15. 王者荣耀扫码登录教程,扫码登录王者荣耀怎么弄?
  16. php开发cms漏洞,bagecms漏洞复现
  17. 用CSS来实现一些动画在vue中使用之地球旋转(2)
  18. 【python】采集**本子,不要看了,快进来~
  19. java编程题目农夫果园_UML 农夫果园 小系统 设计模式
  20. 阐述一下ecshop各模块的功能_【光电通信】40G QSFP+ LR4 光模块的设计与实现(一)...

热门文章

  1. HDU-4282 A very hard mathematic problem 技巧枚举+二分
  2. 【发现问题】IDEA设置全局新创建文件默认换行符
  3. 苹果笔记本电脑好用吗_苹果新品发布会消息汇总(8月25日)
  4. java中的sql语句书写_Java中sql语句之通配符*
  5. python爬虫网络请求超时_Python网络爬虫编写5-使用代理,处理异常和超时
  6. ubuntu php7 memcache,linux上安装php7 memcache扩展
  7. linux 自带 mysql,linux下安装mysql
  8. java高级mysql面试题_Java高级面试题
  9. asterisk 扩展应用(3)——IVR 实现
  10. Android串口通信实例分析【附源码】