このユースケースは、道路標識を分類するドイツの交通標識データセットに基づいています。 このソリューションでは、公開データセットで学習済みで、STM32上で動作し、非常に高い精度が得られるモデルを提案します。
これらのモデルの学習には、STM32 Model Zooで提供されているPythonスクリプトを使用しました(詳細は、STの「 トレーニングに関するチュートリアル」をご覧ください)。
ここでは、 STM32 Model Zooのプロジェクトを設定した後、データセットをダウンロードし、適切な構造で配置しました。 次に yamlファイルを更新しました。このファイルは次の設定によりトレーニングを構成するために使用します。
全般
project_name(プロジェクト名)traffic_sign
データセット
name(データセット名)traffic
class_names(クラス名)[‘0001’, ‘0002’, …, ‘0042’]
training_path(トレーニング・パス)datasets/train
validation_path(検証パス)
test_path(テスト・パス)datasets/test
これらの設定は、ユースケースに応じてご自由に調整いただけます。
後は、"train.py"スクリプトを実行するだけです。
STM32 Model Zooには、独自のデータでモデルをトレーニングおよび再トレーニングするときに必要なものが、すべて揃っています。 モデルは、リポジトリで提供中のPythonスクリプトによってSTM32H747ディスカバリ・キットに簡単に導入できます(詳細は、STの「 導入に関するチュートリアル」をお読みください)。
これらの手順の詳細は、 STの入門ビデオで、すべて解説しています。
データセット「 The German Traffic Sign Recognition Benchmark(ドイツの交通標識識別ベンチマーク)」*
データ・ フォーマット:データセットは、交通標識の43のクラスに分類された、50,000以上のRGB画像から構成されます。
STM32 Model zooには、 複数の画像分類モデルが含まれるため、プロジェクトに最適のモデルを選択できます。
ここでは、同じユースケースに対して2つの異なるモデルをトレーニングしました。両者は性能およびメモリ使用量が異なります。
モデルMobileNetV2 alpha 0.35
入力サイズ:128 x 128 x 3
量子化されたモデルのメモリ使用量:
使用RAM(合計): 272KB
使用Flashメモリ(合計): 563KB
精度:
浮動小数点モデル: 99.87%
量子化モデル: 99.57%
性能(高性能マイコンSTM32H747 @ 400MHz使用時)
推論時間: 101ms
フレーム・レート: 9.9fps
モデル FDMobileNet
入力サイズ:128 x 128 x 3
量子化されたモデルのメモリ使用量:
使用RAM(合計): 65KB
使用Flashメモリ(合計): 192KB
精度:
浮動小数点モデル: 99.78%
量子化モデル: 99.51%
性能(高性能マイコンSTM32H747 @ 400MHz使用時)
推論時間: 20.04ms
フレーム・レート: 49.9fps
量子化されたMobiNetV2モデルの混同行列
リファレンスAIモデル群は、付属の実装スクリプトを使用してSTの機器上で動作するよう最適化されています。Model zooはAIの機能を組込みアプリケーションへ追加するための価値あるリソースです。
無償のSTM32Cube拡張パッケージX-CUBE-AIにより、ニューラル・ネットワークや機械学習モデルといった学習済みAIアルゴリズムを、STM32に最適化されたCコードへ自動変換できます。
Arm® Cortex®-Mベース32bitマイコンのSTM32ファミリは、マイコン・ユーザに高いレベルの自由を提供します。完全統合性および開発の容易さを維持しながら、高性能、リアルタイム性能、豊富な機能、デジタル信号処理、低消費電力 / 低電圧駆動、およびコネクティビティを兼ね備えた製品を提供します。