技術コラム Vol.28

組込み環境で広がるNPU×AIを体験しよう!!

開発部 エンジニア / 高木

公開日:2025/07/18

技術コラム Vol.27「NXP i.MX RT クロスオーバーMCUの概要」では、NXP Semiconductors(以下、NXP)社のMPUを搭載したボード製品をご紹介しました。

なかでも「NX-N947」は、統合型eIQ Neutron Neural Processing Unit(NPU)を内蔵しAI機能を強化した「MCX N947」を搭載しており、エッジAI用途に適しています。NPUはAI処理に特化した回路構成のプロセッサで、データの並列処理を高速に実行できる点が特長です。

今回は、「NX-N947」を用いたAI機能およびソフトウェア開発環境の概要について解説します。

  1. 概要
  2. サンプルプログラムの紹介
  3. まとめ

1. 概要

(1)NPUの概要

NPUは、AIの推論処理を高速化するために設計されたプロセッサです。消費電力を抑え、ニューラルネットワークの処理を効率化することで、画像認識や言語処理などのAI処理の機能を向上させます。

<NPUの特長>

  • AIに特化したプロセッサ
    NPUはCPUやGPUなどと異なり、AI処理に特化した回路構成で、データの並列処理を高速に処理することを目的としたプロセッサです。
  • AI処理におけるCPU負荷を軽減
    AI処理を行う場合、CPUに多大な負荷がかかり、CPUが行う他の処理に対する処理能力が低下します。
    NPUは、大量の並列演算を効率的に処理すること可能で、AI処理におけるCPUの負担を軽減します。
  • 低消費電力
    従来のAI処理には多くの電力が必要でしたが、NPUは高効率な演算処理により、低消費電力でのAI処理が可能です。

(2)NX-N947の概要

NX-RT1021
NX-N947

NX-N947は、NXP社MCXシリーズ「MCX N947」を搭載したAI機能搭載汎用CPUボードです。MCX N947は最大周波数150MHzで動作するデュアル高性能Arm® Cortex®-M33と統合型eIQ Neutron Neural Processing Unit(NPU)を搭載しており、CPUコアのみの場合と比較して最大42倍の機械学習スループットを実現しています。

<NX-N947の特長>

  • NXP社製品「MCX N947」搭載
    ARM Cortex-M33 Dualコア 最大150MHz
    統合型eIQ Neutron Neural Processing Unit(NPU)
  • 大容量メモリを搭載
    内蔵FLASH 2MByte、内蔵RAM 512KByte、QSPI PSRAM 8MByte、QSPI FLASH 4MByte
  • 拡張性の高いインタフェース
    10/100base-T Ethernet、USB2.0 Host/Function、CANなど
  • オーディオ入出力を搭載
    8K~48Kサンプリングに対応するStereo Audio Codecを搭載
  • CAN通信用コネクタを装備
    CAN I/F(CAN FD対応)コネクタを2ch搭載
  • 対応OS
    FreeRTOS

2. サンプルプログラムの紹介

当社製CPUボード「NX-N947」では、AIを使用した画像分類のサンプルプログラムを提供しています。サンプルプログラムでは、NXPから提供されている学習データを使用して、ストップウォッチの画像ファイル(stopwatch.bmp)の画像分類を行い、画像分類の結果と解析にかかった時間を出力します。

学習データは、TensorFlow Liteを用いて作成されており、金魚、コーヒーポット、消防車など1000種類の画像分類が可能なため、ストップウォッチ以外の画像分類も行えます。

サンプルプログラムの処理イメージ
サンプルプログラムの処理のイメージ図

(1)サンプルプログラムの流れ

サンプルプログラムでは、下記の流れで画像を分類します。

処理の流れ

① データ変換
PC上でPythonスクリプトを使用し、BMP形式の画像(分類対象の入力画像)を128×128ピクセルのRGB888の画像に変換します。
変換した画像を1Byte長の配列変数としてC言語のヘッダファイル(入力画像データ)に変換します。

② 画像分類
NPUを使用し、入力画像データが学習データのどのカテゴリに該当するか分類します。

③ 結果の出力
画像分類の結果として、分類したカテゴリと分類にかかった時間をUARTから出力します。

(2)サンプルプログラムの手順

サンプルプログラムの画像を変換し、画像分類を行うまでの手順をご紹介します。

① サンプルプログラムの「python¥pic」フォルダへ分類する画像を保存します。
例として、サンプルプログラムで使用しているstopwatch.bmpを使用します。

② コマンドプロンプトを開き、カレントフォルダをサンプルプログラムの「python」フォルダへ移動します。

③ コマンドプロンプトにて「Python image_resize.py」と入力し、①の画像を「image_data1.h」に変換するため、Pythonスクリプト「image_resize.py」を実行します。
「Please enter the file path of the photo」に「pic/stopwatch.bmp」と入力し、「Please enter the image name of the photo」に任意の文字列を入力します。
「Please enter the image number of the photo」に1を入力します。

④ 変換が完了すると「Write complate」と表示され、「python¥result」に「image_data1.h」が生成されます。

⑤ 生成された「image_data1.h」を「source」フォルダにある同名ファイルを差し替えます。

⑥ サンプルプログラムを「Build」し、ダウンロード、実行します。
下記のように87%で、stopwatchと分類されます。

実行結果の例

他の画像を分類する場合には、①と③のstopwatch.bmpを分類する画像のファイル名に変更して、上記の手順を行ってください。分類のカテゴリは、サンプルプログラムのsource¥labels.h内の配列変数labelsを参照してください。

上記のサンプルプログラムの詳細については、「AN2306 NX-N947 AIサンプルプログラム解説」を公開しています。ご興味のある方は、ぜひご覧ください。

3. まとめ

今回は、「NX-N947」のNPUを使用したAI処理にて、高速に画像分類を行うサンプルプログラムついてご紹介いたしました。

サンプルプログラムのようにデバイス自体でAI処理をするため、ローカルで画像認識等の処理が可能です。そのため、クラウド等でAI処理を行う場合に発生するデータの送受信が不要となり、処理速度の向上が図れます。

ご紹介したサンプルプログラムとアプリケーションノートにより、簡単にNPUの動作を確認することができます。ご興味がございましたらぜひ当社のNX-N947をお試しください。

製品のご案内

本コラム以外にも開発にお役立ていただける技術情報をアプリケーションノートとして公開しております。
ご興味のある方は、ぜひ製品をご利用ください。

  • ※ArmおよびCortexは、米国および/またはその他の地域におけるArm Limited(またはその子会社)の登録商標です。
  • ※記載されている会社名、製品名は、各社の商標または登録商標です。
  • ※記載の内容は改良のため、予告なく変更する場合がございます。