如何用超大规模真实驾驶视频数据集做端到端自动驾驶-阿里云开发者社区

开发者社区> 雷锋网> 正文
登录阅读全文

如何用超大规模真实驾驶视频数据集做端到端自动驾驶

简介: 本文讲的是如何用超大规模真实驾驶视频数据集做端到端自动驾驶,自动驾驶是人工智能落地的重要应用之一,许多业界公司和学校实验室都在以自己的方法研究自动驾驶系统。本次雷锋网 AI 科技评论请到了许华哲博士介绍他们团队研究的端到端自动驾驶系统。
本文讲的是如何用超大规模真实驾驶视频数据集做端到端自动驾驶,

自动驾驶是人工智能落地的重要应用之一,许多业界公司和学校实验室都在以自己的方法研究自动驾驶系统。本次雷锋网 AI 科技评论请到了许华哲博士介绍他们团队研究的端到端自动驾驶系统。

许华哲是UC Berkeley 博士,师从 Prof. Trevor Darrell。对计算机视觉、自动驾驶、强化学习感兴趣。本科毕业于清华大学电子工程系。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

这次分享主要基于徐华哲和他的同学们发表的CVPR2017的收录文章「End-to-end Learning of Driving Models from Large-scale Video Datasets」,这是对端到端自动驾驶的一个尝试。除了文章本身,许华哲也会介绍学术角度上自动驾驶领域中有意思的任务和问题。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

分享的内容包括:

  • 自动驾驶的前世今生

  • 许华哲他们发表的超大规模数据集

  • 为了解决自动驾驶问题,如何用数学公式定义它

  • 论文中构建的FCN-LSTM模型

  • 论文中用到的新技巧“Learning with privileged information”,以及实验结果

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

自动驾驶主要分为这样几类:基于规则的自动驾驶系统,端到端的自动驾驶系统(输出直接是对车的操作),综合性方法(Intermediate,决策系统的输入是前处理系统的输出)。最后还有一个研究方向是对未来会发生的事情做预测以便规避风险。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

图中是基于规则的自动驾驶系统的经典工作,检测出路上的车和车道,然后进行决策。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

基于规则的系统,好处是在工业界得到了广泛使用,比如GoogleX的自动驾驶就是以基于规则的系统为主;以及系统的可解释性非常强。不好之处是难以应对不确定的情况,以及在复杂的情况下无法对所有可能的操作进行建模。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

完全端到端的方法中早期的典型工作是ALVINN,浅层神经网络的结果已经表明端到端学习有形成自动驾驶系统的潜力。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

Yann LeCun提出的DAVE已经可以回避路上的障碍物。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

在2017年10月最新的文章中,已经可以通过高阶的运动意图对低阶的实际驾驶操作进行条件(conditioned)控制,在许华哲看来已经是水平最领先的文章。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

不过话说回来,这个领域影响最大的还是NVIDIA的这篇文章,第一次借助三个摄像头用端到端的方法开起了真车。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

端到端驾驶的好处是,模型可以直接对图像输入作出回应,不需要人类干预;坏处是,系统对于不同的车辆系统需要逐一校准,以及解释性差

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

这项综合自动驾驶系统的典型方法中,用深度学习方法学到一系列行驶中的路况信息,然后把这些路况信息输入决策模型;决策模型中则可以再设定一些规则。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

这种方法的解释性介于端到端和基于规则的系统之间,但还是需要人工定义许多规则,仍然有“无法完全定义系统规则”的问题

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

未来视频预测的目的是帮助训练自动驾驶系统,效果还有很多提升的空间,但是许华哲认为与现阶段各大自动驾驶平台的自动驾驶模拟器相比,这方面研究的意义还有待讨论。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

接下来,值得聊的话题是数据集。大家都知道ImageNet对深度学习领域有着深远的影响,因为它提供了检验算法的绝佳条件。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

从近年的错误率显著下降来看,大家都认为图像分类问题是一个近乎于解决了的问题,ImageNet就在其中起到了非常大的贡献。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

那么,许华哲认为自动驾驶领域也需要一个起到同样作用的数据集,它应当由众包得到,应当是真实的、足够难的、有一个明确的任务目标

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

对于任务目标,他们把它公式化为了一个预测车辆未来位置的问题。

这样做的好处是,泛化性强,可以运用于对任意的车辆,也可以用未经过校准的数据;他们的模型是可以端到端训练的;同时模型可以一次预测多个方向

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

模型中要预测的egomotion用方向角α和位移s描述,这样也就不需要直接对车辆内的方向盘和踏板进行控制,简化了系统的前期研究。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

模型的数学定义如上图,评估给定的状态s和动作a的得分,其中s包括视觉信息和车辆的当前状态;a可以是分离的几个状态,也可以是连续的数值输出;最精确的是输出6个自由度上的运动

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

下一个问题就是如何评估这个模型。借助数据集的话,借助语言模型里perplexity预测的思路,把过去的状态作为序列,预测序列中的下一个元素

在他们的数据集之前,大家比较熟悉几个数据集包括KITTI、Cityscape、英特尔的GTA。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

KITTI的特点是数据量比较小,但图像质量高,数据种类丰富,横向很宽

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

Torcs是在游戏里采的数据

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

Cityscape是一个高质量的图像语意分割数据集,但是并没有放出对应的视频

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

英特尔的GTA数据集也是以语意分割为主,虽然基于虚拟的游戏环境但是很逼真,可以看作最接近真实世界的游戏

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

几个数据集做对比的话,场景的丰富程度上KITTI力压所有数据集,其余更多方面则都有缺失

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

时长方面,Oxford的最长,围绕城市采了200小时数据。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

这几个数据集都不算令人满意。为了大幅度提升时长和丰富程度,许华哲他们想到了众包的方法,与Uber合作,采集、使用了司机视角的视频。这个数据集的特点是基于真实世界的、第一人称视角,从右侧样例里可以看到内容也非常丰富。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

最重要的是,这个数据集也是足够长的,比现存的任何数据集都要多出2个数量级。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

这样对比下来,他们的数据集BDD-V就全面领先于其它的数据集

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

BDD-V数据集更多的指标如上图,30fps/720p,包括了惯性传感器IMU、陀螺仪Gyroscope、GPS和指南针的数据,而且是全面开放的。许华哲还偷偷透露,除了这个视频数据集,他们还会同步发布其它用于驾驶任务的高质量、大规模数据集。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

这里正式介绍文章中的内容,一张图像输入到模型中后,模型要判断车如何行驶,最后输出中绿色部分表示可能的动作的概率分布(离散或者连续)。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

论文中使用的模型结构是Dilated Fully Convolutional Networks+LSTM+Segmentation Loss。FCN用来保留空间信息,LSTM对之前时间中的信息加以利用,Segmentation语义分割则是为了把车辆从背景中分离出来(这部分属于Privileged Learning,等下还会讲到)。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

上图显示的是预测离散的车辆动作(也就是前后左右)的结果,G代表ground truth,P代表预测的结果。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

对于红绿灯也作出了合理的预测结果(黄灯时前进和停止一半一半,红灯时预测结果都是停止)

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

对于预测连续的车辆动作,沿着路的时候能判断出“不能右转”,到了路口就有了更多方向的选择

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

在连续预测中,有个重要问题是能否预测多个模态。可以看到,到了路口时预测结果明显分为了两个部分。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

这里,为了更好地展示模型学到的特征,徐华哲从模型中抽出了conv-4层学到的特征。对于右侧的街道图,左侧是模型注意力的heat-map;两图并不是完全对齐的。可以看到,行车线、红绿灯、骑车的人和汽车(表现为两个车轮)都获得了很高的注意力。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

Privileged Learning是指,模型一边预测未来的运动,一边训练一个语义分割网络,然后用语义分割网络更好地帮助模型做运动预测。P1、P2是Baseline,P3是带有Privileged Learning之后的结果,对图中这样“半辆车”的情况有更好的识别能力。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

总结整篇论文

  • 首先介绍了一个不依赖执行机构的自动驾驶通用模型

  • 收集、公开了最大、最丰富的基于真实世界的数据集

  • 提出了新的网络架构,能够输出多模态行为

  • 确认了Privileged Learning方法的有效性,进一步提升了预测效果

  • 第一个长度可以和人类一生开车时间相比的训练数据集

数据、模型和代码可以在 https://github.com/gy20073/BDD_Driving_Model 看到。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

未来他们也还会继续采集、扩充数据集。目前总长度(最下方)大概是一个人一生开车时间的一半,未来希望扩充到10万个小时。

如何用超大规模真实驾驶视频数据集做端到端自动驾驶 | 分享总结

同时他们也在改进模型,并在测试场地上把真车开起来。 秋天时他们也会再发一两篇文章。

徐华哲最后还解答了几个在线观众提出的问题。






本文作者:杨晓凡
本文转自雷锋网禁止二次转载,原文链接

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

秉承“关注智能与未来”的宗旨,持续对全球前沿技术趋势与产品动态进行深入调研与解读。

官网链接