How to use importKerasNetwork in standalone executable.

3 ビュー (過去 30 日間)
AsukaIkeda
AsukaIkeda 2022 年 2 月 1 日
コメント済み: Kojiro Saito 2022 年 2 月 2 日
事前学習済みの 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化できないのでしょうか?
ご教示いただけますと幸いです。

採用された回答

Kojiro Saito
Kojiro Saito 2022 年 2 月 1 日
編集済み: Kojiro Saito 2022 年 2 月 1 日
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 件のコメント
AsukaIkeda
AsukaIkeda 2022 年 2 月 2 日
Kojiro Saito様
ご教示いただきました通り設定したところ、無事にexeを実行し正常に動作することを確認できました。
迅速なご対応を誠にありがとうございます、大変助かりました!
Kojiro Saito
Kojiro Saito 2022 年 2 月 2 日
解決して良かったです。
通常はMATLAB Compilerがサポートパッケージも含めるようになっているのですが、Kerasのインポーターはうまく取り込まれていなかったですね。R2021bでも再現するので、開発部門に伝えておきます。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeイメージを使用した深層学習 についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!