マイコンで実現!実践AIソリューション〜文字認識のメカニズムとプロジェクトの構成:ハイレベルマイコン講座【組み込みAI実践編】(2)(3/3 ページ)
すでにマイコンを使い込まれている上級者向けの技術解説の連載「ハイレベルマイコン講座」。今回は最初に文字認識のメカニズムを復習し、次に実際のAIプロジェクトの構成内容について解説する。
7.「STM32Cube.AI」の拡張パックを実装する。「READY」を表示する段階ではSTM32Cube.AIを使わないが、最初の段階でSTM32Cube.AIを実装しておく。具体的な操作は、X-CUBE-AIプラグインを開いて、プロジェクトに追加するだけだ。
ここまでが初期設定である。STM32CubeIDEに統合されているSTM32CubeMXの画面上で設定する。プロジェクトを生成したら、STM32F7シリーズのライブラリから32F746GDISCOVERYキット用のLCD用、SDRAM用などのソフトウェアをプロジェクト内にコピーしてリンクする。
ここまでがプロジェクトの準備段階である。次に、実際にユーザーのコードを入力する(図7)
ステップ1では液晶画面に「READY」と表示するだけなので、ユーザーコードで表示文字の色や位置やフォントを指定する。ユーザーコードを入れ終わったらBuildして、マイコンのフラッシュメモリプログラムを書き込み、実行すれば液晶画面に「READY」が表示される。
【補足説明:ハードウェア抽象化レイヤー】
ここで、STM32ファミリーのプログラムに関して補足説明をしておく。
STM32CubeIDEに統合されているSTM32CubeMX(単体で使用の場合も同じ)は、STM32ファミリーのファームウェアライブラリ(例、STM32Cube_FW_F7_Vx.xx.x:xはバージョンを示す)をベースにプログラムコードを生成する。このファームウェアライブラリは、ハードウェア抽象化レイヤー(以降HAL: Hardware Abstraction Layer)で記述されている。俗に言う「レジスタ直たたき」でもなく「アセンブル言語」でもない。「レジスタ直たたき」や「アセンブル言語」でプログラムを作る場合、マニュアルとにらめっこして、レジスタの1ビットずつの仕様を確認しながら設定を行うため、時間がかかる上に間違いを起こす可能性も非常に高くなる。
一方、HALで記述すれば、設定内容がすぐ分かるように記述されているので、ソフトウェア開発の効率も上がり、間違いも起こりにくくなる。STM32ファミリーのファームウェアライブラリはもとより、各製品や今回使用する32F746GDISCOVERYキットなどの評価用ボードのサンプルプログラムは、全てHALで記述されている。
(2)ステップ2:手書き文字の軌跡とサムネイルの表示
タッチパネル機能付きの液晶画面に、手書きされたアルファベットの軌跡のイメージをインポートする。そして、インポートしたイメージを液晶画面に表示する。さらに、同じイメージの画像を縮小し、サムネイルを作って液晶画面に表示する。
これらのフローは、ステップ1で作ったプロジェクトにユーザーコードを追加することで実現する。タッチパネル機能付きの液晶画面からデータを取り込むコードや、文字を表示するコードは、STM32ファミリーのファームウェアライブラリや32F746GDISCOVERYキット用のサンプルコードを参照しつつ、STM32CubeIDE上でユーザーが作成する。
(3)ステップ3:手書き文字をAIで認識し、認識結果(認識文字と確率と演算時間)を表示
いよいよAIを起動して文字認識を行う。
最初に人工ニューラルネットワークモデルの学習結果の推論アルゴリズムをプロジェクトにインポートする必要がある。推論アルゴリズムは、汎用マイコンの能力では構築することができないので、PCなどの他のコンピュータ上で行うか、クラウドに用意されたサービスを利用して事前に準備しておく。
推論アルゴリズムが準備できれば、「STM32Cube.AI」を使って人工ニューラルネットワークの学習で構築された推論アルゴリズム部分をオブジェクトコードに変換し、マイコンとインタフェース可能なC言語に変換することができる。C言語はマイコンのAPI(Application Programming Interface)としてマイコンにインポートされ、使用可能かどうか分析される。分析結果がOKであれば、推論アルゴリズムのインポートが完了する。
インポートは、いったんSTM32CubeIDEに統合されているSTM32CubeMXに戻り、STM32CubeMX上で行う。推論アルゴリズムをインポートして解析する工程は、連載3回目で詳しく解説する。
推論アルゴリズムのインポートが終わったら、認識文字/確率/演算時間を液晶画面に表示するコードを追加して完成だ。プログラムが完成したらBuildし、フラッシュメモリにプログラムを書き込み、実行する。液晶画面に「READY」と表示された後にアルファベットの文字を書くと、LCD画面に認識文字/確率/演算時間が表示される。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- マイコンで実現!実践AIソリューション〜「組み込みAI」の復習とプロジェクトの概要
すでにマイコンを使い込まれている上級者向けの技術解説の連載「ハイレベルマイコン講座」。今回は、実際にSTマイクロエレクトロニクスの32ビットマイコン「STM32F746」を使って、文字認識のAIプロジェクトを実行してみる。連載1回目の今回は、まず「組み込みAI」について復習した後、今回行うAIプロジェクトの概要を説明する。 - マイコンで実現するAI ――「組み込みAI」とは
マイコンを使い込んでいる上級者向けの技術解説の連載「ハイレベルマイコン講座」。2回にわたって、汎用マイコンにAIを実装するための開発ツール「STM32CubeMX.AI」を題材にして「マイコンを使った組み込みAIアプリケーション(組み込みAI)」について解説する - マイコンでAIを実現するための手順
すでにマイコンを使い込まれている上級者向けの技術解説の連載「ハイレベルマイコン講座」。前回はAIアプリケーションの特長(組込みAIのメリット)まで解説した。今回は実際に「組み込みAI」を構築する手順ついて解説する。 - マイコンのセキュリティ機能を詳細解説 〜ハードウェア編
マイコンを使い込んでいる上級者を対象にさらなるスキルアップ、知識習得を目指す連載「ハイレベルマイコン講座」。今回から2回にわたって、マイコンで実現されるセキュリティ機能について詳しく解説する。 - どのノイズ対策が最も効果的か? よくあるEMS対策を比較する【準備編】
すでにマイコンを使い込まれている上級者向けの技術解説の連載「ハイレベルマイコン講座」。今回から2回にわたって、一般的なEMS(電磁耐性)のノイズ対策手法を実際に試し効果を比較し、各ノイズ対策手法を考察する。 - 最も効果的なノイズ対策がついに判明!? よくあるEMS対策を比較する【実験編】
すでにマイコンを使い込まれている上級者向けの技術解説の連載「ハイレベルマイコン講座」。前回は、【準備編】としてノイズの基礎知識とノイズの対策方法を復習し、それらの基礎知識をベースにした実験方法を説明した。今回は、【実験編】として実験の使用機材など、環境の説明と実際の実験結果を示し、その結果に対してEMS耐性改善効果の高い対策方法を考察する。