本主题演示如何导入预训练的网络,然后使用MATLAB®编译器™.您可以导入预先训练的TensorFlow™-Keras或ONNX™(开放神经网络交换)网络使用importKerasNetwork
或importONNXNetwork
,分别。这些功能需要相应的支持包:金宝app用于张量流模型的深度学习工具箱™转换器或ONNX模型格式的深度学习工具箱转换器.如果没有安装所需的支持包,则金宝appimportKerasNetwork
或importONNXNetwork
提供下载链接。
导入的网络可能包括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函数
本节提供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(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支持包不会影响应用程序的执行,但会不必要地增加应用程序占用空间。
在包部分中,点击包以保存独立应用程序。
该软件编译独立应用程序。输出文件夹的默认名称为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
是正确的。
importKerasLayers
|importKerasNetwork
|importONNXLayers
|importONNXNetwork
|deploytool
(MATLAB编译器)|世纪挑战集团
(MATLAB编译器)