Разверните импортированную сеть с MATLAB Compiler

Эта тема показывает, как импортировать предварительно обученную сеть и затем развернуть импортированную сеть с помощью MATLAB® Compiler™. Можно импортировать предварительно обученное использование сети TensorFlow™-Keras или ONNX™ (Open Neural Network Exchange) importKerasNetwork или importONNXNetwork, соответственно. Эти функции требуют соответствующего пакета поддержки: Конвертер Deep Learning Toolbox™ для Моделей TensorFlow или Конвертер Deep Learning Toolbox для Формата Модели ONNX. Если необходимый пакет поддержки не установлен, то importKerasNetwork или importONNXNetwork обеспечивает ссылку на загрузку.

Импортированная сетевая сила включает слои Keras или ONNX, которые MATLAB Coder™ не поддерживает для развертывания. Для списка поддерживаемых слоев смотрите Сети и Слои, Поддержанные для Генерации кода (MATLAB Coder). В этом случае можно развернуть импортированную сеть как автономное приложение с помощью MATLAB Compiler. Независимый исполняемый файл, который вы создаете с MATLAB Compiler, независим от MATLAB; поэтому, можно развернуть его в пользователей, у которых нет доступа к MATLAB.

В рабочем процессе развертывания вы сначала задаете функцию классификации, которая загружает импортированную сеть и предсказывает метки класса. Затем вы компилируете функцию классификации в автономное приложение любой программно, с помощью mcc (MATLAB Compiler) функция, или в интерактивном режиме, с помощью приложения Application Compiler (MATLAB Compiler).

  • Использование mcc если вы предпочитаете работать в командной строке. Необходимо вручную задать путь к папке слоев Keras или ONNX, которую MATLAB Compiler включает в автономное приложение. Для примера развертывания импортированной сети Keras смотрите, Развертывают Импортированную Предварительно обученную сеть Используя MCC. Можно использовать тот же рабочий процесс, чтобы развернуть сеть, импортированную из использования ONNX mcc.

  • Используйте приложение Application Compiler, если вы предпочитаете интерактивный рабочий процесс. Можно получить доступ к приложению с помощью deploytool (MATLAB Compiler) функция или галерея Apps. Приложение предлагает пакеты поддержки, которые MATLAB Compiler может включать в автономное приложение. Затем приложение автоматически включает пути к папке слоев Keras или ONNX в выбранном пакете поддержки. Для примера развертывания импортированной сети Keras смотрите, Развертывают Импортированную Предварительно обученную сеть Используя Приложение Application Compiler. Можно использовать тот же рабочий процесс, чтобы развернуть сеть, импортированную из ONNX использование приложения Application Compiler.

Разверните импортированную предварительно обученную сеть Используя mcc

Импортируйте предварительно обученную сеть Keras, чтобы классифицировать изображение, и затем скомпилировать функцию классификации в автономное приложение с помощью mcc. Этот пример использует функцию помощника, которая импортирует сеть с importKerasNetwork, задает имена классов и сохраняет импортированную сеть. Чтобы просмотреть код для этой функции, смотрите Функцию Помощника.

Загрузите необходимый пакет поддержки

Функциональный importKerasNetwork требует Конвертера Deep Learning Toolbox для пакета поддержки Моделей TensorFlow. Если этот пакет поддержки не установлен, importKerasNetwork обеспечивает ссылку на загрузку на необходимый пакет поддержки в Add-On Explorer. Методические рекомендации должны загрузить пакет поддержки на местоположение по умолчанию для версии MATLAB, который вы запускаете. Однако можно задать другое место во время установки.

Отобразите корень пакета поддержки и номер выпуска для версии MATLAB, который вы запускаете. Вам нужна эта информация при определении пути к папке слоев Keras позже в примере. Пакет поддержки расположен в месте по умолчанию для MATLAB R2020b.

supportPKGFolder = matlabshared.supportpkg.getSupportPackageRoot
supportPKGFolder = 
'C:\ProgramData\MATLAB\SupportPackages\R2020b'
version('-release')
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(I,'testImg.png')

Отобразите изображение.

imshow(I)

Задайте функцию классификации

Задайте функцию с именем классификации KerasNetClassify это принимает изображение цифры, загружает импортированную сеть Keras и предсказывает метку класса с помощью загруженной сети.

type KerasNetClassify.m
function KerasNetClassify(imFile)
% KERASNETCLASSIFY Classify image using imported network
% KERASNETCLASSIFY loads the imported Keras pretrained network
% 'digitsDAGnet.mat', reads the image in imFile, and predicts the image
% label using the imported network.
load('digitsDAGnet.mat','net');
I = imread(imFile);
label = classify(net, I);
disp(label)    
end

Создайте исполняемый файл

Развернуть импортированную сеть с помощью mcc, необходимо вручную задать путь к папке слоев Keras. Папка слоев расположена в папке пакета поддержки. Отобразите путь к папке слоев Keras.

fullfile(supportPKGFolder,'\toolbox\nnet\supportpackages\keras_importer\+nnet\+keras\+layer')
ans = 
'C:\ProgramData\MATLAB\SupportPackages\R2020b\toolbox\nnet\supportpackages\keras_importer\+nnet\+keras\+layer'

Скомпилируйте функцию классификации в независимый исполняемый файл KerasNetClassify.exe при помощи mcc функция. Задайте путь к папке слоев Keras, которую MATLAB Compiler включает в автономное приложение при помощи -a path.

mcc -m KerasNetClassify.m...
    -a 'C:\ProgramData\MATLAB\SupportPackages\R2020b\toolbox\nnet\supportpackages\keras_importer\+nnet\+keras\+layer'...
    -n

Классифицируйте изображение

Сравните метки, классифицированные с помощью classify, KerasNetClassify.m, и KerasNetClassify.exe.

classify(net,I)
ans = categorical
     5 

KerasNetClassify('testImg.png')
     5 
!KerasNetClassify.exe 'testImg.png'
     5  
 

Все три способа классифицировать изображение возвращают ту же метку.

Функция помощника

Этот раздел предоставляет код importDAGnet функция помощника. importDAGnet функционируйте импортирует предварительно обученную сеть в файле digitsDAGnet.h5, задает имена классов и сохраняет импортированную сеть в digitsDAGnet.mat.

function net = importDAGnet
 
    % Specify the model file.
    modelfile = 'digitsDAGnet.h5';
    
    % Specify the class names.
    classNames = {'0','1','2','3','4','5','6','7','8','9'};
    
    % Import the Keras network with the class names.
    net = importKerasNetwork(modelfile,'Classes',classNames);
    
    % Save the imported network to a MAT file.
    save('digitsDAGnet.mat', 'net');
    
end

Разверните импортированную предварительно обученную сеть Используя приложение Application Compiler

Импортируйте предварительно обученную сеть Keras digitsDAGnet чтобы классифицировать изображение, и затем скомпилировать классификацию функционируют в автономное приложение с помощью приложения Application Compiler.

Импортируйте предварительно обученную сеть

Использование importKerasNetwork импортировать digitsDAGnet сеть, и затем сохраняет его в файл MAT. Функция importKerasNetwork требует Конвертера Deep Learning Toolbox для пакета поддержки Моделей TensorFlow. Если этот пакет поддержки не установлен, importKerasNetwork обеспечивает ссылку на загрузку на необходимый пакет поддержки в Add-On Explorer. (Для получения дополнительной информации о том, как импортировать предварительно обученную сеть и сохранить образ, чтобы классифицировать, видеть, Развертывают Импортированную Предварительно обученную сеть Используя MCC.)

Задайте функцию классификации

Задайте функцию с именем классификации KerasNetClassify это принимает изображение цифры, загружает импортированную сеть Keras и предсказывает метку класса с помощью загруженной сети.

function KerasNetClassify(imFile)
% KERASNETCLASSIFY Classify image using imported network
% KERASNETCLASSIFY loads the imported Keras pretrained network
% 'digitsDAGnet.mat', reads the image in imFile, and predicts the image
% label using the imported network.
load('digitsDAGnet.mat','net');
I = imread(imFile);
label = classify(net, I);
disp(label)    
end

Создайте исполняемый файл

Откройте список приложений развертывания приложения при помощи deploytool функция.

deploytool

В окне MATLAB Compiler нажмите Application Compiler. (Можно также открыть приложение путем выбора его из галереи Apps, доступной от вкладки Apps.)

В основном Разделе файла вкладки Compiler добавьте основной файл приложения путем нажатия на знак "плюс". В диалоговом окне Add Files задайте основной файл как функцию классификации KerasNetClassify.m.

Add main file for the standalone application

Приложение предлагает пакеты программной поддержки от установленных пакетов поддержки, которые может включать исполняемый файл. Поскольку вы установили Конвертер Deep Learning Toolbox для Моделей TensorFlow и Конвертер Deep Learning Toolbox для пакетов поддержки Формата Модели ONNX, отображения приложения оба. Необходимо выбрать Конвертер Deep Learning Toolbox для пакета поддержки Моделей TensorFlow. Выбор Конвертера Deep Learning Toolbox для пакета поддержки Формата Модели ONNX не влияет на выполнение приложения, но излишне увеличивает место приложения.

Support packages suggested by app

В разделе Package нажмите Package, чтобы сохранить автономное приложение.

Package the standalone application

Программное обеспечение компилирует автономное приложение. Именем по умолчанию для выходной папки является KerasNetClassify, и исполняемый файл KerasNetClassify.exe расположен в подпапке for_redistribution_files_only.

Software compiling the standalone application

Классифицируйте изображение

Скопируйте файл изображения testImg.png (изображение цифры 5) к папке, содержащей исполняемый файл. Измените текущую папку в папку, содержащую исполняемый файл.

copyfile('testImg.png','KerasNetClassify\for_redistribution_files_only')
cd('KerasNetClassify\for_redistribution_files_only')

Запустите исполняемый файл KerasNetClassify.exe, который вы создали с приложением Application Compiler, чтобы классифицировать изображение testImg.png.

!KerasNetClassify.exe testImg.png
     5  
 

Метка классификации возвращена KerasNetClassify.exe правильно.

Смотрите также

| | (MATLAB Compiler) | (MATLAB Compiler) | |

Похожие темы