梅赛德斯-奔驰汽车公司用深度神经网络仿真硬件传感器
挑战
用深度神经网络仿真汽车硬件传感器。
解决方案
使用 MATLAB、Simulink、Deep Learning Toolbox 和 Fixed-Point Designer 将 QKeras 深度学习模型转换为可部署到汽车 ECU 的代码。
结果
- 满足了 CPU、内存和性能要求
- 建立了灵活的流程
- 开发速度提升了 600%
许多汽车制造商为其开发车辆配备许多额外的硬件传感器,以采集数据来诊断问题和细化设计。一旦汽车投产,这些传感器就会被移除以降低成本。然而,在某些情况下,硬件传感器可以用虚拟传感器代替。虚拟传感器是成本更低的软件替代项,可进一步提高安全性、效率和驾驶员舒适度。
梅赛德斯-奔驰汽车公司最近使用 MATLAB® 和 Simulink® 建立了部署虚拟传感器的新工作流,例如仿真活塞压力传感器功能的工作流。这些传感器基于在资源有限的 ECU 微控制器上运行而设计的深度学习网络。这种自动化工作流取代了速度较慢且依赖试错法的手动工作流。
“MathWorks 团队帮助我们开发了易于使用的管道,用于创建神经网络并将其集成到我们的车辆控制器单元中。”梅赛德斯-奔驰汽车公司的 AI 开发人员 Katja Deuschl 说。“凭借这一管道,我们现在能够为虚拟传感器和各种其他应用创建和部署不同类型的神经网络。”
挑战
大多数深度神经网络是为在比汽车 ECU 具有更强的处理能力和内存空间的计算机上运行而设计的。此外,ECU 不支持常用的深度学习框架(如 TensorFlow™ 和 PyTorch®)或它们所需的浮点运算。
为了在 ECU 上运行基于这些框架的模型, 开发人员必须首先将 Python® 代码转换为 C 语言代码,并将模型参数和计算变换为定点运算。 这个过程需要梅赛德斯-奔驰汽车公司花费数周的时间才能完成,产生的结果也不可靠,并且新团队成员也很难掌握。
梅赛德斯-奔驰的团队在完成从 Python 转换模型所需的许多手动步骤时,必须确保用 C 语言实现的模型能够放入 ECU 的有限内存空间,并且运行速度足够快,以便为时间敏感操作(如传感活塞压力)提供实时推断。因此,该团队希望建立更可靠、自动化程度更高的流程。
解决方案
梅赛德斯-奔驰汽车公司团队与 MathWorks 工程师合作实现了优化的工作流,将 Python 深度学习模型转换为可以迁移到其 ECU 集成管道的代码和参数。
在此工作流中,梅赛德斯-奔驰汽车公司团队使用 QKeras 库在 Python 中训练了量化的长短期记忆 (LSTM) 神经网络。
他们使用 Deep Learning Toolbox™ 将经过训练的网络导入 MATLAB 中。然后,他们运行自定义的 MATLAB 脚本将导入的神经网络转换为 Simulink 模型。
接下来,该团队使用 Fixed-Point Designer™ 将模型中的所有参数从浮点数据类型转换为定点数据类型,从而为部署到汽车 ECU 做准备。
在 Simulink 中使用仿真验证定点模型后,团队将模型交给第三方软件集成商,该集成商在 ECU 上将该模型和其他软件组件一起实现。
在使用此工作流成功实现第一个用例(活塞压力虚拟传感器)后,梅赛德斯-奔驰汽车公司团队目前正在将该工作流应用于 ECU 目标的更多传感器和其他深度学习应用。
结果
- 满足了 CPU、内存和性能要求。“借助 MATLAB 和 Simulink,我们实现了能够放入 ECU 的虚拟传感器神经网络,满足了我们的基准要求,”Deuschl 说。“如果用传统的软件开发方法,我们无法生产类似的虚拟传感器。”
- 建立了灵活的流程。Deuschl 说:“我们已将使用 MATLAB 和 Simulink 创建的自动化工作流用于其他用例。我们做了一些轻微调整以支持在两个不同动力总成系统控制器上的部署。该工作流也适用于其他类型的深度学习模型,如门控循环单元和全连接神经网络。”
- 开发速度提升了 600%。“与我们以前的手动开发流程相比,Deep Learning Toolbox 和 Fixed-Point Designer 使我们的开发速度提升了大约 6 倍,”Deuschl 说。“随着手动开发工作量的减少,我们在创建模型和代码时出错的数量也大幅降低。”