, , ,

手書き文字認識

GitHubにアクセス

この手書き文字認識デモは数字を含む文字を識別できます。 このデモの一般的なユース・ケースはスマートウォッチで、特定のコマンド(チャット、通話、メールなど)の作成やテキスト・メッセージの高速入力が可能になります。 また、スマート機器との対話方法として使用することもできます。

アプローチ

この手書き文字認識デモは、STM32L562E-DKディスカバリ・キットに搭載された小型タッチスクリーン(スマートウォッチ)で、手書きの文字や数字を認識します。

  • タッチスクリーンを画像としてキャプチャし、ニューラル・ネットワーク(NN)で分類します。
  • 各文字を特定のコマンドの構成要素として認識します。
  • このデモは、STM32L562E-DKディスカバリ・キットで各文字のNN推論時間に基づいて動作します。

モデルは、STM32 Model zooを使用して再学習可能です。

センサ

このデモでは、ユーザの入力としてタッチスクリーンを使用します。
Model zooを使用してカメラ・モジュール・バンドル(リファレンス・ボード:B-CAMS-OMV)をテストできます。

データ

データセット
STM32 Model zooでは、モデルはEMNISTデータセットのサブセット・バージョンで学習されています。
この実験では、EMNIST ByClassデータセットのMatLabバージョンから数字クラス[0;9]と大文字英字[A-Z]のみを使用しました。
また、STボードのタッチスクリーンでキャプチャした画像でデータセットを拡充しました。

データフォーマット
データセットは以下の要素で構成されています。

  • A~Zの大文字英字
  • 0~9の数字

データセットには、バランスの取れた36クラスで編成された28 x 28ピクセルのグレースケール画像が含まれています。

結果

モデル:ST MNIST

入力サイズ:28 x 28 x 1

メモリ・フットプリント:

浮動小数点モデル:
使用Flashメモリ:38KB(重みデータ)
使用RAM:30KB(アクティベーション・バッファ)

量子化モデル:
使用Flashメモリ:10KB(重みデータ)
使用RAM:14KB(アクティベーション・バッファ)

精度:
浮動小数点モデル:93.48%
量子化モデル:93.39%

性能(STM32L562E @ 110MHz使用時)

浮動小数点モデル:
推論時間:83ms
フレームレート:12fps

量子化モデル:
推論時間:29ms
フレームレート:34fps

混同行列