R2022b 以前のモデル変換のサポートは、ONNX™ からのインポートとエクスポート、TensorFlow からのインポートのみでしたが、R2022b からは TensorFlow に Python® コードとしてモデルをエクスポートできるようになり、PyTorch からモデルをインポートできるようになりました。(画像分類からサポート開始)
Export to TensorFlow
まずは TensorFlow へのネットワークの出力について。
- ネットワークやレイヤグラフ(畳み込み、LSTMなど)を直接 TensorFlow に書き出すことができる
- ネットワークを出力して、TensorFlow のモデルとして読み込み予測に使用(サンプル:Export Network to TensorFlow and Classify Image)
- 学習前のネットワークを出力し、それを TensorFlow モデルとして読み込みして学習(サンプル:Export Untrained Layer Graph to TensorFlow)
- 出力されたモデルは、SavedModel や HDF5 形式など、TensorFlow の標準的な形式で保存可能
- 多くの MATLAB のネットワーク層は TensorFlow に変換可能(対応している層のリスト:Layers Supported for Export to TensorFlow)
ここでは、ネットワークを TensorFlow に出力、TensorFlow モデルとして読み込みし、SavedModel 形式で保存する簡単なワークフローを紹介します。
MATLAB側の作業
exportNetworkToTensorFlow(net, “DarkNet19”)
DarkNet19 パッケージには4つのファイルが含まれています。
- _init_.py:DarkNet19 フォルダを Python パッケージとして定義するもの
- model.pyファイル:学習していない TensorFlow-Keras モデルを定義するコードが含まれています
- TensorFlow モデルを読み込み、HDF5 または SavedModel 形式で保存する方法を説明するREADME.txtファイル
- モデルの重みを HDF5 形式で格納したweights.h5 ファイル
図: 出力された TensorFlow モデルは、Python パッケージである DarkNet19 に保存される
Python 側の作業
DarkNet19 パッケージから、出力された TensorFlow モデルを読み込みます。
エクスポートされたモデルを SavedModel 形式で保存します。
Import from PyTorch
次に PyTorch からのネットワークの読み込みについて。
ここでは、PyTorch から画像分類モデルをインポートし初期化する方法を紹介します。
Python 側の作業
PyTorchのモデルを保存します。
MATLAB 側の作業
net = importNetworkFromPyTorch(“traced_mnasnet1_0.pt”);
インポートしたネットワークの入力サイズを指定し、画像入力レイヤーを作成します。次に、インポートしたネットワークに画像入力層を追加し、
addInputLayer 関数(これも R2022b の新機能)を使ってネットワークを初期化します。
InputLayer = imageInputLayer(InputSize,Normalization=“none”);
net = addInputLayer(net,InputLayer,Initialize=true);
相互運用に関する機能まとめ
今回紹介した Support Package により、MATLAB の Deep Learning Toolbox と TensorFlow、Pytorch、ONNX 間での相互運用がスムーズになり、オープンソースで利用可能なモデルを活用することはもちろん、様々なフレームワークの良いところ取りをした開発が可能になります。
詳細については以下のページも確認してみてください。
コメント
コメントを残すには、ここ をクリックして MathWorks アカウントにサインインするか新しい MathWorks アカウントを作成します。