作者:Sorin Mihai
在这三部分系列的第一部分中,作者调查了机器学习技术在高度自动化驾驶场景中的驱动因素和潜在应用。第二部分定义了机器学习技术的理论背景,以及汽车开发人员可用的神经网络类型。第三部分在功能安全要求的背景下评估这些选项。
在过去的几年里,机器学习一直是研究和工业界最热门的话题之一。与几十年前机器学习的出现相比,计算性能和算法的最新进展引起了新的关注。
机器学习,特别是深度学习解决方案促进了人工智能最近取得的令人瞩目的成果。应用包括自然语言处理 (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:人工样本生成和交通标志识别
该项目在增强入口导航系统中使用的 OpenStreetMap (OSM) 数据的背景下,提出了一种限速和限速结束交通标志 (TS) 识别系统。目的是在可以安装在汽车挡风玻璃上的标准智能手机上运行该算法。系统检测交通标志及其 GPS 位置,并通过手机的移动数据连接将收集的数据上传到后端服务器。该方法主要分为两个阶段:检测和识别。检测是通过增强分类器实现的。识别是通过概率贝叶斯推理框架执行的,该框架融合了由一组视觉概率过滤器传递的信息。本文的下一部分包含对所用算法背后的理论背景的描述。
图 2:基于智能手机的 TSR 系统框图
获得的彩色图像以 24 位 RGB 格式传递给检测器。通过评估通过检测窗口计算的级联分类器的响应来执行检测过程。
该检测窗口以不同的比例在图像上移动。可能的交通标志感兴趣区域 (RoI) 被收集为一组对象假设。从特征提取的角度来看,分类级联使用扩展的局部二进制模式(eLPB) 进行训练。假设向量中的每个元素通过支持向量机(SVM)学习算法分类为交通标志。
交通标志识别方法依赖于人工标记的交通标志,用于训练检测和识别分类器。由于不同国家使用的交通标志模板种类繁多,标记过程繁琐且容易出错。
要使交通标志识别方法表现良好,需要每个国家/地区的特定训练数据。由于必须考虑位置、照明和天气条件,因此创建足够多的手动标记交通标志非常耗时。
因此,Elektrobit 创建了一种算法,可以从单个人工模板图像自动生成训练数据,以克服手动注释大量训练样本的挑战。图 4 显示了算法的结构。
图 4.基于机器学习的识别系统的人工样本生成算法框图。
这种方法提供了一种生成用于机器学习算法训练阶段的人工数据的方法。该方法使用每个国家的真实和通用交通标志图像模板的缩减数据集来输出图像集合。
这些图像的特征是由一系列图像模板变形算法人为定义的。使用核主成分分析 (KPCA) 对减少的一组真实世界图像对由此获得的人工图像进行评估。当生成图像的特征与真实图像的特征相对应时,人工数据集适用于机器学习系统的训练,在这种特殊情况下用于交通标志识别。
Elektrobit 将 Boosting SVM 分类器替换为基于深度区域的检测和识别卷积神经网络,以提高原始交通标志识别系统的精度。该网络使用 C++affe (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 et al. 2016)。他们的系统能够学会以人类水平的能力玩多个 Atari 游戏。
我们构建了深度强化学习系统,如图 6 所示,以便安全地试验自动驾驶学习。该系统使用 TORCS 开源竞赛模拟器(Wymann et al. 2014)。TORCS 作为高度便携的多平台赛车模拟器在科学界被广泛使用。它在 Linux(所有架构,32 位和 64 位,小端和大端)、FreeBSD、OpenSolaris、MacOSX 和 Windows(32 位和 64 位)上运行。它有许多不同的汽车、赛道和对手来比赛。我们可以收集用于物体检测的图像以及来自游戏引擎的关键驾驶指标。这些指标包括汽车的速度、自我汽车与道路中心线的相对位置以及与前面汽车的距离。
图 6.用于学习如何在模拟器中驾驶的深度强化学习架构。
该算法的目标是通过与虚拟环境交互来自学驾驶命令。为此目的使用了深度强化学习范式,其中深度卷积神经网络 (DNN)通过提供正奖励信号的强化动作 a 进行训练r(s^‘,a)。状态s由模拟器窗口中显示的当前游戏图像表示。有四种可能的动作:加速、减速、左转和右转。
DNN 计算一个所谓的Q-函数,该函数预测要针对特定状态执行的最优动作 a s。换句话说,DNNQ-为每个状态-动作对计算一个值。将执行具有最高Q-值的操作,这会将模拟器环境移动到下一个状态,s’。在这种状态下,通过奖励信号来评估执行的动作r(s’,a)。
例如,如果汽车能够在没有碰撞的情况下加速,那么使这成为可能的相关动作将在 DNN 中得到加强;否则,它会气馁。通过使用状态奖励信号重新训练 DNN,在框架中执行强化。图 7 显示了深度强化学习算法的 Caffe 实现。网络层具有与图 6 相同的颜色编码。
图 7.用于深度强化学习的基于 Caffe 的深度卷积神经网络结构。
第二部分定义了机器学习技术的理论背景,以及汽车开发人员可用的神经网络类型。