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