人工智能

应用机器学习和深度学习

Simulink中的深度学习。万博1manbetx在大型复杂系统中模拟人工智能

这篇文章来自产品营销的客座博主Kishen Mahadevan。Kishen帮助客户了解人工智能、深度学习和强化学习的概念和技术。在这篇文章中,Kishen解释了如何将深度学习集成到用Simulink设计的工程系统中。万博1manbetx

背景

深度学习是推动人工智能(AI)大趋势的关键技术。深度学习的热门应用包括自动驾驶、语音识别和缺陷检测。当深度学习应用于复杂系统时,需要注意的是,经过训练的深度学习模型只是一个较大系统的一小部分。例如,自动驾驶汽车的嵌入式软件除了执行特定任务(如车道检测)的深度学习模型外,还具有自适应巡航控制、车道保持辅助、传感器融合和激光雷达处理等组件。然后,如何将所有这些不同的组件集成、实现和测试在一起,同时最大限度地减少与实际车辆的昂贵测试?这就是基于MATLAB和Simulink的模型设计的适用之处。万博1manbetx

简介

当您为任何复杂系统创建Simulin万博1manbetxk模型时,通常有两个主要组件,如图1所示。第一个组件表示将在嵌入式系统中实现的算法集合,包括控制、计算机视觉和传感器融合。第二个组件表示我们要为其开发嵌入式软件的机器或进程的动态。该组件可以是车辆动力学模型、锂离子电池动力学模型或液压阀模型。
将这两个组件放在同一个Simulink模型中,您就可以在目标硬件上实现嵌入式算法之前,运万博1manbetx行仿真来验证和验证它们。经过训练的深度学习模型可以用于这两个组件。将深度学习用于算法开发的例子包括将深度学习用于目标检测和软感知或虚拟感知。在后一种情况下,深度学习模型被用于计算无法直接测量的信号,例如锂离子电池的充电状态。
深度学习模型也可以用于环境建模。这有时被称为降阶建模。详细的、高保真的机器或过程模型可以被更快的基于人工智能的模型所取代,该模型经过训练,可以捕捉原始模型的基本动态。
图1:将深度学习模型集成到Simulink万博1manbetx
在这篇博客中,我们将重点介绍一个示例,说明如何使用深度学习进行算法开发。该示例展示了如何将训练好的深度学习模型集成到Simulink中进行系统级仿真和代码生成。万博1manbetx
请注意:本博客中展示的特性和功能可以应用于算法开发和降阶建模。

Simulink中的深度学习示例万博1manbetx

深度学习工作流程包括四个主要阶段:
  1. 数据准备
  2. 人工智能建模
  3. 模拟与测试
  4. 部署
让我们以电池管理系统为例,其中使用深度学习来估计电池的荷电状态(SOC)。SOC是电池管理系统的重要信号,但在运行过程中无法直接测量。然而,只要在实验室收集了足够的数据,深度学习模型就可以通过常用的测量方法准确预测电池SOC。
让我们从深度学习网络所需的数据预测器或观察开始。这些预测指标包括测量电压、电流、温度、计算出的电压和电流的移动平均值。训练深度学习网络所需的数据还包括与每组这些测量相关联的响应电池SOC。
图2:深度学习网络训练数据(上),深度学习网络输入和输出(下)
有了这些数据,深度学习模型被配置为接收5个输入,并提供电池的荷电状态(SOC)作为预测输出。
一旦数据经过预处理,您就可以使用以下方法训练深度学习模型深度学习工具箱.有时你可能已经在TensorFlow或其他深度学习框架中开发了一个AI模型。使用深度学习工具箱,您可以将这些模型导入MATLAB进行系统级仿真和代码生成。在这个例子中,我们使用了在TensorFlow中训练过的现有深度学习模型。
图3:深度学习工作流程

步骤1:数据准备

对于工作流的这一步,我们使用从实验室收集的已经可用的预处理实验数据。此数据包括图2中突出显示的所有预测器和响应。此数据由麦克马斯特大学(数据源).

步骤2:AI建模

如前所述,深度学习模型可以在MATLAB中使用深度学习工具箱进行训练。有关如何在MATLAB中训练深度学习网络来预测SOC的更多信息,请参阅。
正如在这个例子中已经提到的,我们已经提供了一个深度学习模型,这个模型已经在TensorFlow中训练过了。
为了将这个训练好的网络导入到MATLAB中,我们使用importTensorFlowNetwork函数。
图4:从TensorFlow直接导入到MATLAB中的网络
然后,我们分析了导入的网络体系结构analyzeNetwork检查警告或错误,并观察是否支持所有导入的层。万博1manbetx
图5:使用深度学习网络分析器分析导入的网络
然后在MATLAB中加载测试数据并验证导入网络的性能。
图6:MATLAB代码加载和绘制预测结果
图7:比较深度学习SOC预测与真实的SOC观测值。
我们看到,深度学习预测的电池SOC与实验观测值一致。

第三步:模拟与测试

为了能够用电池管理系统的所有其他组件模拟和测试这个深度学习SOC估计器,我们首先需要将这个组件引入Simulink。万博1manbetx为了实现这一点,我们使用预测块,将深度学习模型添加到Simulink模型中。万博1manbetx
图8:深度学习工具箱库,将训练有素的深度学习模型引入Simulink万博1manbetx
图9显示了开环Simulink模型。万博1manbetxPredict块将我们训练好的深度学习模型从. mat文件加载到Simulink中。万博1manbetx该模块接收经过预处理的数据作为输入,并估计电池的荷电状态。
图9:将训练好的深度学习模型集成到Simulink中万博1manbetx
然后我们模拟这个模型,并观察到我们在Simulink中的深度学习网络的预测与真实的测量数据是相同的,如图10所示。万博1manbetx
图10:深度学习网络SOC预测与真实值比较的仿真结果
现在我们已经在Simulink中测试了组件,我们可以将其集成到一个更大的模型中,并万博1manbetx模拟完整的系统。如图11所示。
图11:电池管理系统和电池厂的系统级Simuli万博1manbetxnk模型
万博1manbetx图11所示的Simulink模型包含一个电池管理系统(Battery Management System),负责监控电池状态并确保安全运行,以及一个电池工厂(Battery plant),对电池和负载的动态进行建模。
我们的深度学习SOC预测器作为电池管理系统下的组件之一,与电池平衡逻辑、防止过充过放电和其他组件一起。
图12:电池管理系统组件
我们现在模拟这个闭环系统并观察SOC预测。
图13:深度学习网络SOC预测与真实值比较的系统级仿真结果
我们可以看到,我们的深度学习模型对SOC的预测与真实测量值的预测非常相似。

步骤4:部署

为了突出在本例中部署深度学习网络的能力,我们使用了只包含深度学习SOC预测器的开环模型。然而,对于系统级模型,工作流步骤是相同的。
我们首先从Simulink中训练好的深度学习模型生成C代码。万博1manbetx
图14:Simulink中深度学习网络的C代码生成万博1manbetx
我们可以看到生成的代码包含对执行SOC预测的深度学习步骤函数的调用。
接下来,我们将生成的代码部署到NXP板上,用于处理器在环(PIL)模拟。在PIL仿真中,我们仅为正在开发的算法生成生产代码,在本例中是深度学习SOC组件,并在目标硬件板NXP S32K3上执行。这允许我们验证嵌入目标上的代码行为。
我们现在向模型中添加驱动模块,以允许我们与NXP板进行接口并模拟模型。
图15:NXP板上深度学习SOC组件的处理器在环仿真
我们看到生成的代码在NXP目标上的行为与真实测量的SOC值相同。

关键的外卖

  • 将深度学习模型集成到系统级Simulink模型中万博1manbetx
  • 用深度学习测试设计的系统级性能
  • 生成代码并将应用程序(包括深度学习组件)部署到嵌入式目标
  • 在MATLAB中训练深度学习模型或导入预先训练好的TensorFlow和ONNX模型

获取更多资源

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。