X-CUBE-AI/ApplicationではSystemPerformance、Validation、ApplicationTemplateの3つのアプリケーションが選択できますが、それぞれの違いがわからない方も多いと思います。本記事ではこれらの違いをわかりやすく解説します。
X-CUBE-AI/Applicationとは
まずはX-CUBE-AI/Applicationについておさらいしておきましょう。
そもそもX-CUBE-AIはSTM32Cube.AIに含まれるキットの1つで、KerasやCaffeで作られた学習済みモデルをSTM32に最適化したCプログラムに変換するツールです。
推論だけとは言えマイコンでの実行となるため、実行速度はあまり期待できないですが、組み込みでディープラーニングを簡単に利用できることが大きなメリットです。
X-CUBE-AIは、X-CUBE-AIとApplicationの2つのツールから構成されており、STM32CubeMX(STM32CubeIDE)の拡張機能として動作します。
1つ目のX-CUBE-AI/X-CUBE-AIは、AI推論のためのコアライブラリのような位置付けです。なお、v3.3.0の時はX-CUBE-AI/Coreという名前でしたが、v3.4.0から今の名前に変わりました。
もう1つのX-CUBE-AI/Applicationは、以下の3種類の便利なアプリケーションもCプログラムとして自動生成してくれるツールです。
- SystemPerformance
- Validation
- ApplicationTemplate
これらアプリケーションはX-CUBE-AIを有効化する時に選択しますが、説明があまりなくてよくわからないですよね。以降からは、それぞれのアプリケーションの違いを解説していきます。
SystemPerformanceとは
SystemPerformanceとは、変換したモデルのパフォーマンスを測定してくれるアプリケーションです。
下記の画像がその動作イメージです。パフォーマンス測定プログラムがマイコン上で変換した推論プログラムを実行し、UART経由でPCに統計データを定期的に送信してくれます。
ターミナルには次のような統計データが表示されます。
実行時間やメモリ使用量の情報が表示されます。用意した学習済みモデルが想定した時間内に推論が終わるのか、といった確認が取れるので非常に便利な機能です。
Validationとは
Validationとは、変換したモデルの正しさを検証してくれるアプリケーションです。検証は、元になった学習済みモデルと、変換後のモデルの両方に入力データを投入し、その出力結果を比較することで行います。出力の値の違いが0.01以下であれば、問題ないという判断を行います。
下記の画像がその動作イメージです。マイコン上の推論プログラムとの直接の比較はできないので、プロキシとテストプログラムを経由して推論結果を取得しています。
この比較検証により、変換したモデルが期待した動作をしてくれることを確認できます。組み込み開発を始める前にSystemPerformanceと合わせて確認しておきたいですね。
なお、STMicroelectronics社のホームページにあるGettingStartedはこのValidationを使ったデモになっています。使い方はそちらをご覧になるのがよいでしょう。
ApplicationTemplateとは
SystemPerformanceとValidationが変換したモデルの確認・検証のためのアプリケーションでしたが、ApplicationTemplateは実際に組み込みの開発を行う際に利用するものです。
正確にはアプリケーションではなく、アプリケーションのテンプレートです。名前のままですね。STM32CubeMXによる初期化コードの自動生成をイメージするとわかりやすいと思います。
・・・が、実は2019年6月現在のv3.40では初期化コードを生成してくれません。
2020年2月6日追記:初期化コードが生成されるようになりました
→【X-CUBE-AI】ApplicationTemplateの使い方をわかりやすく解説
現状はX-CUBE-AI/Applicationを無効化する事と、ApplicationTemplateを選択する事は同義です。実際に開発するには、自力で初期化・実行を行う必要があります。この方法については別途記事を書こうと思っています。
書きました→X-CUBE-AIを使った推論プログラムの作り方をわかりやすく解説
おわりに
本記事では、X-CUBE-AI/Applicationについておさらいをしたのち、SystemPerformance、Validation、ApplicationTemplateの違いを解説しました。これで3つのアプリケーションの違いはご理解いただけだと思います。