Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

importONNXNetwork

事前学習済みの ONNX ネットワークのインポート

説明

net = importONNXNetwork(modelfile,'OutputLayerType',outputtype) は、ONNX™ (Open Neural Network Exchange) ファイル modelfile から事前学習済みのネットワークをインポートし、インポートされたネットワークの出力層のタイプを指定します。

この関数には、Deep Learning Toolbox™ Converter for ONNX Model Format サポート パッケージが必要です。このサポート パッケージがインストールされていない場合、関数によってダウンロード用リンクが表示されます。

net = importONNXNetwork(modelfile,'OutputLayerType',outputtype,'Classes',classes) はさらに分類ネットワークのクラスを指定します。

すべて折りたたむ

Deep Learning Toolbox Converter for ONNX Model Format サポート パッケージをダウンロードしてインストールします。

コマンド ラインで importONNXNetwork と入力します。

importONNXNetwork

Deep Learning Toolbox Converter for ONNX Model Format がインストールされていない場合、関数によってアドオン エクスプローラーに必要なサポート パッケージへのリンクが表示されます。サポート パッケージをインストールするには、リンクをクリックして、[インストール] をクリックします。コマンド ラインでモデル ファイル '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 モデル ファイルの名前。文字ベクトルまたは string スカラーとして指定します。ファイルは、MATLAB® パス上のフォルダー内の現在のフォルダーに含まれていなければならず、そうでなければこのファイルの絶対パスまたは相対パスを含めなければなりません。

例: 'cifarResNet.onnx'

インポートされたネットワークの最後にこの関数によって追加される出力層のタイプ。'classification''regression'、または 'pixelclassification' として指定します。'pixelclassification' を使用すると、pixelClassificationLayer (Computer Vision Toolbox) オブジェクトが追加されます (Computer Vision Toolbox™ が必要)。

modelfile 内のネットワークに複数の出力がある場合、この引数を使用して出力層のタイプを指定することはできません。代わりに importONNXLayers を使用してください。importONNXLayers は、出力のプレースホルダー層を挿入します。インポートした後に、findPlaceholderLayersreplaceLayer を使用して、プレースホルダー層の検索と置換をそれぞれ行えます。

例: 'regression'

出力層のクラス。categorical ベクトル、string 配列、文字ベクトルの cell 配列、または 'auto' として指定します。Classes'auto' の場合、クラスは categorical(1:N) に設定されます。ここで、N はクラスの数です。string 配列または文字ベクトルの cell 配列 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 の層Deep Learning Toolbox の層

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

"channel-wise" として指定された numGroups をもつ groupNormalizationLayer

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

*Conv 演算子の pads 属性が、2 つの要素 [p1,p2] のみをもつベクトルである場合、importONNXNetwork は、[p1,p2,p1,p2] として指定された名前と値のペアの引数 'Padding' をもつ convolution2dLayer として Conv をインポートします。

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
ONNX の層Image Processing Toolbox™
DepthToSpacedepthToSpace2dLayer (Image Processing Toolbox)
Resizeresize2dLayer (Image Processing Toolbox) または resize3dLayer (Image Processing Toolbox)
SpaceToDepthspaceToDepthLayer (Image Processing Toolbox)
Upsampleresize2dLayer (Image Processing Toolbox) または resize3dLayer (Image Processing Toolbox)

ヒント

  • ONNX ネットワークに、Deep Learning Toolbox Converter for ONNX Model Format がサポートしない層 (サポートされている ONNX 層を参照) が含まれる場合、importONNXNetwork はエラー メッセージを返します。この場合でも、importONNXLayers を使用してネットワーク アーキテクチャと重みをインポートできます。

  • importONNXNetwork を使用して、多入力単出力の ONNX ネットワークをインポートできます。ネットワークに複数の出力がある場合は、importONNXLayers を使用します。関数 importONNXLayers は、出力のプレースホルダー層を挿入します。インポートした後に、findPlaceholderLayersreplaceLayer を使用して、プレースホルダー層の検索と置換をそれぞれ行えます。例については、Import and Assemble ONNX Network with Multiple Outputsを参照してください。多入力多出力の深層学習ネットワークの詳細については、多入力および多出力ネットワークを参照してください。

  • 事前学習済みのネットワークを新しいイメージの予測または転移学習に使用するには、インポートしたモデルの学習に使用したイメージに行った前処理と同じようにイメージを前処理しなければなりません。最も一般的な前処理ステップは、イメージのサイズ変更、イメージの平均値の減算、イメージの BGR 形式から RGB 形式への変換です。

    • イメージのサイズを変更するには、imresize を使用します。たとえば、imresize(image,[227,227,3]) のようにします。

    • RGB 形式から BGR 形式にイメージを変換するには、flip を使用します。たとえば、flip(image,3) のようにします。

    学習および予測用のイメージの前処理の詳細は、イメージの深層学習向け前処理を参照してください。

互換性の考慮事項

すべて展開する

R2018b 以降は非推奨

参照

[1] Open Neural Network Exchange. https://github.com/onnx/.

[2] ONNX. https://onnx.ai/.

R2018a で導入