深度学习在汽车软件中的应用
汽车软件中的深度学习软件
摘要
在汽车软件中,基于深度学习的系统因其独特的特性正发挥着日益广泛的作用。因此,在汽车软件工程社区内部,人们越来越意识到需要在技术、方法和文化层面上将深度学习开发方法与“传统”方法相融合。特别是,利用专用训练数据进行深度神经网络训练这一创新且数据密集的阶段,对于依赖该技术范式的车辆功能的软件开发至关重要,因而需要特别关注。
介绍了一种适用于深度学习需求的开发生命周期,并提出了基于汽车SPICE的改进举措,以有效推动深度神经网络在汽车软件应用中的采用。
关键词 D.2.18.a 生命周期 < D.2.18 软件工程过程 < D.2 软件工程 < D 软件/软件工程,I.2.10 视觉与场景理解 < I.2 人工智能 < I 计算方法,D.2.0.d 标准 < D.2.0 通用 < D.2 软件工程 < D 软件/软件工程,D.2 软件工程 < D 软件/软件工程
本文已被《IEEE软件》接收发表,但尚未完成最终编辑。部分内容在最终发布前可能会发生变化。
数字对象标识符 10.1109/MS.2017.265101102 0740‐7459/$26.00 2017 IEEE
深度学习在汽车软件中的应用
随着当今汽车的计算机化程度越来越高,人工智能(AI)正逐步进入一些主要的车载电子控制单元(ECU)也就不足为奇了。一个重要因素是,最新的车型中日益普及的先进传感器技术,正在加速所谓的汽车高级驾驶辅助系统(ADAS)[1]的发展。
ADAS的发展涵盖了驾驶自动化的六个渐进级别(根据汽车工程师学会的定义,从“无自动化”到“完全自动化”),正推动着诸如行人检测、自适应前照灯以及中长期目标下的自动驾驶等广受关注的应用逐步普及。正因如此,需要像机器学习这样高度复杂的技术,使计算机能够在汽车中辅助或取代人类驾驶员。
深度学习(DL)现在已被许多汽车公司视为一种成熟且可行的技术,不仅可用于提升高级驾驶辅助系统性能,还可推动其他功能领域的发展,例如发动机管理[2]和车辆网络安全保护[3]。因此,深度学习技术将不仅局限于高级驾驶辅助系统功能。
深度学习是机器学习的一个分支,基于一组人工神经网络(ANN)算法,通过使用由多层处理层构成的深层图表示来对输入数据中的高层抽象进行建模。例如,在基于计算机视觉的高级驾驶辅助系统中,深度学习算法可提高对多个物体的检测与识别能力,支持物体分类,并实现动作的识别与预测。
与此同时,深度学习技术在车载汽车上的引入正开始对汽车软件工程产生重大影响,需要在其当前的先进水平中整合并协调这些技术的开发。事实上,重要的是要提醒,十多年来,汽车原始设备制造商(OEM)一直要求汽车软件以良好设计、规范且受控的方式进行开发。
尽管深度学习在学术和应用层面都是一门结构完善且已充分发展的学科,但从根本上说,必须理解深度学习的现有技术水平是否在技术和方法论层面满足汽车领域的需求。初步的回答是:“肯定不完全符合。”
事实上,尽管机器学习正在成功推动新型硬件组件和新型硬件架构的发展,汽车软件工程正处于这一创新的前沿。这一新挑战在基于深度学习的系统所需的数据密集型训练过程中达到了顶峰。通过训练一个人工智能系统来解决问题,而不是利用领域知识(即特征工程)直接寻找解决方案,这种理念对于汽车软件应用而言具有革命性意义。
本文已被接受在IEEE软件上发表,但尚未完成最终编辑。部分内容可能在最终出版前发生变化。
数字对象标识符 10.1109/MS.2017.265101102 0740‐7459/$26.00 2017 IEEE
来自现场
根据权威市场研究[4],搭载人工智能的电子控制单元(ECU)的渗透率预计将稳步且显著增长。预期的产量对于强化分析特殊性以及将深度学习集成到汽车电子系统的开发生命周期中至关重要。
谷歌正在自动驾驶汽车的开发方面进行引人注目的显著投资。其原型自动驾驶汽车搭载了基于深度学习的技术,已能够在各种复杂场景中检测出行人。谷歌的深度学习系统取得了卓越的性能,使机器视觉的错误率低于人类水平(人类的基准错误率为5%)。这一成就还得益于采用多个图形处理单元(GPU)的新硬件架构,正推动着传统图像处理技术特征向基于深度学习的解决方案迁移。
这仅仅是个开始,即便如此,市面上流通的车辆中已经具备了令人瞩目的人工智能元素。在高级驾驶辅助系统领域,据称特斯拉在驾驶控制单元[5]中搭载了基于强大英伟达DPX2处理器运行的神经网络功能,用于实现视觉、声呐和雷达处理。
其他一些供应商也已是活跃的参与者。AdasWorks 的智能环视系统(ISV)就是一个基于神经网络的高级驾驶辅助系统实现示例,该系统利用来自多个摄像头的视觉信息来处理车辆周围环境[6]。此外,电装研发实验室以及其他重要公司的研发实验室也正在积极研究这一方向。
在信息娱乐领域,据报道2015年款宝马7系是首款搭载基于深度学习技术的创新语音识别解决方案的汽车,该方案即使在没有无线车载连接的情况下也能正常工作[5]。
目前正处于开发阶段的深度学习在汽车领域的其他应用,涵盖发动机故障诊断、排放管理到车辆网络入侵检测等。
从硬件角度来看,将深度学习嵌入高性能和与安全相关的汽车应用所需的电子支持水平极为严苛,企业正积极开发新一代芯片:例如Mobileye即将推出的尖端专用芯片EyeQ5。在商用电子元器件方面,英特尔正凭借全新的至强Phi芯片进军这一市场,而该市场迄今一直由英伟达 Tegra芯片主导。
深度学习
人工神经网络最基本的特性是能够通过由示例输入[7]触发的“学习”过程来提升其解决问题的能力。这一特性在那些通常缺乏关于问题的详细、完整或可预测信息的场景中非常有用,例如汽车驾驶场景。另一个重要特性是其并行
本文已被接受在IEEE软件上发表,但尚未完成全部编辑。部分内容可能在最终发布前更改。
数字对象标识符 10.1109/MS.2017.265101102 0740‐7459/$26.00 2017 IEEE
第4页(共13页)
这种结构得益于使用强大的硬件,从而获得及时且可用的计算结果。
深度学习,即深度神经网络(DNN),是一种特殊类型的人工神经网络,能够在输入层和输出层之间通过多个隐藏层的单元来建模复杂的非线性关系(图1 – 右)。当输入为大规模模拟数据时,深度学习在发现模式方面表现出色——这意味着输入不是表格格式中的少量数值,而是像素数据图像或音频数据。在2006年之前的进展中,DNN的表现不如依赖特征工程的浅层神经网络,特征工程是指将领域知识嵌入解决方案设计中。
深度神经网络的结构是灵活的,可以通过选择隐藏层的数量、每层的单元数、每个单元的连接数等属性进行定制。这些被称为超参数的属性,定义了基于深度学习系统的结构和行为。
总之,深度学习的基本特征是:
- 通过学习过程实现输入‐输出映射
- 非线性 ‐ 深度神经网络由相互连接的非线性计算单元(即神经元或节点)组成
- 自适应能力 ‐ 深度神经网络具有对环境变化的内置自适应能力
- 容错性 ‐ 由于深度神经网络的分布式特性,隐藏层中的局部故障会导致性能下降而非系统故障。
它们的处理能力存储在通过适应一组训练模式而获得的单元间连接权重中。
卷积神经网络(CNN),也称为卷积网络,是一种深度神经网络(图1 – 底部),旨在处理具有一定程度空间结构的数组形式的数据。
它们旨在模拟视觉皮层的行为,并且在视觉识别任务中表现出色,因为卷积操作(以矩阵乘积的形式)本身能够捕捉图像的特征。卷积神经网络具有称为卷积层和采样层的特殊层,这些层可以对图像属性进行编码。本质上,CNN以前馈模式 [7] 沿网络将三维输入(例如,一幅具有 W行、W列和3个颜色通道的图像)进行变换。
卷积神经网络因其输入数据分割和高度参数化(高达数十万)等特点,在汽车领域的视觉应用中具有特殊意义,例如目标检测、车辆检测、道路标线检测等。
循环神经网络(RNN)是另一种相关的深度神经网络,其单元之间的连接形成有向环[8]。它们已成功应用于语音识别和自然语言处理。
本文已被IEEE软件录用,但尚未完成最终编辑。部分内容可能在最终发布前发生变化。
数字对象标识符 10.1109/MS.2017.265101102 0740‐7459/$26.00 2017 IEEE
第5页,共13页
从理论转向软件实践以加深理解,以下源代码片段展示了一个具有指导意义的C语言实现,用以说明一些主要的深度学习概念。特别是,在图2中给出了神经元和连接数据结构以及神经元 “创建”函数的简单示例:
实际的汽车应用中的深度神经网络通常包含多达十层和数千个节点,其开发得益于成熟的软件框架(如Theano、Caffe、Torch、Neon、TensorFlow、Deeplearning4J、CNTK以及许多其他专有的框架)的支持。
训练深度神经网络
为简化起见,以计算机视觉为参考,训练深度多层神经网络需要大量图像帧(通常从驾驶场景的视频片段中提取),这些图像帧包含形状、边缘和颜色,以便能够将输入与统计上预期的正确结果进行匹配。该训练过程是一个关键要素,因为它能够充分发掘深度神经网络在检测物体方面的能力,同时考虑图像上下文。
深度学习算法的训练通常需要数天到数周,迫使项目在准确性与部署时间之间做出权衡。主要采用三种训练策略 [9]:
- 监督训练 ‐ 它依赖于基于环境知识样本的 training,以输入与其对应目标输出的配对形式存在的数据通过适当的标签
- 无监督训练 ‐ 这种方法利用输入数据中存在的统计规律
- 强化训练 ‐ 它涉及在环境中采取行动以最大化长期奖励,类似于一种试错方法。
在汽车应用中,监督训练有时会与强化训练有效结合。
通常,合适的训练方法的选择在很大程度上取决于特定类型的深度神经网络以及所考虑问题的特征。根据作者的现场经验,监督训练在基于DNN的汽车开发中被广泛使用。
监督学习在汽车领域的应用需要大规模标注训练数据集,其规模(即图像数量)并未公开,但数量级范围从几十万到几百万。训练数据集通常包含正负区域的注释或标签。此外可应用额外的预处理以提高训练的准确性和鲁棒性。一个对应行人的边界框
本文已被《IEEE软件》接收发表,但尚未完成最终编辑。部分内容可能在最终发布前发生变化。
数字对象标识符 10.1109/MS.2017.265101102 0740‐7459/$26.00 2017 IEEE
第6页,共13页
精确定义人体形状是训练数据预处理的一个典型示例(图3)。
预处理在专门知识和需投入于此耗时任务的人力资源方面,也具有重大的组织影响。
虽然训练数据集用于训练学习算法,但验证数据集用于避免过拟合,从而通过比较不同性能来选择最合适的算法,并决定采用哪一个。当模型过于复杂并开始“记忆”训练数据而非“学习”从趋势中泛化时,就会发生过拟合。
测试数据集用于实现所需的性能特性,例如准确性。这些数据集代表了供应商和原始设备制造商的宝贵专有资产。
在训练阶段,相关学习算法通过“从”应用的训练数据集“学习”来填充一种称为分类器的信息结构。因此,训练集中可用的环境知识被转移到分类器,并隐式地转移到深度神经网络本身。
在监督训练中,有多种学习算法可供选择,其中最流行的是反向传播[10]。根据反向传播方法,学习过程分为两个阶段。在第一阶段,将一个训练输入模式输入到网络的输入层。然后网络将该输入模式逐层传播,直到输出层生成输出模式。如果该输出模式与期望输出存在差异,则计算出一个误差,并将该误差从输出层向输入层反向传播。在网络误差反向传播的过程中,单元间连接权重会被修改。
因此,深度学习与成熟的汽车软件工程实践相比,引入了重大创新。训练过程本身实际上就是一种编程活动。
本文已被接受在IEEE软件上发表,但尚未完成编辑。部分内容可能在最终出版前发生变化。
数字对象标识符 10.1109/MS.2017.265101102 0740‐7459/$26.00 2017 IEEE
深度学习的生命周期:W模型
深度神经网络开发的软件方面是一项高度迭代的工作,由一系列步骤组成:
1. 深度神经网络需求识别
2. 学习算法开发
3. 深度神经网络训练
4. 深度神经网络训练验证
5. 深度神经网络验证
与传统方法相比,深度学习的开发过程需要依赖启发式方法驱动的经验性设计选择的支持。开发通常从已知的学习算法开始,因为这些算法在类似问题或领域中已被证明有效,而学习过程的结果难以理解和掌控。
预期的深度神经网络要求还包括性能需求,这些需求通过深度神经网络功能行为的统计基准测试(即错误率)来表述,并在深度神经网络验证阶段进行精确的目标设定。
基于卷积方法的适当算法的开发与调整,实现了深度神经网络在汽车应用中的学习能力,正在拓宽各个研发实验室的技术范畴。事实上,即使在工业层面,也有大量科学家积极参与,与工程师合作,见证这一前景广阔领域的具体发展。
在训练过程中,学习算法会被评估,并反复实验性地调整单元间连接的权重;这一循环将持续进行,直到预测精度达到目标为止。
汽车软件工程在欢迎创新和卓越功能性能的同时,对开发周期的稳健性和可预测性要求严格。因此,有必要将深度学习置于更受控的V模型框架下,以应对一系列挑战,例如训练、验证和测试数据集的需求标准、训练数据预处理的标准、大量参数的管理等。
深度学习生命周期的更结构化概念的引入,对于实现一种受控的开发方法至关重要,而这种受控开发无法仅通过验证活动获得的功能基准测试来解决。必须同时追求软件工程的两个基本方向:功能层面的高性能以及高质量开发过程。
然而,深度学习本质上引入了其特有的特征(与软件开发的V模型并不完全契合)。在这种背景下,数据所起的核心作用(例如用于深度神经网络训练和训练验证)使得引入W模型变得至关重要;为了支持这一点,我们引入了“通过示例编程”这一术语,以突出数据在基于深度学习技术的系统开发中的重要性。
深度学习W模型是一种框架生命周期,它在标准V模型视角下概念性地集成了用于数据开发的V模型(图4)。
该生命周期模型认识到,深度学习由软件开发和数据开发共同驱动。设计和创建训练/验证/测试数据集及其应用是关键的开发阶段,因为深度神经网络的功能行为是其架构结构以及通过训练过程实现自动适应的综合结果。
深度学习从定义上就摆脱了特征工程,这一特点使得W‐模型成为表示这种复杂范式的一种恰当且有用的表达方式。
汽车软件标准与深度学习
车载汽车电子控制单元的软件开发过程需遵循原始设备制造商的专有规范以及多项国际标准。其中,对深度学习而言最相关且最具影响力的标准是汽车SPICE [12]和ISO 26262[13]。毋庸置疑,这些标准目前仍远未针对深度学习提出专门的条款。
汽车SPICE标准——SPICE代表软件过程改进和能力测定——提供了一个过程框架,从高度抽象的层面对软件开发活动进行规范,并允许根据预定义的大量过程要求对其进行能力评估。ISO 26262于2011年底发布,标题为“道路车辆——功能安全”,针对与安全相关的开发,其范围理所当然地包括系统、硬件和软件工程。需要强调的是,ISO 26262标准已经涉及配置和标定数据,尽管这一方面相较于深度神经网络数据集的开发而言,在复杂性和难度上要简单一个数量级。
这两项标准在软件方面都概念性地依赖于传统开发生命周期:V模型。对于深度学习而言,处于高级开发阶段的ISO PAS“预期功能安全(SotIF)”[14]也具有非常重要的意义。该ISO文件指出,某些高级驾驶辅助系统应用即使系统本身无故障,也可能出现安全隐患——例如雷达对车辆前方障碍物的误报检测——因为开发出能够应对所有可能场景的系统极为困难。
由于其广泛采用以及对汽车软件开发过程的全面覆盖,汽车SPICE标准可被视为从汽车软件工程的角度系统分析深度学习特殊性的适当参考,并推动深度学习实践的协调化方法论成熟。
下图通过将汽车SPICE 3.0 的V模型的软件部分放置在新提出的W模型之上,暗示了需要沿着汽车SPICE的流程要求(图5)。相同的方法可能适用于ISO 26262。
鉴于汽车市场对电子控制单元开发在严谨性和控制性方面的严格要求,深度学习领域亟需实现显著增长并进入稳定阶段。仅从表面来看,一些重要且尚未解决的方法论问题便已显现,例如深度学习开发各阶段之间的可追溯性基础设施。
因此,这一改进路径对于实现汽车软件领域诸如完全自动驾驶等雄心勃勃的未来成就的广泛应用至关重要。
未来之路
随着深度学习正在为汽车软件领域带来根本性变革,所提出的深度学习W模型为将深度学习与传统汽车软件工程概念进行有益且全面的整合提供了一个有前景且易于理解的基础。
意大利汽车软件过程改进网络[15]已启动一个开放工作组,旨在利用汽车SPICE 3.0、ISO 26262下一版本以及预期功能安全等标准,促进汽车软件工程中深度学习实践的协调统一。此外,该倡议还将探讨所引入的W模型的特征描述。
更多推荐



所有评论(0)