Apollo进阶课程㊸丨Apollo实战——障碍物感知和路径规划能力实战

原文链接;进阶课程㊸丨Apollo实战——障碍物感知和路径规划能力实战 

环境感知在自动驾驶汽车应用中占据了核心地位。一辆车要实现自动驾驶,障碍物感知是最基础也是最核心的功能。

上周阿波君为大家详细介绍了「进阶课程㊷丨Apollo实战——车辆与循迹驾驶能力实战」。

此课程主要介绍了在搭建完自动驾驶车辆的软、硬件环境以后,通常采用循迹测试进行验证,以及进行验证的步骤有:第一步是要实现一个适配层;第二步是Can卡的管理;第三步是控制模块

本周阿波君将继续与大家分享Apollo实战——障碍物感知和路径规划能力实战的相关课程(本节课程基于Apollo 3.0版本)。下面,我们一起进入进阶课程第43期。


相比于最基本的Apollo 1.0版本,Apollo 2.0版增加的主要功能模块是感知和规划。首先,我们回顾Apollo的感知模块。每种传感器都有自己的优势和劣势,如图1所示。从图中可以看出没有一种设备可以满足所有的场景,只有将各种设备融合在一起才能达到相对稳定感知结果。也就是从Apollo 2.0开始,我们开始使用多传感器融合的方式做感知。多传感器融合需要对不同的传感器进行标定。

                                                                                               图1 Apollo中感知模块涉及传感器的属性列表

感知的核心功能是进行障碍物的识别、分类、语义分析和障碍跟踪如图2所示。

                                                                                               图2 感知模块的主要功能

规划的目的是告诉车辆按一条什么样的路经行驶,其代码逻辑如图3所示。顶层左边部分是规划的容器。它有几个核心元素:参考线、高精地图、规划器Planner、轨迹发布

                                                                                               图3 规划模块的逻辑结构

在根据教程搭建了具备感知和规划能力的平台之后,开发者更希望根据自己的场景进行深度定制。为加速研发过程,百度提出了“云+端”的研发迭代模式,所谓的“云”大家都能理解, “端”指的是车辆端,如图4所示。

                                                                                               图4 百度提供的云+端的研发迭代环境

大概的流程是首先从车辆路测中积累海量的数据,将积累的数据传递到云端,然后利用云端服务器集群的强大计算能力去生成深度学习模型,并在云端做回归测试。最后将经过验证的模型更新到车辆上,赋予它新的迭代能力。

一般来说,我们将数据分为几类,如图5所示。

                                                                                               图5 自动驾驶数据分类

  1. 原始数据,各种传感器、车辆、驾驶员行为等。数据种类繁多,维度不同,数据量大,而且大多是非结构化数据,对于存储、传输、处理提出非常大的挑战。

  2. 标注数据,视觉的2D障碍物数据、红绿灯数据、3D点云数据等。

  3. 逻辑数据,包括完美感知、环境的抽象以及车辆动力学模型等。

  4. 仿真数据,包括参数模糊化数据、三维重建数据等。

Apollo建立了一个数据平台,对数据的采集、存储、使用进行管理,其基本功能如图6所示。

                                                                                               图6 Apollo的数据管理平台

首先我们通过data recorder工具按预先定义的格式生成数据,利用云端的传输机制将数据快速传递到云端。其次,我们构建了一个自动驾驶数据仓库,将海量数据成体系地组织在一起,可以快速搜索,灵活使用。最后,云端拥有基于异构系统的自动驾驶的计算平台,提供强大的计算能力。

当前,Apollo开放了六类训练数据,如图7所示。

                                                                                               图7 Apollo开放的数据

  1. 2D红绿灯,用来识别交叉路口红绿灯数据,可以用做训练、测试和验证。

  2. 2D障碍物,比如车辆、行人、自行车,还有其他未知类别的图像数据。

  3. 3D障碍物,其实是激光雷达点云。

  4. 端到端的数据,提供适合end-to-end模块的数据。

  5. 场景解析,像素级的语义标注,比如车辆、背景、交通指示牌、障碍物等,可以用来做整体环境的识别。

  6. 障碍物预测,用来训练预测算法的数据集。

此外,Apollo还发布了一个叫Apollo Scape的学术性项目。Apollo Scape开放的数据在量级、复杂程度和精度方面都比业界有名的Kitty、citi scapes大一个数量级,目的是推动整个自动驾驶行业的发展,如图8所示。

                                                                                               图8 Apollo scape项目

Apollo在云端提供了与车端一致的硬件计算能力,如图9所示。该计算平台基于Docker和GPU的集群构建,并且部署了PaddlePaddle、TensorFlow、 Caffe 等主流深度学习框架。此外,还有一个可视化展现平台,供大家了解结果。

                                                                                               ​​​​​​​        图9 Apollo训练平台

最后我们再来回归一下开发的流程。

作为一个开发者,开发流程从本地开始,本地开发之后可以通过Docker镜像传到云端。然后在云端的计算环境中,通过调度云端的计算资源去训练算法,通过数据接口层调用六大类数据进行训练。

之后可以通过数据集验证算法的效果。依此不断迭代,直接在云端完成算法训练,提升整体的效率,如图10所示。

                                                                                               图10 基于云+端的迭代开发流程

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

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

相关文章

3.1)深度学习笔记:机器学习策略(1)

目录 1)Why ML Strategy 2)Orthogonalization 3)Single number evaluation metric 4)Satisficing and optimizing metrics 5)训练/开发/测试集划分(Train/dev/test distributions) 6&…

接口和抽象类是否继承了Object

我们先看一下Java的帮助文档对于Object的描述: Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. Object 类是类层次结构的根类。每个类都使用 …

3.2)深度学习笔记:机器学习策略(2)

目录 1)Carrying out error analysis 2)Cleaning up Incorrectly labeled data 3)Build your first system quickly then iterate 4)Training and testing on different distributios 5)Bias and Variance with m…

4.1)深度卷积网络:卷积神经网络基础

目录 1)Computer vision 2)Edge detection example(理解) 3)More edge detection 4)Padding(重点) 5)Strided convolutions(重点) 6&#x…

4.2)深度卷积网络:实例研究

目录 1)Why look at case studies? 2)Classic networks(理解) 3)ResNets(理解) 4)Why ResNets work?(经典) 5)Networks in Networks and 1…

10种常见的软件架构模式

有没有想过要设计多大的企业规模系统?在主要的软件开发开始之前,我们必须选择一个合适的体系结构,它将为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,我们应该了解不同的体系结构。 什么是架构模…

4.3)深度卷积网络:目标检测

目录 1)Object localization(重点) 2)Landmark detection 3)Object detection 4)Convolutional implementation of sliding windows 5)Bounding box prediction(重点&#xff0…

4.4)深度卷积网络:人脸识别和神经风格转换

目录 1)What is face recognition? 2)One-shot learning 3)Siamese network 4)Triplet Loss(重点) 5)Face Verification and Binary Classification 6)What is neural style …

一步步编写操作系统 35 内存为何要分页

一直以来我们都直接在内存分段机制下工作,目前未出问题看似良好,的确目前咱们的应用过于简单了,就一个loader在跑,能出什么问题呢。可是想像一下,当我们物理内存不足时会怎么办呢?比如系统里的应用程序过多…

《python深度学习》代码中文注释

《python深度学习》由Keras之父、现任Google人工智能研究员的弗朗索瓦•肖莱(François Chollet)执笔,详尽介绍了用Python和Keras进行深度学习的探索实践,包括计算机视觉、自然语言处理、生成式模型等应用。书中包含30多个代码示…

【BZOJ - 4754】独特的树叶(树哈希)

题干: JYY有两棵树A和B:树A有N个点,编号为1到N;树B有N1个点,编号为1到N1。JYY知道树B恰好是由树A加上一个叶 节点,然后将节点的编号打乱后得到的。他想知道,这个多余的叶子到底是树B中的哪一个…

一步步编写操作系统 36 一级页表与虚拟地址1

为了给大家说清楚分页机制,我们先在宏观上说下cpu地址变换过程,先让大家有个直观的印象,如果有不明白的地方也不要着急,适时地不求甚解,有助于从全局上将知识融会贯通(这句话是我即兴说的,说得多…

动手学无人驾驶(4):基于激光雷达点云数据3D目标检测

上一篇文章《动手学无人驾驶(3):基于激光雷达3D多目标追踪》介绍了3D多目标追踪,多目标追踪里使用的传感器数据为激光雷达Lidar检测到的数据,本文就介绍如何基于激光雷达点云数据进行3D目标检测。 论文地址&#xff1a…

一步步编写操作系统 37 一级页表与虚拟地址2

接上节,分页机制是建立在分段机制之上,与其脱离不了干系,即使在分页机制下的进程也要先经过逻辑上的分段才行,每加载一个进程,操作系统按照进程中各段的起始范围,在进程自己的4GB虚拟地址空间中寻找可有空间…

PointNet:3D点集分类与分割深度学习模型

之前的一篇博客《动手学无人驾驶(4):基于激光雷达点云数据3D目标检测》里介绍到了如何基于PointRCNN模型来进行3D目标检测,作者使用的主干网是PointNet,而PointNet又是基于PointNet来实现的。今天写的这篇博客就是对Po…

计算机视觉那些事儿(1):基本任务

本文主要介绍深度学习在计算机视觉领域(Computer vision)基本任务中的应用,包括分类、检测、分割(语义与实体)。 目录 引言 分类(Classification) 目标检测(Object Detection) T…

一步步编写操作系统 38 一级页表与虚拟地址3

接上,页是地址空间的计量单位,并不是专属物理地址或线性地址,只要是4KB的地址空间都可以称为一页,所以线性地址的一页也要对应物理地址的一页。一页大小为4KB,这样一来,4GB地址空间被划分成4GB/4KB1M个页&a…

《Python编程:从入门到实践》速查表

本文是Python畅销书《Python:从入门到实践》速查表。 随书配套视频观看地址:https://www.bilibili.com/video/av35698354 目录 1.Overview 2.Lists 3.Dictionaries 4.If and While Loops 5.Functions 6.Classes 7.Files and Exceptions 8.Testin…

一步步编写操作系统 39 二级页表1

前面讲述了页表的原理,并以一级页表做为原型讲述了地址转换过程。既然有了一级页表,为什么还要搞个二级页表呢?理由如下: 一级页表中最多可容纳1M(1048576)个页表项,每个页表项是4字节&#xf…

PointNet++详解与代码

在之前的一篇文章《PointNet:3D点集分类与分割深度学习模型》中分析了PointNet网络是如何进行3D点云数据分类与分割的。但是PointNet存在的一个缺点是无法获得局部特征,这使得它很难对复杂场景进行分析。在PointNet中,作者通过两个主要的方法…