主要内容

部署导入的网络MATLAB编译器

本节介绍如何导入经过预培训的网络,然后使用MATLAB®编译器™.您可以使用以下工具导入预先训练的TensorFlow™-Keras或ONNX™(Open Neural Network Exchange)网络importKerasNetworkimportonnxnetwork.,分别。这些功能需要相应的支持包:万博1manbetx深度学习工具箱™转换器用于TensoRFLOW模型ONNX模型格式的深度学习工具箱转换器.如果没有安装所需的支持包,则万博1manbetximportKerasNetworkimportonnxnetwork.提供下载链接。

导入的网络可能包括Keras或ONNX层Matlab Coder™不支持部署。万博1manbetx有关受支持的层的列表,请参见万博1manbetx支持代码生成的网络和层万博1manbetx(MATLAB编码器).在这种情况下,可以使用以下命令将导入的网络部署为独立的应用程序MATLAB编译器.您创建的独立可执行文件MATLAB编译器独立于matlab;因此,您可以将其部署到无法访问MATLAB的用户。

在部署工作流中,首先定义一个分类函数,该函数加载导入的网络并预测类标签。然后,以编程的方式,使用世纪挑战集团(Matlab编译器)函数,或交互式地使用应用程序编译器(Matlab编译器)应用程序。

  • 使用世纪挑战集团如果您愿意在命令行工作。您必须手动指定keras或onnx图层文件夹的路径MATLAB编译器包含在独立应用程序中。有关部署导入的Keras网络的示例,请参阅使用mcc部署导入的预训练网络.您可以使用相同的工作流来部署从ONNX导入的网络世纪挑战集团

  • 使用应用程序编译器应用程序如果您更喜欢交互式工作流程。您可以使用使用的应用程序deploytool(Matlab编译器)函数或应用程序库。该应用程序建议支持包万博1manbetxMATLAB编译器可以包括在独立应用程序中。然后,该应用程序自动包括所选支持包中的keras或onnx图层文件夹的路径。万博1manbetx有关部署导入的Keras网络的示例,请参阅使用Application Compiler应用程序部署导入的预磨损网络.您可以使用相同的工作流来部署从ONNX导入的网络使用应用程序编译器应用程序。

部署导入的预培训网络使用世纪挑战集团

导入预先训练好的Keras网络对图像进行分类,然后将分类函数编译为一个独立的应用程序使用世纪挑战集团.下面的示例使用了一个helper函数,该函数使用importKerasNetwork,指定类名,保存导入的网络。要查看此函数的代码,请参见Helper函数

下载所需支持包万博1manbetx

这个函数importKerasNetwork需要张量流模型支持包的深度学习工具箱转换器。万博1manbetx如果没有安装此支万博1manbetx持包,importKerasNetwork在Add-On Explorer中提供到所需支持包的下载链接。万博1manbetx推荐的做法是将支持包下载到您正在运行的MATLAB版本的默认位置。万博1manbetx但是,您可以在安装期间指定不同的位置。

显示您正在运行的MATL万博1manbetxAB版本的支持包根目录和版本号。在后面的示例中,当指定Keras layers文件夹的路径时,需要这些信息。支持包位万博1manbetx于MATLAB R2020b的默认位置。

万博1manbetxsupportPkgFolder = Matlabshared.supportpkg.getSupportPackageroT.
万博1manbetxSupportPkgFolder ='C:\ ProgramData \ Matlab \ Spectspackages \ R2020B'
版本(“发布”
ans = ' 2020 '

进口Pretrained网络

导入并保存预训练的网络DigitsDagnet.,它包含一个DAG(有向无环图)卷积神经网络,用于对数字图像进行分类。

网= importDAGnet
net =具有属性的dagnetwork:图层:[13×1 nnet.cnn.layer.layer]连接:[13×2表] InputNames:{'input_1'} OutputNames:{'classificationLayer_activation_1'}

读取并保存图像

读取并保存图像以进行分类。

digitDatasetPath = fullfile (toolboxdir (“nnet”),'nndemos'“nndatasets”“DigitDataset”);我= imread (fullfile (digitDatasetPath,“5”'image4009.png'));imwrite(我'testimg.png'

显示图像。

imshow(我)

定义分类功能

定义一个名为KerasNetClassify它接受一个数字图像,加载导入的Keras网络,并使用加载的网络预测类标签。

类型kerasnetclassify.m.
函数kerasnetclassify(imfile)%kerasnetclassify使用导入的网络%kerasnetclassify的classify映像加载导入的keras pretry network%'digitsdagnet.mat',读取Imfile中的图像,并使用导入的网络预测图像%标签。加载('digitsdagnet.mat','net');我= imread(Imfile);标签=分类(网络,i);DISP(标签)结束

创建可执行文件

使用。部署导入的网络世纪挑战集团,必须手动指定keras图层文件夹的路径。图层文件夹位于“支持包”文件夹中。万博1manbetx显示keras图层文件夹的路径。

fullfile 万博1manbetx(supportPKGFolder“\工具箱\ nnet \ s万博1manbetxupportpackages \ keras_importer \ + nnet \ + keras \ +层'
ans ='c:\ programdata \ matla万博1manbetxb \ supportagepackages \ r2020b \ toolbox \ nnet \ supportagepackages \ keras_importer \ + nnet \ + keras \ +图层'

将分类函数编译为独立可执行文件KerasNetClassify.exe通过使用世纪挑战集团功能。指定Matlab编译器通过使用的独立应用程序中包含的keras图层文件夹的路径——路径

世纪挑战集团- mkerasnetclassify.m.......——一个'c:\ programdata \ matl万博1manbetxab \ supportagepackages \ r2020b \ toolbox \ nnet \ supportagepackages \ keras_importer \ + nnet \ + keras \ +图层'......- n

图像的分类

比较分类使用的标签分类kerasnetclassify.m.,KerasNetClassify.exe

分类(网,i)
ans =分类5.
KerasNetClassify ('testimg.png'
5.
! KerasNetClassify.exe testImg.png”
5.

分类图像的所有三种方法都返回相同的标签。

Helper函数

本节提供的代码ImportDagnet.帮手功能。这ImportDagnet.函数将预先训练好的网络导入到文件中digitsdagnet.h5.,指定类名,并将导入的网络保存到digitsDAGnet.mat

函数网= importDAGnet%指定模型文件。modelfile =“digitsDAGnet.h5”;%指定类名。一会= {'0''1''2''3'“4”“5”“6”“7”“8”“9”};%导入带有类名的Keras网络。网= importKerasNetwork (modelfile,“类”类名);%将导入的网络保存到MAT文件中。节省('digitsdagnet.mat''网');结束

使用Application Compiler应用程序部署导入的预磨损网络

导入佩带的Keras网络DigitsDagnet.要对图像进行分类,然后使用该图像将分类函数编译为独立应用程序应用程序编译器应用程序。

进口Pretrained网络

使用importKerasNetwork进口DigitsDagnet.然后将其保存为MAT文件。这个函数importKerasNetwork要求张量流模型的深度学习工具箱转换器万博1manbetx支持包。如果没有安装此支万博1manbetx持包,importKerasNetwork在Add-On Explorer中提供到所需支持包的下载链接。万博1manbetx(关于如何导入预先训练好的网络并保存图像进行分类的详细信息,请参见使用mcc部署导入的预训练网络.)

定义分类功能

定义一个名为KerasNetClassify它接受一个数字图像,加载导入的Keras网络,并使用加载的网络预测类标签。

函数KerasnetClassify(IMFile)%KerasnetClassify使用导入的网络对图像进行分类% KERASNETCLASSIFY加载导入的Keras预训练网络%的digitsDAGnet。,在imFile中读取图像,并预测图像%标签使用导入的网络。加载('digitsdagnet.mat''网');我= imread(Imfile);标签=分类(网络,i);DISP(标签)结束

创建可执行文件

通过使用使用的应用程序部署应用程序列表deploytool功能。

deploytool

MATLAB编译器窗口,点击应用程序编译器.(你也可以通过从应用程序库中选择它来打开应用程序,从应用标签。)

主文件部分编译器选项卡,单击加号添加应用程序的主文件。在添加文件对话框中,指定主文件作为分类功能kerasnetclassify.m.

为独立应用程序添加主文件

该应用程序从已安装的支持包中推荐软件支持包,可执行文万博1manbetx件可以包含该支持包。因为您已经安装了张量流模型的深度学习工具箱转换器ONNX模型格式的深度学习工具箱转换器万博1manbetx支持包,应用程序显示。你必须选择张量流模型的深度学习工具箱转换器万博1manbetx支持包。选择ONNX模型格式的深度学习工具箱转换器万博1manbetx支持包不会影响应用程序的执行,但不必要地增加了应用程序足迹。

万博1manbetx应用程序建议的支持包

部分,点击保存独立应用程序。

包上独立应用程序

该软件编译独立应用程序。输出文件夹的默认名称是KerasNetClassify和可执行文件KerasNetClassify.exe位于子文件夹中for_redistribution_files_only

编译独立应用程序的软件

图像的分类

复制图像文件testimg.png.(数字5的图像)到包含可执行文件的文件夹。将当前文件夹更改为包含可执行文件的文件夹。

拷贝文件('testimg.png'“KerasNetClassify \ for_redistribution_files_only”) cd (“KerasNetClassify \ for_redistribution_files_only”

运行可执行文件KerasNetClassify.exe,您创建的应用程序编译器应用程序,分类图像testimg.png.

!kerasnetclassify.exe testimg.png.
5.

返回的分类标签KerasNetClassify.exe是正确的。

也可以看看

||(Matlab编译器)|(Matlab编译器)||

相关的话题