0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于ML-Agents v0.4,在Unity 2018搭建的虚拟城市环境中训练了一辆自动驾驶车辆

ml8z_IV_Technol 来源:未知 作者:李倩 2018-07-09 16:33 次阅读

本文基于ML-Agents v0.4,在Unity 2018搭建的虚拟城市环境中训练了一辆自动驾驶车辆。Unity自带传感器,而且考虑到场景中所有物体的状态,例如:分类、尺寸、速度等都是可以提取的,所以在Unity场景中训练模型可以节省大量的人工标记图片的工作,经济性较好。

2018年3月20 日,美国亚利桑那州一位女士推着一辆自行车突然闯入机动车道,被一辆处于自动驾驶模式的Uber无人汽车撞倒并且丧生。根据科技媒体The Information的报道,行人从阴影中出现,而且自行车挡在行人身前,导致车辆判断失误。

这表明:Uber的自动驾驶车辆还没能完成充分的训练,只能识别较为明显的障碍物,而且对于边界场景考虑存在不足。

问题思考

如果想让一辆Level 5级别的自动驾驶车辆正式上路,到底需要经过多少里程的测试训练呢?2016年兰德智库曾给出答案:110亿英里。

作为自动驾驶圈的领头羊,Waymo在2017年底对自动驾驶测试里程突破400万英里进行了庆祝,然而这个里程离110亿英里还差很远。相对的,谷歌虚拟车辆每天可以跑800万英里。

虚拟仿真可以很可观的加速测试过程,尤其是比较危险边界场景只能在虚拟场景中测试。而且受限于政策与法规,目前可供自动驾驶路测的城市可谓是少之又少,针对于大部分地区无法进行自动驾驶路测的问题,可以通过仿真测试来得到解决。

工具选择

为什么选择使用了Unity 2018,而不是 ADAS 仿真的商业工具,来制作道路环境建模和传感器建模?主要原因:来自世界各地的用户都可以参与到虚拟环境的评估测试中。

这个概念被称为“游戏化和大众参与的虚拟测试”。一般来说,为了评估自动驾驶车辆的实施情况,例如:驾驶员输入,其它车辆行为,道路几何形状等,需要考虑许多情况。通过使用由人类和虚拟用户组成的游戏环境,相比于传统静态测试场景,自动驾驶代码可以进行更广泛地测试。

除了支持多用户平台外,Unity还拥有界面友好的GUI编辑器、3D物理引擎、动画引擎、 3D模型导入以及C或JavaScript脚本。这些功能可以帮助设计和模拟包含道路模型和车辆、行人、摩托车和自行车等其它动态对象的模型城市。Unity拥有庞大的资源库和社区支持,我们可以访问Unity Asset Store资源商店获取大量资源,加快开发速度,这是其它引擎和软件所不具备的。

Unity机器学习代理工具ML-Agents,可以使用游戏和模拟的环境作为训练智能代理的环境。 可以进行强化学习、模仿学习、神经网络或其它机器学习方法, 通过简单易用的Python API对代理进行训练。

TensorFlow是一个开源的机器学习框架,可以运行在台式机、服务器、手机移动端设备上。因为使用的笔记本没有NIVIDA的显卡,所以安装的运行环境是基于CPU运算的,训练时间大概是使用GPU加速的4~5倍。

环境搭建

1

创建城市模型

我们可以从Assets Store资源商店中下载已经搭建好的城市模型或者道路模型组件,自行设计道路系统。

Assets Store 资源商店中有很多已经搭建好的城市模型,所以没有必要花费大量的时间从零开始设计城市模型。如果对道路和城市模型的自定义程度要求较高的话,也可以下载城市建筑物和道路的组建,自己组装城市和道路。

2

使用NavMesh设计城市中的车流

NavMesh是Unity中控制游戏角色进行空间探索和寻路的一个类。我们使用NavMesh设计了行驶在虚拟环境中的AI车流。

车辆整体的运行路线固定,但是因为NavMesh会避开道路上的障碍物重新选择路线,所以环境AI车辆的具体行驶路线会有差别。将NavMeshSurface附到道路平面,并选择可以行驶和不可以行驶的路面,下图中蓝色的部分是车辆可以行驶的路面。

将NavMeshAgent附到环境AI车辆上,并通过在道路上埋下一系列的目标点,来规划车辆行驶的大致路径。在NavMesh下运行的物体会在当前位置和目标位置之间选择最短路径,并且避开障碍物,如同样是NavMeshAgent的物体,所以相同二点之间的路线选择会随路况不同而改变。最短路径选择示意如下图。

3

使用Particle System设计环境变量

Particle System粒子系统可以用来创建难以模拟的现象。例如:火、爆炸、雨、雪等。我们使用Particle System模拟了雨和风二种天气,增加了训练环境的复杂性。效果如下图。

机器学习训练

1

训练模型

基于ML-Agents可以将自动驾驶车辆摄像头获取道路的图片信息,发送给Python的训练模型,利用图像识别提取图片中的参数信息。例如:前方障碍物的分类,距离以及运动方向的判断,发送给PPO训练模型,并将模型输出的命令发送回车辆,控制车辆在虚拟环境中行驶。

汽车没有预编程知道如何驾驶或学习如何驾驶的步骤。事实上,除了与模拟中的轨道边界和其它汽车碰撞对象的距离外,它并不知道整个世界是怎么样的。它只能不断地试错,根据代理对随机命令输出的奖惩总结经验,最终得到一个可以满足设计需要的模型。

2

Tensorboard观测和超参数调整

为了提取训练的状态参数,实时监控训练的状态,方便训练超参数的调节,我们使用了TensorBoard。TensorBoard是TensorFlow提供的一组可视化工具,可以帮助开发者方便的理解、调试、优化TensorFlow程序。

3

训练设备和过程

处理器Intel(R) Core i7-6500U @2.5GHz 2.59GHz

内存:8.00GB(7.87 GB usable)

GPU:Inter(R) HD Graphics 520 (无GPU加速)

系统:64-bit, in10

训练时间:25小时

4

成果展示

可以使用TFSharpPlugin将训练好的模型导入Unity,并在在Unity中观察训练的结果。训练完成的模型可以控制车辆在虚拟环境中比较平顺的行驶,并且可以保持在车道线内,能够应对十字路口和前方车辆障碍的情况。

总结

我们基于ML-Agents v0.4,在Unity 2018搭建的虚拟城市环境中训练了一辆自动驾驶车辆。Unity自带传感器,而且考虑到场景中所有物体的状态,例如:分类、尺寸、速度等都是可以提取的,所以在Unity场景中训练模型可以节省大量的人工标记图片的工作,经济性较好。

我们在以后可以使用ML-Agents的模仿学习,加速训练过程。当然还要进一步完善城市环境和训练模型,提高环境的真实度和模型训练的质量。更重要的是,引入车辆的动力学模型,进行联合仿真训练,训练一个真正可以应用于实际自动驾驶车辆的控制模型。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4574

    浏览量

    98759
  • AI
    AI
    +关注

    关注

    87

    文章

    26459

    浏览量

    264080
  • 自动驾驶
    +关注

    关注

    773

    文章

    13049

    浏览量

    163231
  • Unity
    +关注

    关注

    0

    文章

    126

    浏览量

    21532

原文标题:使用Unity机器学习代理工具ML-Agents进行自动驾驶训练

文章出处:【微信号:IV_Technology,微信公众号:智车科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【话题】特斯拉首起自动驾驶致命车祸,自动驾驶的冬天来了?

    自动驾驶致死的车祸。该车祸是今年5月7日美国弗罗里达洲位名叫Joshua Brown的40岁大哥开着一辆自动驾驶模式行驶的Model S
    发表于 07-05 11:14

    [科普] 谷歌自动驾驶汽车发展简史,都来了解下吧!

    在内的多名高管今年初成立了自动驾驶卡车创业公司。  9月份谷歌一辆自动驾驶汽车与其他车辆相撞,司机受伤住院。
    发表于 10-25 11:08

    【威雅利 汽车】苹果最新专利曝光,要把VR和AR带进自动驾驶汽车

    负责,乘客可以把真实环境替换成不同城市的街景,让旅程变得更加有趣。3年前,有报道称苹果正在开发代号为Project Titan的自动驾驶汽车,随后也有多名高管隐约证实了这
    发表于 04-24 17:05

    UWB主动定位系统自动驾驶的应用实践

    3万美元以上,相当于一辆中级车的价格。自动驾驶四大核心技术分别为环境感知、高精度定位、路径规划、控制执行。其中环境感知技术是最基础、最重要的
    发表于 12-14 17:30

    自动驾驶汽车时代:天线测量与模拟比任何时候都来得关键

    的其他车辆、行人或基础设施进行互动。V2X技术测试可以根据不同的参数进行模拟,例如不同的路面(柏油路、土路、湿滑路面、结冰路面、干燥路面)或国家、城市区域(市区、乡镇)。举例来讲,
    发表于 01-08 10:53

    【PYNQ-Z2试用体验】基于PYNQ的神经网络自动驾驶小车 - 项目规划

    训练并测试神经网络;5. 软硬件联合调试。 准备好手边的开发板和开发环境,从下篇帖子开始,跟我动手制作一辆属于自己的自动驾驶小车吧!`
    发表于 03-02 23:10

    自动驾驶零排放汽车让世界更加绿色

    速度的城市环境近期举办的巴黎车展上,行业专家们也宣称,自动驾驶车辆的安全性更高,并可以大幅降低交通事故数量,减少人员伤亡。到2020年
    发表于 03-11 06:45

    车联网对自动驾驶的影响

    技能的自动驾驶汽车,可以通过对上海市所有车主的上下班时间收集,通过导航来统筹规划每辆车合适的出发时间,行驶路径,从而达到交通效率的最优解。再或者人类驾驶员无法看到的视野盲区,突然有一辆车窜出来,不仅人类
    发表于 03-19 06:20

    为何自动驾驶需要5G?

    吗?由于易受雨、雪、雾、强光等环境影响,摄像头能始终准确识别指示牌和红绿灯吗?再举个例子。当自动驾驶高速路上以130公里/小时行驶时,摄像机/雷达融合无法安全地检测到前方超过120
    发表于 06-08 07:00

    转发:聊聊边缘计算在自动驾驶的应用场景

    了全世界第一辆真正意义上的自动驾驶车辆,该车辆利用激光雷达、计算机视觉及自动控制技术完成对周边环境
    发表于 07-21 14:12

    如何保证自动驾驶的安全?

    自动驾驶技术为人们勾勒出了副美好的未来出行的画面:坐上没有方向盘的汽车,觉睡到公司门口;甚至我们可能不再拥有一辆汽车,需要出门时共享自动驾驶
    发表于 10-22 07:45

    UWB定位可以用在自动驾驶

    的技术可以实现真正意义上的自动驾驶,目前来看成本还是非常高的。若干车企宣布了2020-2021年左右实现L3自动驾驶车辆量产计划,从目前来看,整套自动驾驶系统最便宜也要3万美元以上,相
    发表于 11-18 14:15

    网联化自动驾驶的含义及发展方向

    、其他车辆等的感知信息进行共享,通信技术可以帮助自动驾驶车辆获得全方位的道路交通信息,做出最有利的行驶规划和决策,降低车辆行驶能耗,这一点在车辆
    发表于 01-12 15:42

    自动驾驶车辆AI面临的挑战

    自动驾驶车辆采用的AI算法自动驾驶车辆AI面临的挑战
    发表于 02-22 06:39

    如何开发Arm博士的Boss战演示功能的

    Arm 上的 Windows 11 上运行的代理训练ML-Agents 进行一对一的战斗UnityML-Agents 允许游戏开发人
    发表于 08-15 15:49