Эта тема показывает, как импортировать предварительно обученную сеть и затем развернуть импортированную сеть с помощью 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
Импортируйте предварительно обученную сеть 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
.
Приложение предлагает пакеты программной поддержки от установленных пакетов поддержки, которые может включать исполняемый файл. Поскольку вы установили Конвертер Deep Learning Toolbox для Моделей TensorFlow и Конвертер Deep Learning Toolbox для пакетов поддержки Формата Модели ONNX, отображения приложения оба. Необходимо выбрать Конвертер Deep Learning Toolbox для пакета поддержки Моделей TensorFlow. Выбор Конвертера Deep Learning Toolbox для пакета поддержки Формата Модели ONNX не влияет на выполнение приложения, но излишне увеличивает место приложения.
В разделе Package нажмите Package, чтобы сохранить автономное приложение.
Программное обеспечение компилирует автономное приложение. Именем по умолчанию для выходной папки является KerasNetClassify
, и исполняемый файл KerasNetClassify.exe
расположен в подпапке for_redistribution_files_only
.
Скопируйте файл изображения 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
правильно.
importKerasLayers
| importKerasNetwork
| importONNXLayers
| importONNXNetwork
| deploytool
(MATLAB Compiler) | mcc
(MATLAB Compiler)