主要内容

部署导入网络MATLAB编译器

本主题演示如何导入预训练的网络,然后使用MATLAB®编译器™.您可以导入预先训练的TensorFlow™-Keras或ONNX™(开放神经网络交换)网络使用importKerasNetworkimportONNXNetwork,分别。这些功能需要相应的支持包:金宝app用于张量流模型的深度学习工具箱™转换器ONNX模型格式的深度学习工具箱转换器.如果没有安装所需的支持包,则金宝appimportKerasNetworkimportONNXNetwork提供下载链接。

导入的网络可能包括Keras或ONNX层MATLAB编码器™不支持部署。金宝app有关受支持层的列表,请参见金宝app代码生成支持的网络和层金宝app(MATLAB编码器).在这种情况下,您可以使用MATLAB编译器.创建的独立可执行文件MATLAB编译器独立于MATLAB;因此,您可以将它部署到没有访问MATLAB的用户。

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

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

  • 使用应用程序编译器App,如果你更喜欢交互式工作流程。你可以使用deploytool(MATLAB编译器)函数或应用程序库。该应用程序建议的支持包金宝appMATLAB编译器可以包含在独立应用程序中。然后,应用程序自动包括到Keras或ONNX图层文件夹的路径,在所选的支持包中。金宝app有关部署导入Keras网络的示例,请参见使用应用程序编译器部署导入的预训练网络.您可以使用相同的工作流来部署从ONNX导入的网络应用程序编译器应用程序。

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

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

下载所需的支持包金宝app

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

显示支持包根和您正在运行金宝app的MATLAB版本的发布号。在后面的示例中指定Keras layers文件夹的路径时,您需要这些信息。支持包位金宝app于MATLAB R2020b的默认位置。

金宝appsupportPKGFolder = matlabshared.supportpkg.getSupportPackageRoot
金宝appsupportPKGFolder = 'C:\ProgramData\MATLAB\SupportPackages\R2020b'
版本(“发布”
Ans = '2020b'

导入预训练网络

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

net = importDAGnet
net = DAGNetwork属性:Layers: [13×1 nnet.cnn.layer.Layer] Connections: [13×2 table] InputNames: {'input_1'} OutputNames: {'ClassificationLayer_activation_1'}

读取和保存图像

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

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

显示图像。

imshow(我)

定义分类函数

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

类型KerasNetClassify.m
函数kerasnetclassification (imFile) % kerasnetclassification使用导入的网络对图像进行分类% kerasnetclassification加载导入的Keras预训练网络% 'digitsDAGnet。,在imFile中读取图像,并使用导入的网络预测图像%标签。负载(“digitsDAGnet.mat”、“净”);I = imread(imFile);label = classification (net, I);disp(标签)

创建可执行文件

来部署导入的网络世纪挑战集团,您必须手动指定Keras layers文件夹的路径。layers文件夹位于支持包文件夹中。金宝app显示Keras layers文件夹的路径。

fullfile 金宝app(supportPKGFolder“\工具箱\ nnet \ s金宝appupportpackages \ keras_importer \ + nnet \ + keras \ +层'
ans = 'C:\ProgramData\MATLAB\金宝appSupportPackages\R2020b\toolbox\nnet\ SupportPackages\ keras_importer\+nnet\+keras\+layer'

将分类函数编译到独立的可执行文件中KerasNetClassify.exe通过使用世纪挑战集团函数。指定Keras layers文件夹的路径,MATLAB编译器在独立应用程序中包括使用——路径

世纪挑战集团- mKerasNetClassify.m...——一个“C: \ ProgramData \ MAT金宝appLAB工具箱\ SupportPackages \ R2020b \ \ nnet \ SupportPackages \ keras_importer \ + nnet \ + keras \ +层'...- n

图像的分类

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

分类(净,我)
ans =分类5
KerasNetClassify (“testImg.png”
5
! KerasNetClassify.exe testImg.png”
5

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

Helper函数

本节提供importDAGnethelper函数。的importDAGnet函数在文件中导入预先训练的网络digitsDAGnet.h5,指定类名,并将导入的网络保存为digitsDAGnet.mat

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

使用应用程序编译器部署导入的预训练网络

导入预先训练过的Keras网络digitsDAGnet方法对图像进行分类,然后将分类函数编译为独立的应用程序应用程序编译器应用程序。

导入预训练网络

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

定义分类函数

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

函数KerasNetClassify (imFile)使用导入的网络对图像进行分类% kerasnetclassification加载导入的Keras预训练网络%的digitsDAGnet。,在imFile中读取图像,并预测图像%标签使用导入的网络。负载(“digitsDAGnet.mat”“净”);I = imread(imFile);label = classification (net, I);disp(标签)结束

创建可执行文件

方法打开应用程序部署应用程序列表deploytool函数。

deploytool

MATLAB编译器窗口中,单击应用程序编译器.(你也可以从应用程序库中选择它来打开应用程序应用程序选项卡)。

主文件部份编译器选项卡,通过单击加号添加应用程序的主文件。在添加文件对话框中,指定主文件作为分类函数KerasNetClassify.m

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

该应用程序建议软件支持包从已安装的支持包,可执行文件金宝app可以包括。因为您已经安装了张量流模型的深度学习工具箱转换器而且ONNX模型格式的深度学习工具箱转换器金宝app支持包,应用程序显示两者。您必须选择张量流模型的深度学习工具箱转换器金宝app支持包。选择ONNX模型格式的深度学习工具箱转换器金宝app支持包不会影响应用程序的执行,但会不必要地增加应用程序占用空间。

金宝app支持包建议的应用程序

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

打包独立应用程序

该软件编译独立应用程序。输出文件夹的默认名称为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,您用应用程序编译器App,对图像进行分类testImg.png

! KerasNetClassify.exe testImg.png
5

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

另请参阅

||||(MATLAB编译器)|(MATLAB编译器)

相关的话题