主要内容

配置导入的网络MATLAB编译器

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

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

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

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

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

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

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

下载所需的支持包金宝app

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

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

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

导入预训练网络

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

net = importDAGnet
net = DAGNetwork with properties: 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
kerasnetcategory加载导入的Keras预训练网络% 'digitsDAGnet。mat',读取imFile中的图像,并使用导入的网络预测图像%标签。负载(“digitsDAGnet.mat”、“净”);I = imread(imFile);标签=分类(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通过使用世纪挑战集团函数。指定MATLAB编译器包含在独立应用程序中的Keras layers文件夹的路径——路径

世纪挑战集团- 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(模型文件,“类”类名);将导入的网络保存到MAT文件中。保存(“digitsDAGnet.mat”“净”);结束

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

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

导入预训练网络

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

定义分类函数

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

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

创建可执行文件

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

deploytool

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

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

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

该应用程序建议软件支持包从安装的支持包,其中可执行文金宝app件可以包括。因为您已经安装了TensorFlow模型的深度学习工具箱转换器而且ONNX模型格式的深度学习工具箱转换器金宝app支持包,应用程序显示两者。您必须选择TensorFlow模型的深度学习工具箱转换器金宝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控件创建的应用程序编译器应用程序,对图像进行分类testImg.png

! KerasNetClassify.exe testImg.png
5

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

另请参阅

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

相关的话题