STM32マイコンではじめる組込みAI ~開発ツールの実演~ ·...

37
STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 20191029日(火) 塩川 暁彦 STマイクロエレクトロ二クス株式会社 マイクロコントローラ & デジタル製品グループ

Transcript of STM32マイコンではじめる組込みAI ~開発ツールの実演~ ·...

Page 1: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

STM32マイコンではじめる組込みAI

~開発ツールの実演~

IAR DevCon Tokyo 2019

2019年10月29日(火)

塩川 暁彦

STマイクロエレクトロ二クス株式会社マイクロコントローラ & デジタル製品グループ

Page 2: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

目次

• IoT端末の可能性を広げる組込みAI

• 組込みAI概要

• 組込みAI実現のステップ

• STが用意する組込みAI開発環境のご紹介

• 組込みAI開発ツールのデモ実演

• まとめ

2

Page 3: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

IoT端末の可能性を広げる組込みAI

3

Page 4: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

IoTが直面する課題 4

IoT端末 クラウドゲートウェイ

通信量:大通信費:高

通信電力:大 負荷:高使用料:高

センサの生データ センサの生データ

AI(人工知能)などによる処理は全てクラウド

センサ・データのアップロードのみ

Page 5: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

組込みAIで変わるIoT 5

IoT端末 クラウドゲートウェイ

アップロードするデータサイズを大幅縮小

処理を分散

通信電力:小負荷:中使用料:中

通信量:小通信費:安

前処理済データ 前処理済データ

Page 6: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

組込みAI概要

Page 7: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

組込みAIとは? 7

AIの推論アルゴリズムを組込みアプリケーションに入れ込んだもの

• 特徴

• 専用ハードウェアは不要、汎用マイコンで動作

• クラウドでの処理やサーバ / GPUは不要

• ネットワーク接続なしでスタンドアロン動作

Page 8: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

組込みAIができること

• AIの推論アルゴリズムの実行

• センサ・データから特定の波形パターンを認識

• 低解像度の静止画認識

• 低解像度・低フレームレートの動画認識

• 音データからの状況認識

• 音声から特定のキーワードを認識

など…

8

組込み機器への入力信号/データについての

判断や理解

Page 9: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

組込みAI対応マイコン STM32 9

幅広い選択肢 / シリーズを超えた互換性 / STの組込みAI開発ツールでサポート

超低消費電力

メインストリーム

Cortex-M4 Cortex-M7

ハイパフォーマンス

ワイヤレス

CPU

Cortex-M4/M0+

デュアルコア

Cortex-M33 Cortex-A7

マイクロプロセッサ

全シリーズ長期供給保証

デュアルCortex-A7

+ Cortex-M4

動作時:31uA/MHz

スタンバイ時:440nA**:内蔵SRAM 16KB保持 + RTC動作

Page 10: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

組込みAIのメリット 10

• 専用ハードウェアは不要、汎用マイコンで動作

• クラウドでの処理やサーバ/GPU

は不要

特徴

• 低消費電力のマイコンで長時間のバッテリ駆動• マイコンのみで低コスト• 組込みシステムのため小型• サーバ / GPUが使えない過酷な環境でも仕様可

メリット

• ネットワーク接続なしでスタンドアロン動作

• 膨大な生データを送る通信(有線、Wi-Fi、LTEなど)が不要

• ネットワーク遅延が発生せず高速応答• ネットワークやクラウド負荷を削減• 生データをネットワークへアップロードしないためプライバシー確保やセキュリティ・リスクが低減

・・・

・・・

Page 11: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

組込みAI実現のステップ

Page 12: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

組込みAI実現のステップ 12

2

学習用データのラベリング

5

学習済みNNによるSTM32での処理 & 分析

1

学習用データ収集

4

学習済みNNをSTM32用コードへ変換

3

NNモデルの学習

ニューラル・ネットワーク(NN)モデル作成 STM32への実装

Page 13: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

ステップ1学習用データ収集

13

• ニューラル・ネットワークを学習させるための学習用データを集める

1

学習用データ収集 例:手書き文字を認識させるなら手書き文字の画像データを用意

Page 14: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

ステップ2学習用データのラベリング

14

2

学習用データのラベリング

• 学習用データが何であるかのラベルを付ける(教師あり学習の場合)

例:手書き文字を認識させるなら手書き文字の画像データ一つひとつに名前をラベリング

“0”

“1”

“2”

“3”

“4”

“5”

“6”

“7”

“8”

“9”

Page 15: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

ステップ3NNモデルの学習

15

3

NNモデルの学習

• ニューラル・ネットワークを学習用データで学習させ、各層での計算に使われるパラメータを調整

①学習用データ入力

②出力結果を学習用データのラベルと比較

③各層のパラメータを調整

④ ①→②→③を繰り返し行い、パラメータを最適化

Page 16: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

ステップ4学習済みNNをSTM32用コードへ変換

16

• ニューラル・ネットワークのコードをマイコン向けコードに変換

4

学習済みNNをSTM32用コードへ変換

学習済みニューラル・ネットワーク

変換が必要な理由・通常、ニューラル・ネットワークにはPythonというプログラミング言語を使用・ニューラル・ネットワークの実行のために必要なROM / RAMサイズが大きい

Page 17: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

ステップ5学習済みNNによるSTM32での処理&分析

17

• 変換された学習済みニューラルネットワークの分析

分析の内容・変換後のニューラル・ネットワークモデルの規模・変換後のROMおよびRAMの使用量・変換後のエラー率

5

学習済みNNによるSTM32での処理 & 分析

STM32での処理(推論の実行)

Page 18: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

STがカバーする組込みAIステップ 18

学習済みNNをSTM32用コードへ変換

学習用データ収集学習済みNNによる

STM32での処理 & 分析

学習用データのラベリング

Page 19: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

各ステップに対応するソフトウェア開発環境 19

学習済みNNをSTM32用コードへ変換

学習用データ収集学習済みNNによる

STM32での処理 & 分析

学習用データのラベリング

FP-AI-SENSING1

FP-AI-SENSING1

FP-AI-VISION1

FP-AI-SENSING1

STM32Cube.AI

STM32Cube.AI

Page 20: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

STが用意する組込みAI開発環境のご紹介

Page 21: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

マイコン用NNコード生成ツールSTM32Cube.AI = STM32CubeMX + X-CUBE-AI

21

ディープラーニング・フレームワーク毎に異なる学習済みニューラル・ネットワークをSTM32Cube.AI変換ツールに入力

簡単にSTM32に最適化されたライブラリに自動コード変換

最先端の各種ディープラーニング・フレームワークとの相互運用性を持ったSTM32Cube.AI

学習済みNNによるSTM32での処理 & 分析

学習済みNNをSTM32用コードへ変換

NNモデルの学習

*: TensorFlowバックエンドと組み合わせて使用

*

Page 22: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

X-CUBE-AI 概要 22

学習済みNN

インポータ

STM32専用NNレイヤライブラリ

コード生成機能

最適化されたSTM32のNNモデルは、各種統合開発環境のユーザ・プロジェクトに組込むことができ、容易にターゲット・デバイスに実装可

検証効率化圧縮 NN API

学習済みNNモデル・ディープラーニング・フレームワークに依存

STM32向けに効率化 された NN

コードを生成

フレームワークに非依存のNN表現

Page 23: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

FP-AI-SENSING1 概要

• 組込みAIの以下の機能を実現可能

• 「学習用データ収集」

• 「学習用データのラベリング」

• 「学習済みNNによるSTM32での処理 」

• その他の特長

• RTOSを使用した超低消費電力実装

• スマートフォンアプリ「ST BLE Sensor」に対応

23

www.st.comにて最新情報が入手できますFP-AI-SENSING1

ソフトウェア・アーキテクチャ

アプリケーション

ミドルウェア

ハードウェア抽象化レイヤ

ハードウェア

FP-AI-SENSING1

BLE ファイル・システム FreeRTOS

USBデバイス オーディオライブラリ AI NNライブラリ

STM32Cube ハードウェア抽象化レイヤ

STM32 Nucleo

拡張ボード SensorTile.Kit

SensorTile

BoxIoT評価ボード

STM32 Nucleo

ボード

Page 24: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

FP-AI-SENSING1 デモ一覧

• 以下のサンプルプログラムが用意されています

• 人間活動認識(HAR)

• 音響シーン分類 (ASC)(デフォルトはASCを選択)

• データ監視

• データロギング

• FOTA(Firmware update Over-The-Air)

24

Page 25: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

FP-AI-SENSING1対応ハードウェア

• SensorTile Kit

25

• B-L475E-IOT01A

• マイコンボード + 拡張ボード

• マイコンボード:NUCLEO-L476RG

• 拡張ボード:X-NUCLEO-CCA02M1 (マイク)X-NUCLEO-IKS01A2 (センサ)X-NUCLEO-IDB05A1 (BLE)

• SensorTile.Box

Page 26: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

スマートフォンアプリST BLE Sensor

• Android / iOS向け Bluetooth® Low Energy用データ監視アプリケーション

26

環境監視 各種イベント検出各種データプロット

• 大気圧• 湿度• 温度• 加速度• ジャイロ• 地磁気• マイク

• 向き• 自由落下• タップ

• ダブルタップ

• 起床• 傾き• 歩数

人の活動認識 音響シーン分類 データロギング

Page 27: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

FP-AI-VISION1 概要

• AIを使用した画像認識アプリケーション開発のためのパッケージ

• 各種ファームウェアを同梱

• カメラキャプチャ

• フレーム画像処理

• 推論実行

• 実行結果表示

• 各種メモリに配置可能なソフトウェア

• CNNモデルを利用した食べ物分類アプリケーション

• 18種類の飲食物を分類

• 浮動小数点モデルと量子化モデル

27

www.st.comにて最新情報が入手できますFP-AI-VISION1

ソフトウェア・アーキテクチャ

ミドルウェア・レベル

ドライバ

ハードウェア・コンポーネント

評価用ボード

食べ物分類アプリケーション

STM32F4DIS-

CAMSTM32H747I-DISCO

カメラ・センサ STM32 LCD

ボード・サポートパッケージ

ハードウェア抽象化レイヤ

NNランタイムライブラリ 画像処理ライブラリ

Page 28: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

FP-AI-VISION1 デモ

• カメラで取得した画像を組込みAIで分類(18種類の飲食物)

• 食べ物

• アップルパイ

• シーザーサラダ

• チーズケーキ

• チキンウィング

• チョコレートケーキ

• カップケーキ

• ドーナツ

• フライドポテト

28

• ハンバーガー

• ホットドッグ

• ラザニア

• ピザ

• リゾット

• スパゲティーボロネーゼ

• ステーキ

• 飲み物

• ビール

• カプチーノ

• コーラ

Page 29: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

FP-AI-VISION1の対応ハードウェア 29

• マイコンボード + カメラボード

• マイコンボード:STM32H747I-DISCO

• カメラボード:STM32F4DIS-CAM

Page 30: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

組込みAIに必要な開発環境 30

• 共通で必要な開発環境

• ソフトウェア環境

• 統合開発環境(IAR)

• 各ソリューションで必要な開発環境

• STM32Cube.AI

• ソフトウェア環境

• STM32CubeMX

• STM32CubeFW

• X-CUBE-AI

• NNモデル

• FP-AI-SENSING1

• ソフトウェア環境

• FP-AI-SENSING1

• ST BLE Sensor

• ハードウェア環境

• NUCLEO-L476RG + X-NUCLEO

• B-L475E-IOT01A

• SensorTile Kit / SensorTile.Box

• ST-Link/V2-1 USB driver • ST-Link/V2-1 firmware upgrade

• FP-AI-VISION1

• ソフトウェア環境

• FP-AI-VISION1

• ハードウェア環境

• STM32H747I-DISCO

+ STM32F4DIS-CAM

Page 31: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

組込みAI開発ツールのデモ実演

Page 32: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

本日ご紹介するデモ

• STM32Cube.AIを使用したデモ

• ステップ4:学習済みNNをSTM32用コードへ変換

• ステップ5:学習済みNNによるSTM32での分析

• FP-AI-SENSING1を使用したデモ

• ステップ1:学習用データ収集

• ステップ2:学習用データのラベリング

• ステップ5:学習済みNNによるSTM32での処理

32

Page 33: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

STM32Cube.AIを使用したデモ

• 学習済みニューラルネットワークの変換• NNライブラリを使用してSTM32マイコン用コードに変換

• 変換済みNNモデルの分析• 複雑さ(積和演算数)• ROM使用量• RAM使用量• 圧縮率

• 変換済みNNモデルの検証• 変換前のモデルと変換後のモデル間で比較

• NNモデルのSTM32マイコンへの実装• プロジェクト生成• プロジェクトビルド• STM32マイコンへダウンロード

33

ニューラルネットワークの変換、分析、検証および実装

Page 34: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

FP-AI-SENSING1を使用したデモ

• 加速度センサ・データから5種類の状態を検出

• 検出できる状態:静止している・歩いている・走っている・自転車に乗っている・自動車に乗っている

• Bluetooth® Low Energyでスマートフォンへ検出結果のみを送信

• 超小型開発ボード”SensorTile”で動作

• ボードサイズ:13.5 x 13.5 mm

• マイコン:STM32L476 (Cortex-M4@80MHz)

• マイコン消費電力:39uA/MHz

• マイコンサイズ:4.4 x 3.8 mm

• 高精度かつ軽量の組込みAI

• 必要なFlashメモリサイズ:5.92KB

• 必要なRAMサイズ:4.13KB

• 学習データ:240万サンプル

34

小型・低消費電力のウェアラブル機器による人の状態検出

センサの生データを送らないため、低消費電力、プライバシー確保

小型、低コスト、低消費電力

データベースと照合する方法に比べシンプルかつ高速

Page 35: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

学習用データ収集とラベリング 35

測定したいセンサ・パラメータを選択

タップして次の画面へ

タップしてラベル追加画面へ

ラベル名を入力

タップしてラベルを追加

追加されたラベル

タップしてデータ収集開始

タップしてデータにラベリング

タップしてデータ収集終了

ラベル

測定された学習用データ

MicroSDにデータを保存

MicroSDに保存されたCSVファイル

“ST BLE Sensor”アプリをダウンロードして開く

Page 36: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

まとめ 36

IoT機器向け組込みAI対応マイコンSTM32

• 低消費電力化、小型化、低コスト化をサポート

• 組込みAIでIoTのデータ処理を各端末へ分散

• STM32Cube.AIで組込みAI開発を簡単スタート

Page 37: STM32マイコンではじめる組込みAI ~開発ツールの実演~ · STM32マイコンではじめる組込みAI ~開発ツールの実演~ IAR DevCon Tokyo 2019 2019年10月29日(火)

ご清聴ありがとうございましたSTマイクロエレクトロニクスの展示コーナーにもぜひお立ち寄りください