コーヒー豆の識別
STM32H7マイクロコントローラで実行されるSTM32 Model Zooによる画像分類モデルを使用して、コーヒー豆を分類する

アプローチ
焙煎の度合いを識別するコーヒー豆データセットに基づくユースケースを紹介します。このソリューションでは、公開データセットで学習済みで、STM32上で動作し、非常に高い精度が得られるモデルを提案します。
このモデルの学習には、STM32 Model Zooで提供中のPythonスクリプトを使用しました(詳細は、STの「トレーニングに関するチュートリアル」をご覧ください)。
ここでは、STM32 Model Zooのプロジェクトを設定した後、データセットをダウンロードして適切な構造で配置しました。
次にyamlファイルを更新しました。このファイルは次の設定によりトレーニングを構成するために使用します。
全般:
project_name(プロジェクト名): coffee_bean
データセット:
name(データセット名):coffee
class_names(クラス名):[Green(生豆)、Light(浅煎り)、Medium(中煎り)、Dark(深煎り)]
training_path(トレーニング・パス):datasets/train
validation_path(検証パス):
test_path(テスト・パス):datasets/test
これらの設定は、ユースケースに応じてご自由に調整いただけます。
後は、"train.py"スクリプトを実行するだけです。



STM32 Model Zooには、独自のデータでモデルをトレーニングおよび再トレーニングするときに必要なものが、すべて揃っています。モデルは、リポジトリで提供中のPythonスクリプトによってSTM32H747ディスカバリ・キットに簡単に導入できます(詳細は、STの「導入に関するチュートリアル」をお読みください)。
これらの手順の詳細は、STの入門ビデオで、すべて解説しています。
センサ
画像:カメラ・モジュール・バンドル(リファレンス・ボード:B-CAMS-OMV)
データ
データ・フォーマット:
焙煎には4つのレベルがあります。生豆つまり未焙煎のコーヒー豆、浅煎りのコーヒー豆、中煎りのコーヒー豆、深煎りのコーヒー豆の4つです。写真を撮影する際、カメラは対象の経路に平行な面上に配置されます。合計4,800枚の写真を、焙煎の4つのレベルに分類し、224 x 224の解像度になるようにサイズを変更します。レベルことに、1,200枚の画像があります。
結果
モデル:MobileNetV2 alpha 0.35
入力サイズ:128 x 128 x 3
量子化されたモデルのメモリ使用量:
使用RAM(合計):260KB
- RAM(有効化):224KB
- RAM(実行時):36KB
使用Flashメモリ(合計):528KB
- Flashメモリ重み:406KB
- Flashメモリのコード推定サイズ:122KB
精度:
浮動小数点モデル:97.75%
量子化モデル:97.25%
性能(高性能マイコンSTM32H747 @ 400MHz使用時)
推論時間:107ms
フレーム・レート:9.3fps



量子化されたモデルの混同行列
リソース
モデル・リポジトリ ST Edge AI Model Zoo
STデバイスでの実行に最適化されたリファレンスAIモデルと関連実装スクリプトをまとめたものです。組み込みアプリケーションに組み込みAI機能を追加する際に貴重なリソースとなります。
STM32Cubeの無料の拡張パッケージX-CUBE-AIを使用すると、ニューラル・ネットワークや機械学習モデルなどの学習済みAIアルゴリズムを、STM32用の最適化されたCコードに自動変換できます。
Arm® Cortex®‑Mプロセッサをベースとする32bit汎用マイクロコントローラのSTM32ファミリは、より柔軟かつ自由なアプリケーション開発を実現します。高性能、リアルタイムの処理能力、デジタル信号処理(DSP)、低消費電力 / 低電圧動作、コネクティビティなどのさまざまな機能を集積した製品により、開発をサポートします。