2023年5月20日土曜日

NNCase V1.7を試す話(実機実行編)



前回のSim実行編にて、NNCaseのSimが動くところまで確認しました。今回はその続きで、実機で動かす話になります

1.テスト環境

今回の環境(ホスト)は以下の通りです
  • RPi4 4GB(Raspbian 11:bullseye)
  • Docker(23.0.5, build bc4487a)
  • NNCase(v1.7.1)
  • nncaseruntime(v1.7.1)
  • kendryte-standalone-sdk
  • kendryte-gnu-toolchain
基本的な流れとしては、toolchainを入れてからstandalone-sdkを入れ、nncaseのruntimeを入れる形となります

またK210のボードとして、Maix Bitを使いました


2.インストール

まずはtoolchainのインストールからになります。
$ git clone --recursive https://github.com/kendryte/kendryte-gnu-toolchain
$ cd /kendryte-gnu-toolchain/riscv-gcc
$ ./contrib/download_prerequisites
$ cd /kendryte-gnu-toolchain
$ ./configure --prefix=/opt/kendryte-toolchain --with-cmodel=medany --with-arch=rv64imafc --with-abi=lp64f
$ make -j4
今回は/opt/kendryte-toolchainに突っ込みました。次にsdkを入れます。
$ git clone https://github.com/kendryte/kendryte-standalone-sdk
kendryte-standalone-sdk/srcにビルドしたいプロジェクトを突っ込んでいくみたいです。最後にnncaseruntimeを入れていきます。
$ wget https://github.com/kendryte/nncase/releases/download/v1.7.1/nncaseruntime-k210.zip -P ./kendryte-standalone-sdk/lib/nncase/v1
$ unzip -o ./kendryte-standalone-sdk/lib/nncase/v1/nncaseruntime-k210.zip -d ./kendryte-standalone-sdk/lib/nncase/v1
sdkのディレクトリにsrc/lib/nncase/v1があり、この中にruntimeを入れている格好になっています。アップデートの際にはここを上書きすることで対応することができます。

3.コンパイル

前回のSim実行環境のサンプルコードと実機用のコードをまとめたものを上げておきます。
build_yolox.sh内のcompile_pathをsdkの場所に書き換えることで実行できるはずです。
差分としては、Maix Bitのへの対応がメインになります。
コンパイルをすると、モデルの変換結果や実機に入れるbinなどが生成されます。

4.実行結果
実機実行の結果。Simと微妙に異なる

実際に動かすとちゃんと認識していることが分かるかと思います。しかしながらSim結果とは異なっている部分もあり、何起因の差分化は考える必要がありそうです。

実行結果(UART)
1回目実行では1100ms程度かかるらしい

実行速度は1100ms程度のようでした。起動直後の1回しかは測定していないので、もう少し条件を詰めて確認する必要があるかと思われます。

5.まとめ


今回はSim編の続きとして実機実行までの流れをやってみました。とりあえずどんな感じで動かせばよいかぐらいは分かったかと思います。この話の発展として別のDNNモデルを実行したり、性能改善を行ったり、カメラをつけて実行等があるかと思いますが、今回はここまでにしたいと思います。



©2023 shts All Right Reserved.



0 件のコメント:

コメントを投稿