百度 Apollo2.0

百度 Apollo2.0_第1张图片
P4-AI生态开放战略
先向大家介绍一下百度做自动驾驶的背景。就像百度总裁COO陆奇在CES大会上讲的,可能不少朋友已经了解到了——百度已经是一家AI公司。
我们可以看到科技大潮的演进,已经从命令行、客户端服务器、互联网、移动互联网一路走来,进入到了AI时代。
在百度AI开放生态战略中,体系分成云和端,支撑的云技术是智能云和百度大脑,而端的输出就是自动驾驶Apollo生态和唤醒外物的DuerOS生态。

同时更重要的,更振奋人心的是AI把移动互联网带入一个全新的时代,我们把它叫做新移动。
在这个新移动时代手机有很强的感知能力,有更多的AI基产能力,每个手机都能听、能看、能说、能学习、能懂用户。百度的核心产品,手机百度,爱奇艺等等,将充分利用这新的能力,全面推进新的技术和产品来引领新一代的移动时代的用户体验。特别是手机百度,手机百度将把搜索和个性化有机融合在一块,打造新一代的更懂用户的体验。

Apollo生态是百度AI重要的、最先落地的生态之一。


P5-Apollo宣言
自4月19号宣布开放后,收到很多伙伴的反馈,其核心总结为Apollo宣言。自动驾驶行业正在快速走向未来,而最大的痛点在于技术壁垒太高,每个企业需要技术与人力的多年积累,才可以进入实质的研发。百度起步较早,有将近4年的技术积累,投入较早,将把能力开放给每一个合作伙伴,从0到1,很快进入到无人驾驶的研发,从而提高无人驾驶行业的创新速度,避免重复造轮子。大家都把精力放在更有效的创新上。共享资源,合作伙伴使用Apollo技术资源,拿来即用;同时,每个合作伙伴,都可以贡献资源,贡献得越多,得到的越多。Apollo受益,合作伙伴更受益。加速创新:数据加创新,汇集数据资源,公里数,覆盖的场景数,以后将远远大于任何一个封闭的体系持续共赢:百度的商业模式,基于百度的核心能力。能力与合作伙伴互补,Apollo将是汽车工业的里程碑,Apollo将产生核心的影响力。
百度 Apollo2.0_第2张图片
P6-Apollo开放路线图
Apollo从2017年4月份宣布开放计划,到7月份发布1.0,9月份发布1.5,2018年1月的CES发布2.0,迭代与发布速度非常快。
Apollo Roadmap可以看到,Apollo开放由两部分构成,开放能力和开放资源。
在2017年7月1.0中开放封闭场地循迹自动驾驶能力和资源,在9月1.5中开放固定车道自动驾驶能力和资源,在2018年1月2.0中开放简单城市路况自动驾驶能力和资源,之后会在2018、2019、2020年逐步开放特定区域高速和城市道路自动驾驶能力和资源,高速和城市道路和自动驾驶Alpha版,并最终到达高速和城市道路与全路网自动驾驶能力和资源。

百度 Apollo2.0_第3张图片

P7-Apollo技术框架
开放的框架是学术界、科技界、产业界的共同需求。Apollo技术框架由4层构成。分别是
Reference Vehicle Platform
Reference Hardware Platform
Open Software Platform
Cloud Service Platform

各层各模块的基本介绍;

具体来说首先我们需要一辆能够受我们信号控制的车,那么就我们管它叫信号车。然后主要是我们和很多车厂和Tier1的这个方案厂商一同来推进的一层;
然后是Reference Hardware,我们要想让车能动起来,需要计算单元、GPS/IMU、Camera、激光雷达、毫米波雷达、人际交互设备、BlackBox等等硬件的支持。
开放软件层。它分成三个子层,有实时的操作系统。有承载所有模块的框架层。高精地图与定位告诉车辆身在何处,感知模块告知车辆周围环境,决策规划模块决定全局与细节规划。控制模块负责将决策规划产出的轨迹生成为具体的控制命令;
百度自动驾驶有非常强的能力来源于云端的。高精地图存储于云端,用以模拟驾驶的仿真服务也在云端,它加速了自动驾驶的研发效率。我们积累了大量的数据和对数据的理解。我们在云端也开放了数据平台,把数据加工的主线,在我们云端来体现出来。在云端还有我们的安全服务,保证软件的自动更新。


Apollo 2.0新开放的模块包括了Security、Camera、Radar和Black Box,这意味着Apollo平台包括云端服务、服务平台、参考硬件平台以及参考车辆平台在内的四大模块已全部点亮。Apollo 2.0首次开放安全和OTA升级服务,只允许正确和被保护的数据进入车内,并进一步强化了自定位、感知、规划决策和云端方阵等能力。其中Black Box模块包括了软件和硬件系统,能够实现安全存储和大容量数据集传输,可以帮助我们及时发现异常情况,提升整个平台的安全可靠性。

硬件方面,增加两个前向摄像头(长焦+短焦)主要用于识别红绿灯,正前方保险杠上方新安装了毫米波雷达。所以很明显,在Apollo 2.0开放了Camera和Radar的模块后,整个平台更强调了传感器融合的能力,已进一步增加其对昼夜简单城市道路工况的适应能力。

就像百度智能驾驶事业群组总经理李震宇提到的,低成本低功耗一定是自动驾驶平台所追求的目标,但其实在从实验室走入量产产品这个过程中,安全最重要,百度首要解决的一定是安全问题。


Apollo资源开放与研发迭代新模式

百度 Apollo2.0_第4张图片

P9-智能汽车的“云+端”研发迭代新模式
智能自动驾驶汽车需要一颗聪明的车载大脑。我们在自己的研发中一路探索过来,智能汽车的“云+端”研发迭代新模式是我们对于加速自动驾驶汽车研发效率提出的解决办法。我们在车辆上积累海量的数据。
把这些积累的数据用云端的服务器集群高效地生成人工智能的模型,也就是车辆大脑。
把汽车大脑更新到车辆上,为车辆赋予自动驾驶的能力。

我们在自己研发过程中发现,研发L4自动驾驶量产车需要用非常复杂的算法策略解决非常复杂的场景。
根据兰德公司报告,量产需积累100亿公里自动驾驶里程经验,100辆车7*24小时跑上百年;如果是传统的直接在车端研发、车端调试的效率是不够的。
所以我们提出的解决办法是通过“云+端”的研发迭代新模式提高研发效率。我们非常高兴向Apollo生态分享这种模式。
百度 Apollo2.0_第5张图片


P10-自动驾驶数据分类
自动驾驶数据可以分为四大类:
自动驾驶车辆产生的数据首先是原始数据。主要是传感器数据、车辆自身数据、驾驶行为数据等。这些数据的特点是数据量极大、类型多样、以非结构化半结构化数据为主。无论对存储、传输、处理都构成比较大的挑战。
为了在深度学习中使用数据,我们还需要大量标注数据。主要有红绿灯数据集,障碍物数据集(2D、3D),语义分割数据集,自由空间数据集,行为预测数据集等等。
为了刻画自动驾驶行为,我们还需要将数据抽象成逻辑数据。主要是完美感知数据,环境抽象数据,车辆动力学模型等。
最后,我们会用为仿真构建仿真数据,主要是参数模糊化数据,三维重建数据,互动行为数据等。

百度 Apollo2.0_第6张图片

数据开发平台与训练平台实战

数据平台概述

P14-Apollo训练平台
我们还通过Apollo训练平台为每一个数据集提供类配套的计算能力。
训练平台的特色是:
通过Docker+GPU集群,提供提供与车端的一致硬件计算能力。
集成多种框架,提供完整的深度学习解决方案。
通过交互式可视化结果分析,方便算法调试优化。
百度 Apollo2.0_第7张图片
百度 Apollo2.0_第8张图片
百度 Apollo2.0_第9张图片

P15-云端开放平台架构逻辑介绍
我们在自动驾驶的算法开发中,最大的痛点之一就是需要对海量数据集,反复尝试。我们通过将深度学习算法的研发流程(开发、训练、验证、调试)在云端实现,可以在充分利用云端大量计算资源的同时,将数据的流动仅在云端的服务器内完成,从而大幅提高算法研发效率。
具体来说,
首先开发者在本地开发机中基于Docker开发算法,并部署依赖环境。
接着将开发好的环境推到云端的私有Docker Repository中。
接下来在平台上挑选数据集,发起训练任务。Apollo训练平台的云计算调度就会将任务调度到计算集群上执行。这个过程中,在云集群的内部,开发者的程序使用数据获取接口,获得自动驾驶数据仓库中的数据集。
最终由业务管理框架将执行过程、评估的结果和Model返回给可视化平台,完成可视化的调试。

百度 Apollo2.0_第10张图片

P16-Apollo官网首页
接下来,我将介绍数据平台的实际操作。
打开Apollo的官网apollo.auto,可以看到首页。
点击Github可以查看Apollo车端开放能力的源代码。
在顶部菜单栏的“开发者”菜单中,选择“数据平台”即可进入Apollo数据开放平台。

推荐使用PC打开使用,效果更佳。

百度 Apollo2.0_第11张图片

P17-登录
在Apollo数据开放平台的页面右上角,有登录菜单,点击后登陆百度帐号,会简化之后的使用流程。

百度 Apollo2.0_第12张图片
P18-数据开放平台
数据开放平台的首页由几个小节构成,分别是仿真场景数据、标注数据、演示数据、相关产品与服务、上传我的数据。
开发者可以直接使用Apollo已经开放的数据,也可以通过Apollo的Data-Recorder记录数据上传到云上使用。
通过选择特定数据,可以进入特定数据的应用。
开发者可以在标定平台中标定车辆参数,通过上传数据,申请数据加工,使用数据标注服务,在训练平台中训练Model,将前几步应用平台的结果合并到Github的Apollo代码中,将编译结果或源码提交到仿真平台中完成评估,这样就通过“云+端”完成了自有车载系统的研发迭代。

仿真场景数据实战

百度 Apollo2.0_第13张图片

P20-仿真场景数据集
首先,可以看到仿真场景数据集。
仿真场景数据包括人工编辑以及真实采集的场景,覆盖多种路型、障碍物类型以及道路环境,同时开放云端仿真平台,支持算法模块在多场景中并发在线验证,加速算法迭代速度。
点击两个仿真数据集下的“立即使用”按钮,可以进入到仿真场景数据集详情页。

P21-仿真场景数据
仿真场景数据的详情页中,可以进一步通过条件筛选,查看场景的细节。
点击右上角的仿真平台按钮,可以进入仿真平台

百度 Apollo2.0_第14张图片
P22-仿真场景
在打开的仿真平台中,可以以默认Apollo模块运行仿真场景,也可以提交自己的自动驾驶系统运行仿真场景。Apollo仿真的具体使用,会有单独分享,这里由于时间关系就不再具体展开了。

标注数据

百度 Apollo2.0_第15张图片
标注数据是为满足深度学习训练需求,经人工标注而生成的数据,目前我们开放了多种标注数据,同时在云端配套提供相应的计算能力,供开发者在云端训练算法,提升算法迭代效率。

Apollo开放了6个标注数据集和社区中比较流行的算法,以便开发者调试云端环境:

激光点云障碍物检测分类,我们提供基于规则算法的Demo(传统机器学习);
红绿灯检测,我们提供基于SSD算法的Demo(Paddle、Caffe);
Road Hackers,我们提供基于CNN+LSTM的Demo(Keras、TensorFlow);
基于图像的障碍物检测分类,我们提供基于SSD算法的Demo(Caffe);
障碍物轨迹预测,我们提供基于MLP算法的Demo(TensorFlow);
场景解析

下面我们看下“激光点云障碍物检测分类”,可以进入数据集详情页。其他的标注数据各位朋友可以自己查看。
百度 Apollo2.0_第16张图片
P25-激光点云障碍物监测分类
在数据集详情页中,可以看到数据集的介绍。
点击右上角有一排操作按钮。
点击“查看使用手册”,可以查看更加详细的数据集说明和使用说明。这是“查看使用手册”后打开的PDF 链接:http://data.apollo.auto/static/pdf/lidar_obstacle_label.pdf
点击样例数据,可以下载少量的样例数据,具体理解数据格式。
点击“申请使用”,可以申请在云端使用数据集中的大量数据。
百度 Apollo2.0_第17张图片
P26-数据在线使用申请
这是点击“申请使用”后弹出的对话框。
当前我们针对科研机构,企业单位开放云端计算能力,即您可以在线使用大量标注数据进行模型训练,并通过API访问开放数据。在您申请后,稍后会有Apollo商务负责人与您联系。

训练平台实战

百度 Apollo2.0_第18张图片
P28-新建任务
在申请通过后,“申请使用”按钮会变成“在线使用”,点击后会进入Apollo训练平台的新建任务(Apollo训练平台有着较高的安全校验机制。初次使用需要设定云属性和联系方式,并签订使用协议书;当登录后过长时间未使用时,需要再次登录)

在我们新建一个任务以前,我们先简单浏览一下训练平台的其他页面。
左侧的菜单栏有以下菜单:
平台概览
任务管理中的任务列表、新建任务
入门指南

用户帮助、关于Apollo功能简单,我们就不展开了,下面着重介绍下前四项
百度 Apollo2.0_第19张图片

P29-训练平台概览
平台概览页包含对训练平台整体的介绍。在训练平台,我们会开放大量级的数据,并配套提供相应的计算资源,供开发者在深度学习平台在线训练算法,致力于赋能每一位拥有较强软件、算法研发能力的合作伙伴,推动自动驾驶技术的普及。
百度 Apollo2.0_第20张图片
P30-任务列表
任务列表页中有个人拥有任务的列表
百度 Apollo2.0_第21张图片
P31-Apollo训练平台使用说明1

入门指南有Docker创建和算法开发的使用说明。
用户帮助中有一些常见问题的解答。
如果开发者有更多的问题,可以使用左下角的联系我们。也可以使用右上角的工单系统。
接下来,就让我们按入门指南,以红绿灯检测为例,讲解一下深度学习算法的研发。

在最上部显示的是为每个有权限的开发者分配的docker用户名和密码

接下来是流程概览
步骤一:本地开发环境搭建
步骤二:Apollo demo镜像获取说明
步骤三:数据使用方法,接口规范
步骤四:提交镜像,提交任务,任务查看,结果查看
其中请参考相关任务对应的demo镜像中开源的代码,学习数据使用方法,编写自己的代码,写入镜像百度 Apollo2.0_第22张图片
P32-Apollo训练平台使用说明2
步骤一,为了搭建本地环境,可以下载VirtualBox对应的OVA镜像包,通过导入OVA创建一个预先配置好的虚拟机。
百度 Apollo2.0_第23张图片

P33-Apollo训练平台使用说明3
步骤二,Apollo官方demo镜像列表,镜像获取说明
我们挑选这个镜像作为开发基础


红绿灯检测paddle demo镜像

apollo-docker.baidu.com/public/demo2.0:paddle_traffic_lights_detection
通过一下步骤获取镜像
 启动
docker sudo service docker start 

登录仓库 
sudo docker login apollo-docker.baidu.com 

输入用户名和密码 (在页顶的红字中显示的Docker仓库用户名和密码)
username: … password: … 

拉取镜像 以红绿灯检测paddle demo镜像为例 
sudo docker pull apollo-docker.baidu.com/public/demo2.0:paddle_traffic_lights_detection

百度 Apollo2.0_第24张图片

P34-Apollo训练平台使用说明4
步骤三,平台数据使用方法,接口规范
参考相关任务对应的demo镜像中开源的代码,学习数据使用方法,编写自己的代码

1.训练程序的启动入口为/admin/run_agent.sh,用户可以修改文件内容来控制训练程序的行为。平台以run_agent.sh结束状态来判断训练任务的状态;
2.任务运行时环境在/dataset_test/目录下有供测试使用的数据集,根据提交任务时选择的任务类型自动下载部署。
3.用户需要参考平台提供的demo镜像的入口(/admin/run_agent.sh)的实现来熟悉不同数据的使用方式;

点击数据工具使用,可以了解开发者在计算平台云端,通过Apollo训练工具下载和上传数据的方式。
下面展开介绍下数据工具。
百度 Apollo2.0_第25张图片

P35-Apollo训练平台使用说明5
数据工具说明
开发者可以使用以下三个接口程序,在自己的算法程序中动态获取数据、输出数据、输出日志、输出评测、输出图表、输出预测结果
apollo_data_get dataSetId outputPath [tag] [offset] [limit]
apollo_data_put …

更多的细节,参考:https://console.bce.baidu.com/apollo/help/faq?name=cal_1_data_help_train6_downupload_data&locale=zh-cn#/apollo/home

百度 Apollo2.0_第26张图片
P36-红绿灯检测Demo算法
我们的Demo中提供了作者原本的Caffe版,以及PaddlePaddle版。有兴趣的朋友可以MIT的论文和作者在Github上的源码。

百度 Apollo2.0_第27张图片
P37-提交镜像
使用以下命令提交Docker镜像到仓库中

以红绿灯检测demo镜像为例:
 //修改镜像tag:
sudo docker tag apollo-docker.baidu.com/public/demo2.0:paddle_traffic_lights_detection apollo-docker.baidu.com/1f89aa012dc599ef8be90180b587c7e6/traffic_lights:paddle_traffic_lights_detection
 //进入镜像:
sudo docker run -it --privileged=true apollo-docker.baidu.com/1f89aa012dc599ef8be90180b587c7e6/traffic_lights:paddle_traffic_lights_detection /bin/bash
 //修改镜像内容:
如:在/admin/run_agent.sh路径下开发自己的算法程序,完成后exit退出容器,得到容器container_id 
sudo docker commit -m 'comments' container_id apollo-docker.baidu.com/1f89aa012dc599ef8be90180b587c7e6/traffic_lights:paddle_traffic_lights_detection
sudo docker push apollo-docker.baidu.com/1f89aa012dc599ef8be90180b587c7e6/traffic_lights:paddle_traffic_lights_detection

百度 Apollo2.0_第28张图片
P38-提交训练任务
进入到训练平台的新建任务中,填写任务信息后提交任务。
百度 Apollo2.0_第29张图片
P39-查看任务列表与详情
在任务列表中可以查看自己的任务,点击任务的任务详情链接,可以进入任务详情查看任务执行状态和结果。

百度 Apollo2.0_第30张图片
P40-训练任务详情
我们为开发者准备了任务信息、表格信息、图表、日志等基本信息,也提供了每一种数据类型的显示,如3D点云。

开发者可以在此页面了解到任务的执行情况、loss的收敛情况。页面加载时间随着数据量增长,可能需要一点加载时间。


演示数据实战

演示数据是为了配合车端代码,通过演示数据体验各模块的能力。

目前我们开放了多种演示数据,覆盖了车载系统演示数据、自定位、端到端数据等模块数据,旨在帮助开发者调试各模块代码,确保Apollo最新开放的代码模块能够在开发者本地环境运行成功,通过演示数据体验各模块的能力。
百度 Apollo2.0_第31张图片
P43-演示数据在Apollo中的使用
例如,下载车载系统演示数据,可以通过Github的apollo源码的编译执行步骤体验完整的Apollo车端能力。
该演示数据集包含传感器数据,下载该数据集。按照Quick Start的说明,编译Apollo,使用rosbag play –l 命令播放该数据集演示即可。

相关产品服务

百度 Apollo2.0_第32张图片
除开放数据外,还配套开放云端服务,包括数据标注平台,训练学习平台以及仿真平台和标定平台,为Apollo开发者提供一整套数据解决方案;

数据上传

百度 Apollo2.0_第33张图片
开发者需要填写名称、设备、采集区域、场景属性信息
我们提供三种数据上传方式,您可根据上传数据的大小以及宽带速度,选择合理的上传方式。
在线 < 5G时
客户端 < 1T时
线下磁盘提供 更大数据
百度 Apollo2.0_第34张图片
客户端上传
使用客户端上传需要下载上传工具,并下载一个传输配置文件。
线下硬盘提供
线下交盘方式在填写好数据信息后,会由Apollo商务人员直接对接。
数据上传工具说明文档
上传工具的详细信息可以参考文档。

总结

百度 Apollo2.0_第35张图片
智能汽车的“云+端”研发迭代新模式

综上所述,开发者可以在标定平台中标定车辆参数,通过上传数据,申请数据加工,使用数据标注服务,在训练平台中训练Model,将前几步应用平台的结果合并到Github的Apollo代码中,将编译结果或源码提交到仿真平台中完成评估,这样就通过“云+端”完成了自有车载系统的研发迭代。

Apollo阶段性成果

百度 Apollo2.0_第36张图片
Apollo 为雄安新区带来了与戴姆勒、福特、奇瑞、北汽、长城、金龙客车、智行者科技等合作伙伴的共 10 款智能汽车,展示了 Apollo 在乘用车、商用巴士、物流车和扫路机等多车型、多场景、多维度的应用,堪称中国自动驾驶的缩影。
Apollo 无人小巴“阿波龙” 2018年实现量产,在国内率先实现自动驾驶巴士的商业化;
戴姆勒V260L
林肯MKZ
北汽EU260
奇瑞EQ
奇瑞瑞虎5X
奇瑞艾瑞泽5
长城WEY
智行者扫路机 “蜗小白”
智行者物流车 “蜗必达”

百度 Apollo2.0_第37张图片
Apollo已经有90家合作伙伴,其中有超过15 个汽车厂商(13 家国内自动品牌和 2 家海外品牌);博世、大陆、德尔福等 10 家一流 Tier1 供应商;包括英特尔、英伟达在内的一流芯片厂商;地图公司如Tomtom;Velodyne、速腾、禾赛等激光雷达公司;地平线、智行者等创业公司;首汽约车、Grab、神州优车等出行服务公司;清华大学、同济大学等高校研究机构。
百度 Apollo2.0_第38张图片

整理自杨凡老师的分享


你可能感兴趣的:(机器学习)