配置导入的网络MATLAB编译器
本主题介绍如何导入预训练的网络,然后使用部署已导入的网络MATLAB®编译器™.您可以导入预先训练好的TensorFlow™-Keras或ONNX™(开放神经网络交换)网络importKerasNetwork
或importONNXNetwork
,分别。这些功能需要相应的支持包:金宝app深度学习工具箱™TensorFlow模型转换器或ONNX模型格式的深度学习工具箱转换器.如果没有安装所需的支持包,则金宝appimportKerasNetwork
或importONNXNetwork
提供下载链接。
导入的网络可能包括Keras或ONNX层MATLAB编码器™不支持部署。金宝app有关受支持层的列表,请参见金宝app代码生成支持的网络和层金宝app(MATLAB编码器).在这种情况下,您可以将导入的网络部署为一个独立的应用程序MATLAB编译器.用于创建的独立可执行文件MATLAB编译器独立于MATLAB;因此,您可以将它部署给没有MATLAB访问权限的用户。
在部署工作流中,首先定义一个分类函数,该函数装入导入的网络并预测类标签。类以编程方式将分类函数编译成独立的应用程序世纪挑战集团
(MATLAB编译器)函数,或交互地使用应用程序编译器(MATLAB编译器)应用程序。
使用
世纪挑战集团
如果您更喜欢在命令行中工作。有关部署导入的Keras网络的示例,请参见使用mcc部署导入的预训练网络.您可以使用相同的工作流部署从ONNX导入的网络世纪挑战集团
.使用应用程序编译器应用程序,如果你喜欢交互式工作流。您可以使用
deploytool
(MATLAB编译器)函数或应用程序库。该应用程序建议的支持包金宝appMATLAB编译器可以包含在独立应用程序中。有关部署导入的Keras网络的示例,请参见使用应用程序编译器应用程序部署导入的预训练网络.可以使用相同的工作流部署从ONNX导入的网络应用程序编译器应用程序。
请注意
只能部署导入的网络使用MATLAB编译器.编程工作流和交互式工作流都不支持部署金宝app网络导入函数,例如importKerasNetwork
而且importONNXNetwork
.
部署导入的预训练网络使用世纪挑战集团
导入预先训练好的Keras网络对图像进行分类,然后将分类函数编译为单独的应用程序世纪挑战集团
.这个例子使用一个helper函数来导入网络importKerasNetwork
,指定类名,并保存导入的网络。要查看此函数的代码,请参见Helper函数.
下载所需的支持包金宝app
这个函数importKerasNetwork
需要TensorFlow模型的深度学习工具箱转换器支持包。金宝app如果没有安装此支金宝app持包,importKerasNetwork
提供附加组件资源管理器中所需支持包的下载链接。金宝app推荐的做法是将支持包下载到您正在运行的MATLAB版本的默认位置。金宝app但是,您可以在安装期间指定不同的位置。
显示您正在运行的MATL金宝appAB版本的支持包根和发布号。支持包位金宝app于MATLAB R2021b的默认位置。
金宝appsupportPKGFolder = matlabshared.supportpkg.getSupportPackageRoot
金宝appsupportPKGFolder = 'C:\ProgramData\MATLAB\SupportPackages\R2021b'
版本(“发布”)
Ans = '2021b'
导入预训练网络
导入并保存预训练的网络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(标签)
创建可执行文件
将分类函数编译成独立的可执行文件KerasNetClassify.exe
通过使用世纪挑战集团
函数。
世纪挑战集团- mKerasNetClassify.m
本例中的可执行文件是在Windows®10系统上创建的。
如果您使用的是R2021b以上的MATLAB版本,则必须手动指定Keras layers文件夹的路径。layers文件夹位于支持包文件夹中。金宝app首先,显示Keras layers文件夹的路径,然后创建KerasNetClassify.exe
通过使用世纪挑战集团
函数。
fullfile 金宝app(supportPKGFolder
“\工具箱\ nnet \ s金宝appupportpackages \ keras_importer \ + nnet \ + keras \ +层'
)
mcc - m
KerasNetClassify.m
...
——“C: \ ProgramData \ MATL金宝appAB工具箱\ 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函数
方法的代码importDAGnet
helper函数。的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支持包不会影响应用程序的执行,但会不必要地增加应用程序的占用空间。
在包部分中,点击包保存独立应用程序。
该软件编译独立应用程序。输出文件夹的默认名称是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
是正确的。
另请参阅
importKerasNetwork
|importONNXNetwork
|世纪挑战集团
(MATLAB编译器)|deploytool
(MATLAB编译器)|importKerasLayers
|importONNXLayers
相关的话题
- 预训练的深度神经网络
- 为代码生成加载预训练的网络(MATLAB编码器)
- 代码生成支持的网络和层金宝app(MATLAB编码器)
- 使用应用程序编译器创建独立应用程序(MATLAB编译器)