How to use importKerasNetwork in standalone executable.
3 views (last 30 days)
Show older comments
事前学習済みの Keras ネットワークおよび重みのインポート - MATLAB importKerasNetwork - MathWorks 日本 の事前学習済みの Keras ネットワークのインポートによるイメージの分類 を関数にし、exe化しましたが以下のエラーが出てしまいます。
-----------------------------------------------------------------------------
エラー: importKerasNetwork (行 71)
importKerasNetwork には Deep Learning Toolbox Importer for Keras Models サポート パッケージが必要です。このサポート パッケージをインストールするには、<a href="matlab: matlab.addons.supportpackage.internal.explorer.showSupportPackages('KERASIMPORTER', 'tripwire')">アドオン エクスプローラー</a>を使用してください。
エラー: test_Keras (行 5)
nnet_cnn:supportpackages:InstallRequired
-----------------------------------------------------------------------------
matlab2021aを使用。
exe作成元PCにはimportKerasNetworkのアドオンはインストール済、作成した関数の動作確認済です。
アプリケーションコンパイラの「推奨されるサポートパッケージ」に表示された[Deloy Imported Models for Deep Learning Toolbox Conv...]のチェックボックスにはチェックを入れた状態です。
以下のAnswersを参照し試しましたが別のエラーになりました。
-----------------------------------------------------------------------------
エラー: matlab.internal.msgcat.setAdditionalResourceLocation
パス "C:\Users\Asuka IKEDA\AppData\Local\Temp\a-takasi\mcrCache9.10\test_K2" は、有効なメッセージ カタログ リソースのパ スではありません
エラー: nnet.internal.cnn.keras.setAdditionalResourceLocation (行 9)
エラー: nnet.internal.cnn.keras.importKerasNetwork (行 6)
エラー: importKerasNetwork (行 76)
エラー: test_Keras (行 5)
MATLAB:internal:msgcat:msgcatInvalidResourcePath
-----------------------------------------------------------------------------
importKerasNetworkのアドオンはexe化できないのでしょうか?
ご教示いただけますと幸いです。
0 Comments
Accepted Answer
Kojiro Saito
on 1 Feb 2022
Edited: Kojiro Saito
on 1 Feb 2022
importKerasNetworkのアドオンがコンパイル時にうまく含まれていないようです。
その場合、手動でサポートパッケージのファイルを追加することで解決できます。
アプリケーションコンパイラの「アプリケーションの実行に必要なファイル」の欄で「+ (プラス)」をクリックして、
サポートパッケージがインストールされたルートフォルダ (R2021aだとデフォルトがC:\ProgramData\MATLAB\SupportPackages\R2021a)にある
\toolbox\nnet\supportpackages\keras_importer\+nnet フォルダ
と
\resources\nnet_cnn_kerasimporter フォルダ
を追加します。
サポートパッケージのインストールルートフォルダはMATLABで
matlabshared.supportpkg.getSupportPackageRoot
を実行すると出力されます。
また、上記ドキュメントの「事前学習済みの Keras ネットワークのインポートによるイメージの分類」をEXEファイルにする場合は「digitsDAGnet.h5」と「image4009.png」も追加します。
digitsDAGnet.h5は<サポートパッケージのルートフォルダ>\toolbox\nnet\supportpackages\keras_importer\+nnet に、
image4009.pngは<MATLABのインストールフォルダ>\toolbox\nnet\nndemos\nndatasets\DigitDataset\5 にあります。
以下のような画面になります。
また、MATLAB Runtimeにはtoolboxdir('nnet')のフォルダが存在しないので、ドキュメントの例からimreadの部分を以下のように変更します。
modelfile = 'digitsDAGnet.h5';
classNames = {'0','1','2','3','4','5','6','7','8','9'};
net = importKerasNetwork(modelfile,'Classes',classNames);
%digitDatasetPath = fullfile(toolboxdir('nnet'),'nndemos','nndatasets','DigitDataset');
%I = imread(fullfile(digitDatasetPath,'5','image4009.png'));
I = imread('image4009.png');
label = classify(net,I);
imshow(I)
title(['Classification result: ' char(label)])
これでコンパイルできると思います。参考になれば幸いです。
2 Comments
Kojiro Saito
on 2 Feb 2022
解決して良かったです。
通常はMATLAB Compilerがサポートパッケージも含めるようになっているのですが、Kerasのインポーターはうまく取り込まれていなかったですね。R2021bでも再現するので、開発部門に伝えておきます。
More Answers (0)
See Also
Categories
Find more on イメージを使用した深層学習 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!