マイコン用AIモデルの作成にトライ


写真1 NPU内蔵マイコンを搭載する開発ボードFRDM-MCXN947

インターフェース編集部 編

★ボード付きハンズオン・セミナ開催を開催します★
★オンライン受講の選択も可能★
NPUマイコンではじめるエッジAI開発
・開催日  :2025年12月4日 14:00-17:00
・受講料  :5,000円(ボード付き,税込み)
・使用ボード:FRDM-MCXN947(NXPセミコンダクターズ)
・講師   :笹尾 幸良氏(株式会社Acculus CEO)
※セミナ受講時に使用したFRDM-MCXN947はそのままお持ち帰り頂けます.
申し込みページはこちら

<PR>NXP Technology Days 2025 Tokyo開催
 NXPジャパン株式会社が主催の技術イベントを開催します.Edge AI,IoT機器のセキュリティ,I3Cバス,モータ制御など,最前線の技術トレンドを解説するセッションを多数開催します.
 開発ボードのプレゼントや技術資料などの参加者限定特典もご用意しております.
・開催日:2025年12月10日(水)10:00〜16:30
・会場 :コングレスクエア日本橋
・参加費:無料
申し込みページはこちら

  前回は,写真1に示すマイコン・ボードFRDM-MCXN947(NXPセミコンダクターズ)を使用して,AIの推論を行うサンプル・プログラムを動かしました.
 今回は,NXPセミコンダクターズの組込み機器向けAI開発支援ツールeIQ Toolkitを使って,新たなモデルの作成を行ってみます.ここでは,複数の花の画像から,特定の花を認識するモデルを作成してみます.
 本記事で紹介する手順は,次のウェブ・ページを元にしています.
[入門]MCX N947:AI/ML画像認識サンプルコード実装 (日本語ブログ),NXP Tech Blog

■[1] 開発環境の準備

●使用するツールのバージョン

 本稿執筆時点でリリースされている各種開発環境の最新バージョンは,MCUXpresso IDEは25.6.136,SDKは25.09.00ですが,AI開発支援ツールeIQ ToolkitがサポートするSDKのバージョンが2.14.0です. 最新バージョンでは参考文献の手順通りに実行できない可能性があるので,ここではそれぞれ次のバージョンを使用します.MCUXpresso IDEとMCUXpresso SDKのインストール方法は,前回の説明を参照してください.

・MCUXpresso IDE:v11.9.0
・MCUXpresso SDK:SDK_2_14_0_FRDM-MCXN947
・eIQ Toolkit:v1.11.4(eIQ Portal 2.11.2)


●eIQ Toolkitのインストール

 本記事では,前回と同様に開発用PCにWindows 11マシンを使用する前提で解説を行います.次のウェブ・ページよりeIQ Toolkitのインストーラをダウンロードします.
eIQ Toolkit
 ダウンロードが完了したらインストーラを実行します.指示に従ってインストールします.

■[2] AIモデルのトレーニング

 ここでは,複数の花の画像から,特定の花を認識するモデルを作成します.そのために,まずはeIQ Toolkitに花の画像データ(データセット)をインポートします.インポートには,Pythonスクリプトを使用します.

●手順1…データセットのダウンロード

 次のURLから,モデル作成用の花のデータセットをダウンロードします.
http://download.tensorflow.org/example_images/flower_photos.tgz
 ダウンロードしたファイルは,ドキュメント・フォルダC:/Users/{ユーザ名}/Documentsに保存して解凍します.

●手順2…データセットのフォルダ構造変更

 データセットのflower_photosのフォルダ構造を,インポート時に使用するPythonスクリプトが必要とするイメージのフォルダ構造に手動で変更します.変更内容は次の通りです.

(1) flower_photosフォルダ を「ドキュメント(Document)」直下へ移動する
(2) ファイル flower_photos/LICENSE.txt を削除する
(3) flower_photosフォルダの下に新たにフォルダtest, train, validation を作成する
(4) 花の画像の(~75%)を教師データとしてtrainフォルダへ移動する(正確な数は重要ではない)
(5) 残った画像をvalidateとtestフォルダへ振り分ける

 変更後のフォルダ構成を図1に示します.


図1 画像認識に使うフォルダの構造

●手順3…eIQのGUIを使用してデータセットをインポート

 Windowsのスタート・メニューからeIQ Toolkit内のeIQ Portalを起動します(図2).メニュー・バーより[SETTING]を選択し,Neutron converterにMCUXpresso SDK 2.14.0を選択します.


図2 eIQ Portalの起動画面

 次に,[CREAT PROJECT]ボタンにカーソルを合わせると現れる[Import dataset]を選択し,[Structured folders]をクリックします(図3).次に,左上にある[SELECT DATASET FOLDER]をクリックし,手順2で作成したデータセットのフォルダflower_photosを選択します.選択したら[IMPORT]をクリックします.


図3 データセットのインポート手順

 .eiqp形式のファイルの保存場所を指定します.ここでは,Dovumentsフォルダ直下にeiq-project_HandsOn_2112.eiqpというファイル名で保存します.すると,インポートが完了します(図4).


図4 データセットのインポート画面

●手順4…モデルの設定とトレーニングの実行

 [SELECT MODEL]をクリックします.その後,[Classification(クラス分け)]-[Performance]-[NPU]の順にクリックします.すると,モデルのトレーニング画面(図5)が表示されるので,次の通りパラメータを設定します.

・Input Size:128,128,3
・Learning Rate:0.01
・Epochs To Train:Infinity
・Enable QAT: 有効


図5 モデルのトレーニング画面でパラメータを設定する

 設定が終わったら[START TRAINING]をクリックして学習を開始します.

●手順5…モデルの検証

 トレーニングが完了したら図6のように表示されます.[VALIDATE]をクリックしてモデルの検証を行います.


図6 トレーニング終了時の画面

 「Use Quantized Model」を有効して,[VALIDATE]をクリックして検証を開始します. 理想的には図検証が完了すると図7のような画面が表示されます. この画面では,AIモデルがどのくらいの確率で各ラベルをクラス分けできるかどうかを確認できますが,十分な精度が出ていません.必要に応じて再学習を実施します.


図7 Learning Rateを0.01にしたときの結果…十分な精度が出ていない

 学習時のLearning Rateの設定が0.01では十分な結果が得られないことが多いので,文献(2)を参考に最初から0.0001以上に設定すると,図8のように精度が向上しました.


図8 Learning Rateを0.0001にしたときの結果…認識精度が向上した

●手順6…モデルのエクスポート

 学習と検証を繰り返して十分な検証結果が得られたら,[DEPLOY]をクリックして出力設定画面に移ります(図9).Export File Typeを[TensorFlow Lite],[Export Quantized Model]を有効にして,[EXPORT MODEL]をクリックします.


図9 モデルのエクスポート画面

●手順7…モデルをテキスト・ファイルに変換

 作成したモデルをC/C++言語のプログラムに取り込めるように,テキスト・ファイルに変換します.
 eIQ ToolKitの最初の画面まで戻り,[MODEL TOOL]-[Open Model...]を選択し,先ほどエクスポートしたモデルを選択します.
 その後,メニューから[Convert]-[TensorFlow Lite for Neutron (.tflite)]を選択します.ここでで「Neutron target」に[mcxn94x]を選択し,「Conversion Options」を次のように設定して[Convert]をクリックします(図10).

dump-header-file; dump-header-file-input



図10 変換オプションの設定画面…ここではNPU用とCPU用の2つのAIモデルを生成する

 これで,AIモデルが生成されます(図11).生成されるのは,NPU用とCPU用の2つのC/C++言語のヘッダ・ファイルです.中身はリスト1のようになっています.ファイル名にconvertedが含まれているファイルがNPU用です.ここでは,次のファイル名にしました.

・eiq-project_HandsOn_flower_2112_converted.h(NPU用)
・eiq-project_HandsOn_flower_2112(CPU用)


図11 生成されたAIモデルの変換結果を表示した様子

static const unsigned char model_data[] __attribute__((aligned(16))) = {
  0x10, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x7e, 0x53, 0xf9, 0xff, 0x03, 0x00, 0x00, 0x00,
  0xb0, 0xb4, 0x06, 0x00, 0x6c, 0xac, 0x06, 0x00, 0x00, 0xac, 0x06, 0x00,
  0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0xab, 0x06, 0x00,
    :(省略)

リスト1 テキストに変換した後のAI モデル(一部抜粋)


* * *

 今回はeIQというツールを使って新たなモデルを作成しました.次回は,実際にマイコン上で今回作成したモデルを動かしてみます.

◆参考文献◆

(1) [入門]MCX N947:AI/ML画像認識サンプルコード実装 (日本語ブログ),NXP Tech Blog
(2) 中森 章;特集 第4部 第1章マイコンではじめるNPUプログラミング,Interface2025年6月号,CQ出版社.

本記事に記載されている社名,および製品名は,一般に開発メーカの登録商標,または商標です.



★マイコン基板がもらえる!メール・マガジン読者アンケート実施中★
FRDM基板プレゼント(計5名様) メール・マガジン「組み込みマイコン入門講座」読者アンケートにご協力ください
 2025年4月~配信しているメール・マガジン「組み込みマイコン入門講座」について読者アンケートにご協力をお願い致します.メール・マガジンのアーカイブはこちらでも確認できます.
 アンケートに回答頂いた方の中から抽選で5名様に,下記のいずれかのマイコン基板をプレゼント致します.
FRDM-MCXA153
FRDM-RW612
FRDM-MCXN947
 当選発表,および当選ボードの種類は,プレゼントの発送を持ってかえさせて頂きます.
アンケート・ページはこちら

・組み込みマイコン入門講座
-- https://interface.cqpub.co.jp/mcu-hands-on/

・登録内容の変更,メール・マガジン配信中止はこちらからお願いします.
-- https://cc.cqpub.co.jp/system/auth/


Interface 表紙

CQ出版社オフィシャルウェブサイトはこちらからどうぞ

CQ出版の雑誌・書籍のご購入は、ウェブショップで!


CQ出版社 新刊情報



別冊CQ ham radio QEX Japan No.57

巻頭企画 ベランダに設置したシンプルなHF帯3バンド垂直アンテナ

CQ ham radio 2025年12月号

現代版アマチュア無線の楽しみ方

POWER ELECTRONICSシリーズ

力率改善 PFCによるACパワーの有効活用技術

ボード・コンピュータ・シリーズ

Linuxコマンド&シェル・スクリプト入門

トライアルシリーズ

NanoVNA測定で電子回路マスタ