メディア

マイコンで実現!実践AIソリューション〜文字認識のメカニズムとプロジェクトの構成ハイレベルマイコン講座【組み込みAI実践編】(2)(3/3 ページ)

» 2020年10月30日 10時40分 公開
前のページへ 1|2|3       

7.「STM32Cube.AI」の拡張パックを実装する。「READY」を表示する段階ではSTM32Cube.AIを使わないが、最初の段階でSTM32Cube.AIを実装しておく。具体的な操作は、X-CUBE-AIプラグインを開いて、プロジェクトに追加するだけだ。

 ここまでが初期設定である。STM32CubeIDEに統合されているSTM32CubeMXの画面上で設定する。プロジェクトを生成したら、STM32F7シリーズのライブラリから32F746GDISCOVERYキット用のLCD用、SDRAM用などのソフトウェアをプロジェクト内にコピーしてリンクする。

 ここまでがプロジェクトの準備段階である。次に、実際にユーザーのコードを入力する(図7)

図7:ユーザーコードを追加するmain.c画面

 ステップ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画面に認識文字/確率/演算時間が表示される。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.