工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Equipment >> 産業用ロボット

i.MX RT1060 MCUでTensorFlow Liteを用いた手書き数字認識の実装

i.MX RT1060クロスオーバーMCUで、TensorFlow Liteモデルとタッチ対応GUIを活用し手書き数字認識を実装するガイド

Arm® Cortex®-M7コアを搭載するi.MX RT1060は、リッチディスプレイインターフェースを必要とするコスト効率の良い産業ソリューションと高性能消費者デバイスで優れています。本チュートリアルでは、人気のMNIST eIQ例を用いて、ユーザーが描いた数字を検出・分類する組み込み機械学習アプリケーション構築を歩みます。

MNISTデータセットとモデルの概観

標準MNISTデータセットを使用:中央配置グレースケール手書き数字画像28×28ピクセル、訓練60,000枚、テスト10,000枚。データは米国の高校生と国勢調査局職員から収集され、北米手書きスタイルを反映。畳み込みニューラルネットワーク(CNN)がこのデータセットで優れた性能を発揮し、控えめなアーキテクチャでも高精度達成可能で、TensorFlow Liteが組み込みハードウェアへの展開に最適。

i.MX RT1060 MCUでTensorFlow Liteを用いた手書き数字認識の実装

図1. MNISTデータセット例

公式TensorFlow GitHubリポジトリが、Keras、tf.data、tf.estimatorで構築されたMNISTモデルのPython実装を提供。CNNはテストセットで優秀な性能を達成し、変換プロセスの参照となります。

i.MX RT1060 MCUでTensorFlow Liteを用いた手書き数字認識の実装

図2. モデルアーキテクチャ可視化

上記可視化に対応する生モデル定義:

i.MX RT1060 MCUでTensorFlow Liteを用いた手書き数字認識の実装

図3. TensorFlowモデル定義

TensorFlow Liteとは、ここでどう使うか

TensorFlowはGoogleがメンテナンスする広く採用されるオープンソース深層学習フレームワーク。リソース制約デバイスへTensorFlow推論を持ち込むため、GoogleはTensorFlow Liteを導入。TensorFlow操作のサブセットをサポートする軽量ランタイム。TensorFlow Liteモデルはデバイス上で再訓練不可だが、量子化、剪定、その他ポストトレーニング技術でサイズ削減と推論高速化が可能。

モデルのTensorFlow Lite変換

まずTensorFlow 1.13.2でモデル訓練(変換ツール互換性確保)。以下コマンドで.tflite形式に変換:

tflite_convert --saved_model_dir= --output_file=converted_model.tflite --input_shape=1,28,28 --input_array=Placeholder --output_array=Softmax --inference_type=FLOAT --input_data_type=FLOAT --post_training_quantize --target_ops TFLITE_BUILTINS

変換後、xxdでバイナリモデルをアプリケーションに埋め込み:

xxd -i converted_model.tflite > converted_model.h

xxdユーティリティはモデルをバイト配列として含むC/C++ヘッダを生成し、eIQプロジェクトがコンパイル時に直接ロード可能。詳細手順はeIQユーザーガイドと公式TensorFlow Liteドキュメント参照。

Embedded Wizard Studioクイック紹介

MIMXRT1060-EVKのグラフィックス機能活用のため、Embedded Wizard Studioで構築したタッチ対応GUIを組み込み。IDEはXNPのSDKからMCUXpressoとIARプロジェクトを生成し、開発者が即座にハードウェアでインターフェーステスト可能。評価版はGUI複雑性制限とウォーターマーク付与だが、フルライセンスで無制限機能解放。

生成GUIコードはC、eIQ例はC/C++のため、全インクルードヘッダを以下でラップ:

#ifdef __cplusplus
extern "C" {
#endif
/* C code */
#ifdef __cplusplus
}
#endif

ソースとヘッダファイルをSDKのミドルウェアフォルダに移動し、インクルードパス調整。デバイス固有設定ファイルをマージしスムーズなビルド確保。

完成アプリケーションと機能

GUIは数字描画用タッチ入力エリアと分類結果表示出力フィールドを提示。推論実行ボタンとキャンバスクリアボタンを配置。推論後、予測数字と信頼度スコアを標準出力に出力しデバッグ用とする。

i.MX RT1060 MCUでTensorFlow Liteを用いた手書き数字認識の実装

図4. 入力、出力、制御ボタンを備えたアプリケーションGUI

TensorFlow Liteモデル精度

CNNは紙ベースMNISTサンプルで高精度達成するが、タッチスクリーン手書き数字は大きく異なる。この相違は、ターゲット入力モダリティに合致した本番グレードデータで訓練する重要性を浮き彫りにする。性能向上には、タッチスクリーンで新データセット収集し転移学習適用、NXPコミュニティウォークスルーで詳細解説。

実装詳細

Embedded Wizardはスロットでユーザーインタラクションに反応。描画スロットがタッチ移動を取得、メインカラーで1ピクセル線描画。クリアスロットが入出力フィールドを背景色にリセット。推論実行スロットトリガー時、ビットマップデータ取得、28×28にリサイズ、TensorFlow Liteインタプリタに投入。

入力キャンバスが112×112のため、以下のように前処理:

図5は前処理後の中間配列を示す。

i.MX RT1060 MCUでTensorFlow Liteを用いた手書き数字認識の実装

図5. 推論準備完了の前処理済み入力配列

TensorFlow Liteインタプリタは起動時に一度初期化。各推論リクエストで、前処理済み入力テンソルをピクセル単位でインタプリタ入力バッファにコピー。メモリフットプリントとランタイム特性はNXPアプリケーションノートに文書化。

TensorFlow Lite:実行可能なソリューション

組み込みデバイスへの手書き数字認識展開は、限られた演算リソースと多様な入力モダリティという課題を抱えます。TensorFlow Liteは軽量ランタイムと豊富な最適化ツールエコシステムでこれらを緩和。i.MX RT1060のM7コアとSDKミドルウェアの組み合わせで、デジタルロック用セキュアテンキーパッド等の複雑ユースケース実装が可能。

指でタッチスクリーンに描いた数字という本番データでの訓練が高精度維持に不可欠。また、地域ごとの手書きスタイル差異もデータセット設計時に考慮すべき。

i.MX RTクロスオーバーMCUシリーズは性能とコストのバランスが取れ、幅広い組み込みアプリケーションに適しています。詳細はi.MX RT製品ページ参照。

インダストリー記事は、業界パートナーがAll About Circuits読者に有用なニュース、メッセージ、技術を共有する形式です。厳格な編集ガイドラインの下、読者に有用なニュース、技術的専門知識、ストーリーを提供することを意図しています。インダストリー記事で表明される見解・意見はパートナーのものであり、必ずしもAll About Circuitsやそのライターの見解を反映するものではありません。


産業用ロボット

  1. Raspberry Piで手書き数字認識:TensorFlowとOpenCVを用いたディープラーニング実装
  2. OPC UAクライアント経由でPLCファンクションブロックを呼び出し:実践ガイド
  3. 自律ロボットで廃棄物とエネルギーコストを削減
  4. TensorFlowで変分オートエンコーダを構築:実践ガイド
  5. コボットでCNC工作機械の機械監視を自動化:効率と精度を向上
  6. Yaskawa Motomanロボットプログラミング入門:速度と精度を高める最適な方法
  7. 初心者ガイド:Raspberry PiへのRoboDKセットアップ
  8. NXP i.MX RT500クロスオーバーMCUで電力管理をマスターする
  9. NXP i.MX RT500を活用したDSP対応スマートデバイス: マルチスレッディング、XOS、Cadence Fusion F1オーディオDSP
  10. アート作品保存のためのエポキシ樹脂プロフェッショナルガイド
  11. Java インターフェース完全解説:定義・実装・実践例