exponenta event banner

importONNXNetwork

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

Описание

net = importONNXNetwork(modelfile,'OutputLayerType',outputtype) импортирует предварительно подготовленную сеть из файла ONNX™ (Open Neural Network Exchange) modelfile и определяет тип выходного слоя импортированной сети.

Для этой функции требуется пакет поддержки Deep Learning Toolbox™ Converter для формата модели ONNX. Если этот пакет поддержки не установлен, функция предоставляет ссылку для загрузки.

пример

net = importONNXNetwork(modelfile,'OutputLayerType',outputtype,'Classes',classes) дополнительно задает классы для классификационной сети.

Примеры

свернуть все

Загрузите и установите пакет поддержки Deep Learning Toolbox Converter для формата модели ONNX.

Напечатать importONNXNetwork в командной строке.

importONNXNetwork

Если конвертер Deep Learning Toolbox Converter для формата модели ONNX не установлен, то функция предоставляет ссылку на необходимый пакет поддержки в обозревателе Add-On. Чтобы установить пакет поддержки, щелкните ссылку и нажмите кнопку Установить. Убедитесь, что установка выполнена успешно, импортировав сеть из файла модели 'cifarResNet.onnx' в командной строке. Если пакет поддержки установлен, функция возвращает DAGNetwork объект.

modelfile = 'cifarResNet.onnx';
classes = ["airplane" "automobile" "bird" "cat" "dee" "dog" "frog" "horse" "ship" "truck"];
net = importONNXNetwork(modelfile,'OutputLayerType','classification','Classes',classes)
net = 

  DAGNetwork with properties:

         Layers: [77×1 nnet.cnn.layer.Layer]
    Connections: [85×2 table]

Импорт остаточной нейронной сети, обученной на наборе данных CIFAR-10. Укажите файл, содержащий сеть ONNX, ее тип вывода и классы вывода.

modelfile = 'cifarResNet.onnx';
classes = ["airplane" "automobile" "bird" "cat" "deer" "dog" "frog" "horse" "ship" "truck"];
net = importONNXNetwork(modelfile,'OutputLayerType','classification','Classes',classes)
net = 
  DAGNetwork with properties:

         Layers: [77×1 nnet.cnn.layer.Layer]
    Connections: [85×2 table]
     InputNames: {'Input_input'}
    OutputNames: {'ClassificationLayer_softmax'}

Проанализируйте импортированную сеть.

analyzeNetwork(net)

Входные аргументы

свернуть все

Имя файла модели ONNX, содержащего сеть, указанное как вектор символов или строковый скаляр. Файл должен находиться в текущей папке, в папке по пути MATLAB ®, либо необходимо указать полный или относительный путь к файлу.

Пример: 'cifarResNet.onnx'

Тип выходного слоя, добавляемого функцией к концу импортированной сети, указанный как 'classification', 'regression', или 'pixelclassification'. Используя 'pixelclassification' добавляет pixelClassificationLayerОбъект (панель инструментов Computer Vision) (требуется Toolbox™ Computer Vision).

Если сеть в modelfile имеет несколько выходов, поэтому с помощью этого аргумента нельзя указать типы выходных слоев. Использовать importONNXLayers вместо этого. importONNXLayers вставляет слои-заполнители для выходных данных. После импорта можно найти и заменить слои-заполнители с помощью findPlaceholderLayers и replaceLayerсоответственно.

Пример: 'regression'

Классы выходного слоя, указанные как категориальный вектор, строковый массив, массив ячеек символьных векторов или 'auto'. Если Classes является 'auto', то программное обеспечение устанавливает классы в categorical(1:N), где N - количество классов. Если указан строковый массив или массив ячеек символьных векторов str, то программное обеспечение устанавливает классы выходного уровня в categorical(str,str).

Типы данных: char | categorical | string | cell

Выходные аргументы

свернуть все

Предварительно обученная сеть, возвращенная как DAGNetwork объект.

Ограничения

  • importONNXNetwork поддерживает следующие версии ONNX:

    • Функция поддерживает промежуточное представление ONNX версии 6.

    • Функция полностью поддерживает аппараты операторов ONNX 6, 7, 8 и 9.

    • Функция обеспечивает ограниченную поддержку аппаратов оператора ONNX 10 и 11.

Примечание

При импорте экспортированной сети слои повторно импортированной сети могут отличаться от исходной сети и могут не поддерживаться.

Подробнее

свернуть все

Поддерживаемые уровни ONNX

importONNXNetwork поддерживает следующие уровни ONNX с некоторыми ограничениями:

Уровень ONNXСлой набора инструментов для глубокого обучения

Add

additionLayer или nnet.onnx.layer.ElementwiseAffineLayer

AveragePool

averagePooling2dLayer

BatchNormalization

batchNormalizationLayer

Concat

concatenationLayer

Constant

Нет (импортировано как веса)

Conv*

convolution2dLayer

ConvTranspose

transposedConv2dLayer

Dropout

dropoutLayer

Elu

eluLayer

Gemm

fullyConnectedLayer если сеть ONNX повторяется, в противном случае nnet.onnx.layer.FlattenLayer за которым следует convolution2dLayer

GlobalAveragePool

globalAveragePooling2dLayer

GlobalMaxPool

globalMaxPooling2dLayer

GRU

gruLayer

InstanceNormalization

groupNormalizationLayer с numGroups указано как "channel-wise"

LeakyRelu

leakyReluLayer

LRN

CrossChannelNormalizationLayer

LSTM

lstmLayer или bilstmLayer

MatMul

fullyConnectedLayer если сеть ONNX повторяется, в противном случае convolution2dLayer

MaxPool

maxPooling2dLayer

Mul

multiplicationLayer

Relu

reluLayer или clippedReluLayer

Sigmoid

sigmoidLayer

Softmax

softmaxLayer

Sum

additionLayer

Tanh

tanhLayer

* Если pads атрибут Conv оператор является вектором только с двумя элементами [p1,p2], importONNXNetwork импорт Conv в качестве convolution2dLayer с аргументом имя-значение 'Padding' указано как [p1,p2,p1,p2].

Уровень ONNXПользовательский уровень импортера ONNX

Clip

nnet.onnx.layer.ClipLayer

Div

nnet.onnx.layer.ElementwiseAffineLayer

Flatten

nnet.onnx.layer.FlattenLayer или nnet.onnx.layer.Flatten3dLayer

Identity

nnet.onnx.layer.IdentityLayer

ImageScaler

nnet.onnx.layer.ElementwiseAffineLayer

PRelu

nnet.onnx.layer.PReluLayer

Reshape

nnet.onnx.layer.FlattenLayer

Sub

nnet.onnx.layer.ElementwiseAffineLayer
Уровень ONNXToolbox™ обработки изображений
DepthToSpacedepthToSpace2dLayer(Панель инструментов обработки изображений)
Resizeresize2dLayer(Панель инструментов обработки изображений) или resize3dLayer(Панель инструментов обработки изображений)
SpaceToDepthspaceToDepthLayer(Панель инструментов обработки изображений)
Upsampleresize2dLayer(Панель инструментов обработки изображений) или resize3dLayer(Панель инструментов обработки изображений)

Совет

  • Если сеть ONNX содержит слой, который не поддерживает конвертер Deep Learning Toolbox для формата модели ONNX (см. Поддерживаемые слои ONNX), то importONNXNetwork возвращает сообщение об ошибке. В этом случае по-прежнему можно использовать importONNXLayers для импорта сетевой архитектуры и весов.

  • Можно импортировать сеть ONNX с несколькими входами и одним выходом, используя importONNXNetwork. Если сеть имеет несколько выходов, используйте importONNXLayers. importONNXLayers функция вставляет слои-заполнители для выходных данных. После импорта можно найти и заменить слои-заполнители с помощью findPlaceholderLayers и replaceLayerсоответственно. Пример см. в разделе Импорт и сборка сети ONNX с несколькими выходами. Сведения о сети глубокого обучения с несколькими входами и несколькими выходами см. в разделе Сети с несколькими входами и несколькими выходами.

  • Чтобы использовать предварительно обученную сеть для прогнозирования или переноса обучения на новых изображениях, необходимо предварительно обработать изображения таким же образом, как и изображения, использованные для обучения импортированной модели. Наиболее распространенными этапами предварительной обработки являются изменение размеров изображений, вычитание средних значений изображений и преобразование изображений из изображений BGR в RGB.

    • Для изменения размеров изображений используйте imresize. Например, imresize(image,[227,227,3]).

    • Чтобы преобразовать изображения из формата RGB в формат BGR, используйте flip. Например, flip(image,3).

    Дополнительные сведения о предварительной обработке изображений для обучения и прогнозирования см. в разделе Предварительная обработка изображений для глубокого обучения.

Вопросы совместимости

развернуть все

Не рекомендуется начинать с R2018b

Ссылки

[1] Открытый обмен нейронными сетями. https://github.com/onnx/.

Представлен в R2018a