こんにちは 本日はSTM32マイコン体験実習 組み込みAI編 ツール解説編のプレゼンテーションをご覧いただきありがとうございます本プレゼンテーションでは 実習で使用する組み込みAIのハードウェア およびソフトウェアの開発ツールについて説明しますここで本実習のプログラム構成について説明いたします本実習は全部で8つのパートに分かれております1つ目のAI解説と 2つ目のツール解説は座学の内容になります3つ目のツール動作確認 4つ目のデータ収集学習5つ目のニューラルネットワーク実装は 実機を用いたハンズオンの実習となります6つ目の設計のヒントと 7つ目のパイソンスクリプトは再び座学となります本実習にて使用する統合開発環境が IAR社のEWARMになりますがEWARMの代わりに 弊社のSTM32 Cube IDEをご使用になる場合に8つ目のパートのSTM32 Cube IDEもご覧いただく必要がありますこちらも実習形式となります以上がSTM32マイコン体験実習 組み込みAI編のプログラム構成になります本プレゼンテーションは 2つ目のツール解説のパートとなります最初に実習で使用する開発環境の一覧をご覧いただきます実習ではこちらに示す開発環境を使用しますハードウェアとしましては IoT Discovery KitBL-475E IoT-01Aという型版のボードを使用しますまた PC接続用にマイクロUSBケーブルが必要になります一方ソフトウェアとしましては 統合開発環境として IAR社のEWARMSTM32マイコン用の初期化コード生成ツールの STM32 Cube MXSTM32マイコン専用の組み込みAIライブラリの XCube AISTM32 L4シリーズ専用のソフトウェアライブラリの STM32 Cube L4フラッシュプログラミングツールの ST-Link Utilityニューラルネットワークの学習に必要な Pythonの本体Pythonライブラリとして転送フロートケラス組み込みAIのサンプルファームやパッケージの FPAI Sensing 1スマートフォンアプリの STBLEセンサー最後にテラタームなどのターミナルソフトが必要になりますここで Python、転送フロー、ケラスのバージョンが正しいことをご確認ください異なるバージョンですと 実習用のソフトとの互換性がなくなる場合がありますのでご注意くださいまた 本実習を進めるには 開発環境の事前準備が必要になります事前準備の詳細に関しましては こちらのリンクをご参照くださいこちらは実習で使用する IoT評価ボード BL475E IoT01Aになりますこちらのボードの特徴は 各種無線機能及びセンサー機能そしてそれらを制御するための超低消費電力マイコンが搭載されている点になりますこの特徴を詳しく見ていきたいと思いますまず通信機能ですが 本ボードは無線機能として Wi-Fi、サブギガヘルツタイ、ブルー2スローエナジ、NFCタグを搭載しておりますこの中から実習ではブルー2スローエナジの機能を使用します次にセンサー機能ですが 本ボードには温度、湿度、待機圧、加速度、ジャイロ、知識、マイク及び速拠センサーが搭載されていますこの中から実習では6軸モーションセンサーを使用しますその他のコンポーネントとしましては マイコン、外付きのフラッシュメモリ、及びデバッカーが搭載されておりますマイコンは超低消費電力マイコンのSTM32L475が搭載されておりますフラッシュメモリは64ビットのQuad SPIフラッシュが搭載されておりますまた オンボードのデバッカーも用意されているため 外付きのデバッカーが不要になりますちなみに ボードに実装されている低消費電力マイコンのSTM32L475のブロックズがこちらになりますQuadはARMのQuadex M4コアで 最大80MHzで動作しますフラッシュメモリは1MBのデュアルバンク構成のメモリとなります内蔵のSRAMは128KBとなりますペリフェラルとしましては URとSPI、I2C、USBなどの通信インターフェースや各種対魔12ビットのADコンバーターやDAコンバーター コンパレータ オペアンプなどのアナログ機能Quad SPIやパラレルバスなどのメモリインターフェース そのほか オーディオインターフェースやタッチセンシング機能などを搭載しています次に STM32マイコン専用のニューラルネットワークコード生成ツールの紹介です組み込みAIには学習済みのニューラルネットワークモデルの組み込み系言語への変換およびサイズの圧縮が必要であると説明しましたがその処理を行ってくれるツールがこちらの STM32 CUBE AI になりますSTM32 CUBE AI は STM32マイコン用の初期化コード生成ツール STM32 CUBE MX にSTM32専用の組み込みAIライブラリーである X CUBE AI を組み合わせた組み込みAI専用の開発環境ですこちらのツールは現在 ONIX、KERAS、転送フローライト、カフェ、ラザーニャ、コンプネットJS といったディープラーニングフレームワークに対応していますまた IAR、KIR、STM32 CUBE IDE などの各種統合開発環境のプロジェクトファイルに変換済みモデルを含む形でプロジェクトファイルを生成することができますここでSTM32専用の組み込みAIライブラリーである X CUBE AI の中身について見ていきたいと思います各種ディープラーニングのフレームワークで生成された学習済みのニューラルネットワークモデルは各フレームワークに応じた表現となっていますそこで X CUBE AI では入力されたニューラルネットワークモデルを学習済みニューラルネットワークインポーターを介して一旦フレームワークに依存しない形の表現に変換しますその後、非依存のニューラルネットワークモデルに対して分析が行われて入力されたモデルのレイヤー構成、モデルの規模、メモリー使用料などが参出されますまた、分析されるレイヤー構成に従ってマイコン専用のニューラルネットワークライブラリーを使用してマイコン向けのコードへの変換が行われますこの結果を基に、開発者は入力されたモデルがマイコンの内蔵メモリーに入るかどうかを判断することができますその際、メモリー使用料を抑えるためにニューラルネットワークモデルの変換時の圧縮率を選択することが可能ですただし、圧縮率を上げ過ぎるとニューラルネットワークモデルの精度が下がり想定した水論結果が得られないといった問題に直面する可能性があるので注意が必要です次に、元のモデルと変換後のモデルに同じデータを入力した場合出力結果にどれくらいの際があるかを確認する検証という機能があります検証機能は、変換後のモデルがPC上にある場合の検証とマイコン上で水論実行させた場合の検証が可能です変換済みニューラルネットワークモデルの分析と検証が完了すると選択された統合開発環境に応じたプロジェクトファイルを学習済みのニューラルネットワークモデルを含む形で生成することができますプロジェクトファイル生成後は一般的なマイコンのソフトウェア開発と同じ方法で開発を進めることができますこのように、STM32 Cube AIを活用することで既存の学習済みニューラルネットワークモデルを簡単にSTM32マイコンに実装することができます次に、センサーを使用した組み込み AIソフトウェアパッケージFPAI Sensing 1をご紹介します弊社では、組み込み AIを使用したサンプルプログラムを複数用意していますその一つが、センサーと組み込み AIを組み合わせて使用するソフトウェアパッケージのFPAI Sensing 1になりますこちらのパッケージでは、組み込み AIの5つのステップのうち学習用データの収集、学習用データのラベリング学習済みモデルのマイコン上での推論実行に対応していますまた、弊社が開発した専用のスマートフォンアプリのSTBLEセンサーと連動してサンプルプログラムを動作させることができますこちらのパッケージでは、組み込み AIを使用した人の活動認識や環境オンブン率データ監視や学習用データ収集のためのデータロギング及びラベリングファームや更新機能などのサンプルが用意されています本パッケージが動作するハードウェアとしては現在4種類ございます超小型センサー評価キットのセンサータイルキット第2世代の超小型センサー評価キットのセンサータイルボックスIoT評価ボードのBL475E IoT01Aそしてマイコンボード及び拡張ボードを組み合わせたハードウェア以上の4種類からお選びいただくことができますセンサーを使用した組み込み AI開発を検討されている場合FPAIセンシング1と対応のハードウェアを使用することで組み込みAI開発に必要な学習用データの取得やラベリングをスムーズに進めることができます先ほど説明の中に出てきました弊社が開発した専用のスマートフォンアプリのSTVLEセンサーについて説明しますこちらはブルートゥースローエナジーを使用して実機とスマートフォンやタブレット間で通信をすることで実機上のセンサーなどのデータを監視するアプリケーションになりますFPAIセンシング1のサンプルと連動させますと環境監視やデータプロットなどの各種センサーデータの可視化を始め人の活動認識、環境オンブン類などの組み込みAIの推論実庫の結果表示や学習用データの収集やラベリングを行うことができますこちらのアプリはGoogle PlayおよびApp Storeからダウンロードいただけます実習ではSTM32専用組み込みAIライブラリと合わせて組み込みソフトウェア開発支援ツールのSTM32 CUBE MXが必要になりますSTM32 CUBE MXはPCにインストールして使用するツールになりますPCのGUI上で使用する製品機能、ピンハイチ、クロック設定などを選択していただいてコード生成ボタンを押しますと設定内容が反映されたコードが自動的に生成されますまた生成されるコードは選択されたツールチェーンに対応するプロジェクトファイルの形式で生成されますのでコード生成後にそのまま統合開発環境を開いて開発を始められる仕組みとなっていますここでSTM32 CUBE MXで生成されるコードの裏で用意されているコードの実態がこちらの右側のSTM32 CUBEマイコンパッケージになりますこのマイコンパッケージはデバイスドライバーやミドルウェア、リアルタイムOSなどが含まれておりSTM32ファミリーの各シリーズごとに専用のパッケージが用意されています実習ではボードに搭載のマイコンがSTM32 L4シリーズですのでSTM32 L4シリーズに対応のSTM32 CUBE L4というパッケージを使用します最後に統合開発環境ですが1つ目がIAR社というスウェーデンの会社でアームのツールに力を入れている会社があるのですがそこから発売されているENVETED WORK BENCH FOR ARM EW ARMというツールがあります2つ目がカイル社のMDK ARMというツールになりますこのカイルという会社はもともとドイツのツールベンダーだったのですが2005年にアームに売収されまして現在はアームの参加に入っている会社となりますしたがいましてこのMDK ARMはアームの純正のツールという位置付けになりますちなみに弊社のマイコンのサポートエンジニアの9割型はこのIAR社のEW ARMかカイル社のMDK ARMを使用しておりますそして3つ目は弊社がリリースしたSTM32 CUBE IDEというツールでこちらはGCCのコンパイラーとエクリプスの開発環境を組み合わせたツールとなります実はこちらのツールもともとアトリックというスウェーデンのツールベンダーが作ったTRUE STUDIOという統合開発環境があったのですが弊社がこの会社を売収しましてしばらくは弊社よりTRUE STUDIOを提供していたのですが2019年に新しくSTM32 CUBE IDEという弊社のツールとして生まれ変わりましたご紹介した3つのツールのうち IARのEW ARMとカイルのMDK ARMは無償評価版のライセンスがありますともにコンパイル制限なしで30日限定のライセンスと32キロバイトのコンパイル制限付きで期限が無制限のライセンスの2種類のライセンスが用意されています一方STM32 CUBE IDEは機能と期限に制限のない完全に無償のツールになります今回実習でご使用いただくツールは IAR社のEW ARMとなります以上で本プレゼンテーションを終わりますプレゼンテーション最後までご覧いただきましてありがとうございました