18.luck新利
的意见

用MATLAB和Cortex-A深度学习模型

一个端到端的工作流部署嵌入式机器学习。

受欢迎程度

今天,我与Ram Cherukuri MathWorks MathWorks概述的工具链的机器学习(毫升)和部署嵌入式毫升推理手臂Cortex-A使用臂计算库

MathWorks使工程师开始快速、使机器学习成为可能而不必成为一个专家。如果你是一个算法工程师感兴趣利用深度学习网络在嵌入式应用程序,本文将概述的端到端流程——从设计完整的应用程序,用MATLAB的表达能力,它作为一个独立的应用程序部署在手臂Cortex-A处理器。我们说明工作流如何克服遇到的共同挑战时从培训到嵌入式系统上部署。

继续读下去,发现:

  • MATLAB作为一个深度学习框架,包括数据准备、模型和培训
  • 代码生成和部署嵌入式处理器
  • 推理等Cortex-A库支持和性能

MATLAB -深度学习框架
MATLAB是一个全面的深度学习的框架,提供了一个端到端流程——从数据访问和数据准备训练,一直到完整应用程序的部署。它是被工程师各行业培养深度学习算法常见的任务,如目标检测、分类和语义分割。

我们将讨论一些关键的MATLAB功能标签地面实况等深度学习,培训现成的网络检测和分类,并生成c++代码优化训练网络的手臂Cortex-A处理器。我们还将讨论如何部署这些算法在Cortex-A处理器使用代码生成,利用Arm平台嵌入式推理。

开始很快
你可以通过创建一个网络与pretrained从头开始或网络,使用转移学习方法训练自己的数据。MATLAB支持全方位的网络体系结构——从卷积网络LSTMs与开源,可互操作的深度学习框架。它还允许您导入和导出模型与其他深度学习框架使用ONNX模型格式或特定的转换器。

你可以开始训练一个网络模型之前,您需要一个标签的训练数据集。这可能是一个语料库的图片注释与感兴趣的对象的位置和标签——这需要筛选每一个图像或视频或时间序列数据的帧数,标签的位置感兴趣的每个对象。这个过程被称为地面真理标记,通常是最耗时的部分训练。

为了节省时间,你的理智!——你可以使用MATLAB的数据工具,自动化这个艰苦的任务等数据存储用于读取大数据集和标签地面真理,和数据贴标签机音频,视频,图像时间序列数据

训练你的网络
现在您已经带安全标签的数据时,是时候开始pre-trained网络和训练它和你的新数据。以图像分类为例,你可以考虑流行pre-trained模型等VGG,ResNet《盗梦空间》。你可以将这些模型导入MATLAB和修改网络来满足您的应用程序。

如果这种方法吸引你,看看这个 的综合列表pre-trained模型在MATLAB支持和一个例子来开始用你自己的网络。

MATLAB的深度学习网络分析仪提供了一个非常直观的方法来可视化您的网络架构。一旦你准备好训练,你可以训练你的模型在本地机器上的CPU或GPU集群规模与几个简单的培训方案。

最后,你的算法不仅是网络。通常,有预处理逻辑之前准备输入数据传递到训练网络推理,然后预测输出还用于后处理逻辑。例如,在图像的情况下,您必须调整和/或提取感兴趣的地区;对于音频信号,您可能需要提取某些特征训练网络的输入。预处理和后处理逻辑很容易表达的各种特定于域的MATLAB提供的高级功能。

下一步是生成整个应用程序和部署的优化代码生成的代码作为一个独立的应用程序在gpu和cpu或fpga。

使用计算库
手臂Cortex-A处理器常用在许多视觉平台,从低成本硬件等覆盆子π像汽车视觉平台NXP S32V视觉处理器。Cortex-A尤其适合应用程序的需要减少功耗和维持高水平的数据处理,如汽车、物联网等嵌入式应用程序。

获得最佳性能在手臂Cortex-A平台上,手臂提供臂计算库低级的集合函数优化手臂CPU和GPU的体系结构,可以用于图像处理,计算机视觉,毫升。

代码生成技术在MATLAB利用这个库自动获得最佳性能没有成为一个专家在Arm架构编写底层代码。因为图书馆是成熟,测试,和不断改进,MATLAB自动将受益于未来的改善性能和效率。

代码生成和部署
在生成应用程序代码,一个入口点定义将接收输入数据。您可以验证您的应用程序通过调用这个函数的行为在MATLAB中使用测试输入。您还可以使用数据从传感器获得的如摄像头或音频设备和实时数据测试应用程序。

函数输出= entry_point_func(输入)I = pre_processing_function(输入);持久trainednet;如果isempty (trainednet) trainednet = coder.loadDeepLearningNetwork (“trained_network_saved.mat”);最后预测= trainednet.predict(我);输出= post_processing_function(预测);

测试算法在MATLAB成功后,您可以生成优化的c++代码编译成可执行或生成一个静态或动态库,整合成一个更大的应用程序和部署一个手臂Cortex-A处理器。

MATLAB编码器提供了一个命令行API以及一个应用程序来指导您完成整个应用程序的工作流程来生成代码。正如下图所示,MATLAB编码器允许您指定部门的几个参数计算库来获得最佳的性能在你的目标,你可以将生成的代码部署到任何支持霓虹灯的Arm处理器。

此工作流已经由NXP愿景工具箱用于深度学习网络部署在手臂Cortex-A53处理器NXPS32V234中。

要进一步
如果你感兴趣,MATLAB深度学习工具箱提供了简单的命令来创建和连接层的神经网络。例子和pre-trained网络使它易于使用,即使没有先进的计算机视觉算法或神经网络的知识。你会发现从工业自动化应用程序,如缺陷检测,汽车应用,比如行人检测。



留下一个回复


(注意:这个名字会显示公开)

Baidu