Apollo自动驾驶入门课程第⑥讲 — 预测

目录

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) 近期获得关注度最高的免费课程之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用PDF.js实现前端和手机端网页预览PDF文件(可定制,支持本地文件、Base64编码和远程URL跨域方式)

1.插件下载地址:https://mozilla.github.io/pdf.js/ 下载后解压pdfjs-1.10.88-dist.zip文件后得到: 2.把pdfjs-1.10.88-dist放到项目静态资源中,在自己的页面中通过iframe链接到pdfjs-1.10.88-dist/web/viewer.html文件中。 3.访问自己的页…

移动互联网浩荡十年 有的升腾,有的陨落

原创: 颜西龙 猎云网 (ilieyun)1周前 中国移动互联网的十年,是波澜壮阔、荡气回肠的十年。本文回溯了这段历史,在这十年间里,有的企业升腾,有的企业陨落。 2011年8月16日,北京798艺术…

原生JS动态计算输入框文本内容的宽度,当内容宽度超过输入框的宽度时可控

需求场景:左边输入框输入内容,右边输入框用placeholder展示,当placeholder的内容宽度超过右边输入框的宽度时,placeholder强行替换为“请选择” 注意事项:1、左右输入框的大小、样式都无关; 2、实际业务中…

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

目录 1. 规划简介 2. 将地图转为图形 3. 路径查找算法:A* 4. 轨迹生成 5. Fernet坐标系 本文转自微信公众号:Apollo开发者社区 原创: 阿波君 Apollo开发者社区 9月13日 上周我们发布了无人驾驶技术的 预测篇,简要介绍了预测的…

JS正则表达式常见场景下的用法总结

(一)前置知识总结: 1. 正则表达式 /xxxx/[标识] 其中的标识含义 •g (全文查找) •i (忽略大小写) •m (多行查找) 2. 正则表达式创建的两种方式(等价&#…

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

目录 1. 路径-速度解耦规划 2. 路径生成与选择 3. ST图 4. 速度规划 5. 优化 6. 路径-速度规划的轨迹生成 7. Lattice规划 8. ST轨迹的终止状态 9. SL轨迹的终止状态 10. Lattice规划的轨迹生成 本文转自微信公众号:Apollo开发者社区 原创: 阿…

网络编程懒人入门(五):快速理解为什么说UDP有时比TCP更有优势

转自即时通讯网:http://www.52im.net/ 本文观点仅作参考,请根据自已系统的应用场景合理地选择数据传输层协议即可,无需盲目崇拜大牛言论。 1、前言 对于即时通讯开者新手来说,在开始着手编写IM或消息推送系统的代码前&#xff…

CSS定位总结:position=static/relative/absolute/fixed时的区别、top/bottom/left/right与margin外边距的运用

准备布局&#xff1a; <!DOCTYPE html> <html> <head> <style> *{ margin:0; padding:0; } .base-container{width: 500px;height: 500px;background-color:lightgray;border:1px dashed red; } .base-compare {width:200px;height:100px;background…

网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门

转自即时通讯网&#xff1a;http://www.52im.net/ 本文引用了知乎网友“薛定谔不在家”的部分文字内容&#xff0c;感谢原作者的分享。 1、前言 即时通讯网整理了大量的网络编程类基础文章和资料&#xff0c;包括《TCP/IP协议 卷1》、《[通俗易懂]深入理解TCP协议》系列、《…

总结JSON.parse()报错VM71:1 Uncaught SyntaxError: Unexpected token u in JSON at position 0等之类的问题

问题场景&#xff1a;在调试前端应用的时候经常出现形如“Uncaught SyntaxError: Unexpected”之类的令人头疼觉得莫名其妙的问题&#xff1b;所以有必要总结整理一下关于JSON.parse()这个API方法的注意事项。以便在以后的开发中出现类似的问题能第一时间想到可能是这个方法的参…

金额输入框校验和自动校正、支持指定任意位数小数decimal、支持只能输入整数、支持是否允许输入负数等功能

应用场景&#xff1a;开发前端交互页面时&#xff0c;经常遇到金额输入框、指定小数位数的数字输入框&#xff0c;单一的正则表达式无法满足大部分的业务校验需求&#xff0c;下面总结一个实用巧妙而又灵活的把普通输入框变成自动校正输入框的解决方案&#xff1a; 数字&#…

网络编程懒人入门(七):深入浅出,全面理解HTTP协议

转自即时通讯网&#xff1a;http://www.52im.net/ 本文引用了自简书作者“涤生_Woo”的文章&#xff0c;内容有删减&#xff0c;感谢原作者的分享。 1、前言 HTTP&#xff08;全称超文本传输协议&#xff0c;英文全称HyperText Transfer Protocol&#xff09;是互联网上应用…

【HDU 4394】Digital Square(bfs,数位搜索,思维,数学)

题干&#xff1a; Given an integer N,you should come up with the minimum nonnegative integer M.M meets the follow condition: M 2%10 xN (x0,1,2,3....) Input The first line has an integer T( T< 1000), the number of test cases. For each case, each line…

SM4算法原理

前面的文章介绍了SM4算法的C语言实现&#xff0c;源码可见文章&#xff1a;SM4国密对称算法源码解析_10点43的博客-CSDN博客_sm4代码。 本文将会介绍SM4算法原理&#xff0c;这部分可能会比较枯燥&#xff0c;但数学要求也不是太高。 目录 1.概述 2. 参数产生 3. 轮函数 4…

网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接

转自即时通讯网&#xff1a;http://www.52im.net/ 本文原作者&#xff1a;“水晶虾饺”&#xff0c;原文由“玉刚说”写作平台提供写作赞助&#xff0c;原文版权归“玉刚说”微信公众号所有&#xff0c;即时通讯网收录时有改动。 1、引言 好多小白初次接触即时通讯&#xff…

Idea Spring Boot配置文件.yaml或.properties不能自动提示的有效解决办法

SpringBoot项目的配置文件.yaml/.yml/.properties文件编写的时候没有自动提示&#xff0c;网上的解决办法五花八门&#xff0c;不一定适合具体个人的IDE环境&#xff0c;下面总结一套能解决绝大部分情况的方案&#xff1a; 先给出能自动识别的图样&#xff1a; 步骤1&#xff…

[通俗易懂]深入理解TCP协议(上):理论基础

转自即时通讯网&#xff1a;http://www.52im.net/ 前言 TCP是一个巨复杂的协议&#xff0c;因为他要解决很多问题&#xff0c;而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程&#xff0c;但对于学习的过程却能让人有很多收获。关于TCP这个协议的细…

Thymeleaf模板引擎处理日期输入框回显问题type=“date“类型的坑 和 单选按钮、复选框的回显

type"date"类型的日期输入框的默认格式为"yyyy/MM/dd"&#xff0c;但是如果使用Thymeleaf的日期格式化工具类的时候使用"yyyy/MM/dd"就无法回显数据&#xff0c;必需使用类似于"yyyy-MM-dd"这种格式才能回显。 <!--emp.birth为Dat…

Anaconda中软件库更新

今天在Anaconda运行Visualization of MLP weights on MNIST源码时出现了如图错误&#xff1a; 提示无法导入fetch_openml&#xff0c;查了一下是对应的sklearn软件包版本过低&#xff0c;为0.17版。需要更新到0.20版。 1.打开Anaconda Prompt命令行 输入 conda list 命令 查看…

Mac安装mysql8.x最简洁的步骤,避免采坑

1.下载mysql8的.dmg安装包&#xff08;官网下载需要Oracle账号&#xff0c;推荐网上搜索一个8系列的版本即可&#xff09; 2.双击.dmg安装包&#xff0c;不断点击下一步。但是需要注意以下两点&#xff1a; &#xff08;1&#xff09;密码认证方式都选第二个&#xff08;不是…