在过去的几年里,机器学习一直是研究和工业中最热门的话题之一。与几十年前机器学习的出现相比,计算性能和算法的最新进展引起了人们的重新关注。
最近在人工智能方面取得的令人印象深刻的成果得益于机器学习,尤其是深度学习解决方案。应用包括自然语言处理(NLP),个人协助,AlphaGo战胜人类,以及在学习玩Atari游戏时实现人类水平的行为。
考虑到机器学习和深度学习在解决极其复杂的问题时能够取得如此令人印象深刻的结果,很明显,研究人员和工程师也考虑将它们应用于自动驾驶汽车的高度自动驾驶(HAD)场景。NVIDIA的Davenet,Comma.Ai,Google Car和Tesla在这一领域取得了第一个有希望的结果。机器学习和深度学习方法已经产生了最初的原型,但这些功能的工业化带来了额外的挑战,例如,基本的功能安全考虑。
本文旨在促进关于机器学习在汽车行业中的作用的持续讨论,并强调该主题在自动驾驶汽车背景下的重要性。特别是,它旨在增加对机器学习技术的功能和局限性的理解。
首先,我们在EB robinos参考架构的背景下讨论了基于机器学习的高度自动驾驶的设计空间和架构替代方案。然后详细介绍了 Elektrobit 目前正在研发的两个选定用例。
第二部分提供了机器学习和深度神经网络(DNN)的理论背景,为根据给定任务选择机器学习技术的标准提供了基础。最后,第三部分讨论了影响功能安全考虑因素的验证和确认挑战。
机器学习和高度自动化驾驶
开发导致自动驾驶汽车的高度自动化驾驶功能是一项复杂且不平凡的任务。工程师通常使用分而治之的原则来应对此类挑战。这是有充分理由的:具有明确定义接口的分解系统可以比单个黑匣子更彻底地进行测试和验证。
我们的高度自动驾驶方法是EB robinos,如图1所示。EB robinos 是一种具有开放接口和软件模块的功能软件架构,允许开发人员管理自动驾驶的复杂性。EB robinos 参考架构按照“感知、计划、行动”分解范式集成了组件。此外,它在其软件模块中利用机器学习技术,以应对高度非结构化的现实世界驾驶环境。以下小节包含 EB robinos 中集成的技术的精选示例。
图1.开放式 EB robinos 参考架构。
相比之下,端到端的深度学习方法也存在,它涵盖了从感觉到行动的所有内容(Bojarski et al. 2016)。然而,关于极端情况和罕见事件的处理和训练,以及必要的指数训练数据量,分解方法(即语义抽象)被认为是更合理的(Shalev-Shwartz et al. 2016)。
然而,即使采用分解方法,也需要决定哪些部分最好与其他部分单独处理或与其他部分组合。还需要确定机器学习方法是否有望胜过传统工程算法来完成特定块完成的任务。同样重要的是,此决定可能会受到功能安全考虑的影响。功能安全是自动驾驶的关键要素,如本系列后面所述。传统的软件组件是根据具体需求编写的,并进行了相应的测试。
机器学习系统的测试和验证的主要问题是它们的黑盒性质和学习方法的随机行为。基本上不可能预测系统如何学习其结构。
上面给出的标准和理论背景可以为明智的决策提供指导。Elektrobit目前正在研究和开发机器学习方法被认为很有前途的用例。接下来将介绍两个这样的用例。第一个涉及为机器学习算法生成人工训练样本及其在交通标志识别中的部署。第二个用例描述了我们的自学汽车方法。这两个例子都利用了当前尖端的深度学习技术。
用例 1:人工样本生成和交通标志识别
本项目提出了一种限速和限行结束交通标志(TS)识别系统,以增强入口导航系统中使用的OpenStreetMap(OSM)数据。目的是在可以安装在汽车挡风玻璃上的标准智能手机上运行该算法。该系统检测交通标志及其GPS位置,并通过手机的移动数据连接将收集的数据上传到后端服务器。该方法主要分为两个阶段:检测和识别。检测是通过提升分类器实现的。识别是通过概率贝叶斯推理框架执行的,该框架融合了一组视觉概率过滤器提供的信息。本文的下一期将介绍所用算法背后的理论背景。图 2 描绘了交通标志识别 (TSR) 算法的框图。
图2:基于智能手机的TSR系统框图
获得的彩色图像以24位RGB格式传递给检测器。检测过程通过评估通过检测窗口计算的级联分类器的响应来执行。
此检测窗口以不同的比例在图像中移动。可能的交通标志感兴趣区域 (RoI) 被收集为一组对象假设。从特征提取的角度来看,分类级联使用扩展的局部二进制模式 (eLPB) 进行训练。假设向量中的每个元素都通过支持向量机 (SVM) 学习算法分类为交通标志。
交通标志识别方法依赖于手动标记的交通标志,这些交通标志用于训练检测和识别分类器。由于不同国家/地区使用的交通标志模板多种多样,标签过程繁琐且容易出错。
交通标志识别方法需要每个国家/地区的特定训练数据才能正常运行。创建足够的手动标记交通标志非常耗时,因为必须考虑位置、照明和天气条件。
因此,Elektrobit 创建了一种算法,可以从单个人工模板图像自动生成训练数据,以克服手动注释大量训练样本的挑战。图 4 显示了该算法的结构。
图4.基于机器学习的识别系统的人工样本生成算法框图。
此方法提供了一种生成用于机器学习算法训练阶段的人工数据的方法。该方法使用每个国家/地区的真实和通用交通标志图像模板的简化数据集来输出图像集合。
这些图像的特征是由一系列图像模板变形算法人为定义的。使用核主成分分析(KPCA)对这样获得的人工图像进行对比一组简化的真实世界图像进行评估。人工数据集适用于机器学习系统的训练,在这种特殊情况下用于交通标志识别,当生成的图像的特征与真实图像的特征相对应时。
Elektrobit 用基于深度区域的检测和识别卷积神经网络取代了 Boost SVM 分类器,以提高原始交通标志识别系统的精度。该网络使用 Caffe (Jia et al. 2014) 部署,Caffe 是由 Berkley 开发并由 NVIDIA 支持的深度神经网络库。Caffe 是一个具有 Python 和 Matlab 接口的纯 C++/CUDA 库。除了其核心深度学习功能外,Caffe还提供了可以直接用于机器学习应用程序的参考深度学习模型。图 5 显示了用于交通标志检测和识别的 Caffe 网络结构。不同的彩色块表示卷积(红色)、池化(黄色)、激活(绿色)和完全连接的网络层(紫色)。
图5.Caffe中基于深度区域的检测和识别卷积神经网络。
用例 2:学习如何驾驶
深度学习的革命最近增加了对另一种范式的关注,即强化学习(RL)。在RL中,代理自己学习如何通过奖励系统执行某些任务。该方法属于半监督学习的范畴,因为奖励系统的设计需要特定领域的知识。
即使输入数据没有必需的标签,与监督学习相比也是如此。最近对RL的兴趣主要是由于Deep Mind团队的开创性工作。该团队设法将RL与能够学习动作值函数的深度神经网络相结合(Mnih等人,2016)。他们的系统能够学会以人类水平的能力玩几款雅达利游戏。
我们构建了深度强化学习系统,如图6所示,以便安全地进行自动驾驶学习实验。该系统使用TORCS开源赛车模拟器(Wymann等人,2014)。TORCS在科学界被广泛用作高度便携的多平台赛车模拟器。它运行在Linux(所有架构,32位和64位,小端和大端),FreeBSD,OpenSolaris,MacOSX和Windows(32位和64位)。它具有许多不同的汽车,赛道和对手。我们可以从游戏引擎收集用于对象检测的图像以及关键驾驶指示器。这些指标包括汽车的速度,自我汽车与道路中心线的相对位置,以及与前车的距离。
图6.深度强化学习架构,用于学习如何在模拟器中驾驶。
该算法的目标是通过与虚拟环境交互来自学驾驶命令。为此目的使用了深度强化学习范式,其中深度卷积神经网络(DNN)通过强化提供正奖励信号的动作a来训练。状态由模拟器窗口中所示的当前游戏图像表示。有四种可能的动作:加速、减速、左转和右转。r(s^‘,a)s
DNN 计算一个所谓的函数,该函数预测针对特定状态要执行的最佳操作 a。换句话说,DNN 计算每个状态-操作对的值。将执行具有最高值的操作,这会将模拟器环境移动到下一个状态。在此状态下,通过奖励信号评估执行的操作。Q-sQ-Q-sr(s’,a)
例如,如果汽车能够在不发生碰撞的情况下加速,则使这成为可能的相关动作将在 DNN 中得到加强;否则,将不鼓励。强化是通过使用状态奖励信号重新训练 DNN 在框架中执行的。图 7 显示了深度强化学习算法的 Caffe 实现。网络层的颜色编码与图 6 相同。
图7.一种基于Caffe的深度卷积神经网络结构,用于深度强化学习。
第二部分定义了机器学习技术的理论背景,以及汽车开发人员可用的神经网络类型。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !