こんにちは。本日は、STM32マイコン体験実習、組み込みAI編、データ収集学習編のプレゼンテーションをご覧いただき、ありがとうございます。組み込みAIを実現するためには、学習用データの収集、学習用データのラベリング、ニューラルネットワークモデルの学習、マイコン用コードへの変換及び圧縮、そして水論モデルの実行という5つのステップを踏む必要があります。本プレゼンテーションでは、この中から学習用データの収集、学習用データのラベリング、およびニューラルネットワークモデルの学習の方法について解説していきます。なお、本実習を進める際、事前に本体験実習のツール動作確認編が終了している必要があります。本プレゼンテーションでは、ツール動作確認編が完了していることを前提に進めていきますのでご了承ください。それでは、早速実習を進めていきたいと思います。ここで、本実習のプログラム構成について説明いたします。本実習は全部で8つのパートに分かれております。1つ目のAI解説と、2つ目のツール解説は座学の内容になります。3つ目のツール動作確認、4つ目のデータ収集、学習、5つ目のニューラルネットワーク実装は、実機を用いたハンズオンの実習となります。6つ目の設計のヒントと、7つ目のパイソンスクリプトは、再び座学となります。本実習にて使用する統合開発環境がIAR社のEWARMになりますが、EWARMの代わりに、弊社のSTM32 Cube IDEをご使用になる場合に、8つ目のパートのSTM32 Cube IDEもご覧いただく必要があります。こちらも実習形式となります。以上がSTM32マイコン体験実習、組み込みAI編のプログラム構成になります。本プレゼンテーションは、4つ目のデータ収集、学習のパートとなります。ここでは、最初にニューラルネットワークの学習に必要な学習用データの収集と学習用データのラベリングを行います。その後、収集した学習用データを使って、パイソンスクリプトにより、ニューラルネットワークの再学習を行います。本実習のツール動作確認編では、人の活動認識のサンプルプログラムを動かしましたが、ここではそのサンプルをそのまま使用します。ボード側はサンプルプログラムが動作している状態にして、スマートフォン側はSTVLEセンサーのアプリケーションを起動します。使用しましたら、コネクトツアデバイスのアイコンをタップして、接続を開始します。デバイスリストに対象のデバイスが表示されましたら、そのデバイスをタップします。接続が完了しますと、下側にアイコンがいくつか表示されますので、一番右側のMOAと書いてある3点メニューをタップして、リストの中からAIデータログを選択します。センサー2.6のランにあるセンサーリストの中からアクセレロメーターのスイッチをオンにします。センサーパラメーターズランのイナーシャルセンサーズサンプリングフリケンシーが、デフォルトでは104Hzになっていますので、こちらを26Hzに変更します。画面右下にあるコンティニューボタンを選択して、ラベル設定画面に移ります。画面右上にあるプラス印をタップして、ラベル名を入力して保存します。ラベルリストに今作成されたラベルが追加されていることをご確認ください。次に学習用のデータを収集します。これから冒頭手に持って歩行、走行などの動作を行ってデータを収集しますが、データを記録する手順には注意が必要です。データの記録を開始する場合、スタートログボタンをタップしますが、その時点ではまだラベルを有効化しません。ラベルの有効化は、スタートログをタップした後、記録したい歩行、走行などの動作を始める前に行う必要があります。従いまして、スタートログをタップしてログを開始、ラベルの有効化、数秒間の動作開始、ラベルの無効化、ストップログをタップしてログを停止という手順になります。取得したデータは最終的にCSV形式のファイルに保存されますが、本ボードでは、ボード上のフラッシュメモリーに確納されます。ここで、ボード上のフラッシュメモリーに確納されたCSVファイルをPCに取り込みます。まず、USBケーブルをボードから外します。もし、ボード上のプログラムをEW ARM上から動作させている場合、デバック用ツールバーの実行停止ボタンをクリックして、プログラムの実行を停止します。次に、デバックセッション終了ボタンをクリックして、デバッカーを停止します。その後にUSBケーブルを外してください。USBケーブルを外しましたら、ボード裏面のJP4のジャンパーを12から56へ差し替えます。その後、USBケーブルを差すのですが、ここでは、先ほどまでUSBケーブルが接続されていたSTリンクのUSBコネクターCN7ではなくUSB OTGと記載されているUSBコネクターCN9に接続しますので、お間違いのないようにご注意ください。USBケーブルを接続しましたら、今度は青色のユーザーボタンを押したまま、黒色のリセットボタンを押します。その後、リセットボタンを離した後、ユーザーボタンを離します。ボタンを押すシーケンスとしては、右の図にありますように、リセットボタンが解除されるタイミングでユーザーボタンが押されている必要があります。この操作により、ボード上のフラッシュメモリーのコンテンツがUSBマスストレージとしてPCで認識することができます。接続されているボードはPC側でUSBドライブとして認識されます。そちらを開きますと、1つのCSVファイルと1つのテキストファイルが保存されています。この中で、学習用データとして先ほど取得したデータはCSVファイルの方になります。次に、収集した学習用データを使って、ニューラルネットワークモデルの再学習を行います。その作業には、あらかじめ用意してあるPythonスクリプトを使用します。手順としましては、まず最初に、STM32 Cube Function Pack Sensing 1のフォルダー内のUtilities, AI Resources,トレーニングスクリプト、HARというフォルダーを開き、そこにLog Dataという名前のフォルダーを作成します。フォルダーを作成しましたら、そのフォルダーに先ほど取得したCSVファイルをコピーします。次に、学習に使用するデータセットをこちらのURLから入手します。ファイル名はWisdomARV1.1.0.txtになります。ファイルを入手しましたら、先ほどのHARフォルダーにあるデータセットフォルダーにそのファイルをコピーします。次に、コマンドプロンプトを開きPythonスクリプトを実行して、学習用データの前処理、およびNURAL NETWORKモデルの再学習を行います。まず、コマンドプロンプトを開きます。開きましたら、ディレクトリの移動コマンドで先ほどファイルを確認したHARフォルダーに移動します。次に、必要なNURAL NETWORKモデルをインストールします。こちらのコマンドを実行します。最後に、Pythonコマンドでlanmii.pyというPythonスクリプトファイルを実行します。こちらのコマンドを実行してみてください。リザルツという新しいフォルダーが生成されて、再学習済みのNURAL NETWORKモデルが保存されます。その他、精度と損失関数のプロットや、混動行列、STM32CUBAIで変換後に検証で使用するデータファイルなどがリザルトフォルダーに生成されます。この中で、再学習済みのNURAL NETWORKモデルはHAR-IGN.h5という名前のファイルになります。こちらのファイルは、NURAL NETWORK実装編の実習で使用します。参考までに、Pythonスクリプトの各パラメータのオプションについて掲載しますので、必要に応じてご覧いただければと思います。最後に、ボードの設定を元に戻します。まず、USBケーブルをボードから外します。USBケーブルを外したら、ボード裏面のJP4のジャンパーを5、6から1、2へ差し替えます。その後、USBケーブルを指すのですが、STリンクのUSBコネクターCN7に接続します。以上で、本プレゼンテーションを終わります。プレゼンテーション最後までご覧いただきまして、ありがとうございました。