1、githubのリンク:https://github.com/alibaba/MNN/tree/master/tools/converter
2、チュートリアル
(1)チュートリアル:https://www.bookstack.cn/read/MNN-zh/tools-converter-README_CN.md
(2)参考ブログ:https://blog.csdn.net/qq_37643960/article/details/97028743
READMEセクション(3)githubのプロジェクトにも説明しています。
インストールプロセス:
コンパイルおよびMNNの動的なライブラリと変換ツールをインストールするには、次のようにコマンドは変換します。
CD / MNN / mkdirビルド CDのビルド cmakeの.. -DMNN_BUILD_CONVERTER = 真の メイク -j4
ビルドフォルダの後benchmark.outとMNNConvert実行可能ファイルを表示します。
テストbenchmark.out:
。/基準。アウト ../benchmark/models/ 10 0
第10の伝播を10回、最終結果が平均を表し、0は、CPUを示し、(推論コンピューティングデバイス、0(浮動小数点CPUの実効値)、1(金属)、3(浮動小数点のOpenCL)、6 (OpenGLの)、7(バルカン))
テストMNNConvert:
./MNNConvert -h
テスト:
最初のステップ:変換pytorchモデルonnxモデル
輸入トーチ 輸入torchvision dummy_input = torch.randn(10、3、224、224、デバイス= ' CUDA ' ) モデル = torchvision.models.alexnet(pretrained = 真).cuda() #入力と出力の名前を提供することは、値の表示名セット 位モデルのグラフ内。これらのセマンティクスを変更しない設定 #グラフのを。それだけで読みやすくするためです。 # #ネットワークへの入力は(すなわち、入力のフラットリストで構成されて #あなたが前方()メソッドに渡す値)に続いて #パラメータのフラットなリスト。あなたは、部分的につまりが提供する、名前を指定することができる 位にこちらのモデルへの入力の数よりも短いリストを、私たちはします 。#名前だけのサブセットは、最初から始まることを設定します。 input_names = [ " actual_input_1 " ] + [ " learned_%のD "%iはのために私に範囲(16 )] output_names = [ " OUTPUT1 " ] torch.onnx.export(モデル、dummy_input、" alexnet.onnx "、冗長=真、input_names = input_names、output_names = output_names)
ステップ2:モデルMNNへonnxモデル
./MNNConvert -f ONNX --modelFile alexnet.onnx --MNNModel alexnet.mnn --bizCode MNN
第三段階:伝搬時間benchmark.outにテストを使用する前に
。/基準。アウト ./models/ 10 0
PS:で/MNN/source/shape/ShapeSqueeze.cpp 80L中:NanAssert()関数の新しいバージョンでは、それはコメントアウトされていることをコメントし;(または他のリシェイプエラーが報告されます)