0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Spresense (2) ライブカメラ +数字認識AI (Arduino IDE + Processing on Win11)

Last updated at Posted at 2025-10-30

Spresense (1) の続きです。

前回の記事の url は以下です。
https://qiita.com/tech888/items/48da99985efb3112fc7b

ライブカメラ構築まで

Processing のインストール

以下のサイトで ダウンロード、インストールを済ませておく。
https://processing.org/

USBSerial の準備

baggio63446333 さんの USBSerial を使います。以下にアクセス。
https://github.com/baggio63446333/USBSerial
緑色の 「<> Code ▼」をクリックして出てくる Download ZIP をクリックすると、
USBSerial-master.zip がダウンロード フォルダに格納される
Arduino IDE で、スケッチ → ライブラリをインクルード → .ZIP形式のライブラリをインストールで 上記のZIPファイルを指定する。

Spresense-Playground の準備

TomonobuHayakawaさんの Spresense-Playground を利用します。以下にアクセス。
https://github.com/TomonobuHayakawa/Spresense-Playground
緑色の 「<> Code ▼」をクリックして出てくる Download ZIP をクリックすると、
Spresense-Playgraound-master.zip がダウンロード フォルダに格納されるので、好きな場所に展開する。

Arduino IDE を開く

  1. 展開したフォルダの中の IntegrationWithProcessing → LiveCamera → viaUSBSerial → Spresense → Spresense.ino をクリックし、Arduino IDE で開く
  2. 以下の行をコメントアウト(先頭に // 追加)して、VGAの行の // を削除し、メインボードに書き込む( HDの場合、PCのスペックによっては画像転送時に遅延が生じるため)
    int16_t width = CAM_IMGSIZE_HD_H, height = CAM_IMGSIZE_HD_V;
  3. USBケーブルをメインボードから拡張ボードにつなぎ替える
  4. メインボードの4つあるLEDのうち端から2番目のLEDが点滅するのを確認する(つなぎ変えてから、点滅が始まる)
  5. COMポート番号が変化しているので、デバイスマネージャーで確認する 

Processing を開く

  1. 展開したフォルダの中の IntegrationWithProcessing → LiveCame → viaUSBSerial → Processing → Processing.pde をクリックし、Processing で開く
  2. 8行目の COMポートを自分の環境に修正する (COM10 を COM6 などに変更)
      final String SERIAL_PORTNAME = "COM10";
  3. void setup() の以下の HD の行をコメントアウトし、VGA の行の // を削除する
     size(1280, 720); // HD
  4. (▶)をクリックして実行すると、ウィンドウが開きカメラ画像がリアルタイムで表示される(はず)。
  5. HD から VGAに画素数を落としたのは、PCの性能によっては遅延が生じるためです。

注意

メインボードが拡張ボードに深く挿さっていないと、うまく動きません。おかしいなと思ったら、強く上から押してみましょう。

数字認識AI

画像データの準備

  1. 学習用数字画像を準備する。以下のURLで、「RAW」のところをクリックしてZIPファイルをダウンロードして展開しする。できた number フォルダの下に、id_train.zip と id_valid.zip があるので、この二つも展開する。
    https://github.com/TE-YoshinoriOota/Spresense-LowPower-EdgeAI/blob/main/Chap04/nnc_dataset/number.zip
  2. id_tarin.zip から id_train フォルダができ、この中に フォルダー群(0,1,2,...9,a)と id_train.csv があることを確認する。
  3. id_valid.zip から id_valid フォルダができ、この中に フォルダー群(0,1,2,...9,a)と id_valid.csv があることを確認する。

AI学習構築用情報の準備

  1. 後でインストールするソフト NNC(Neural-Network Console・・・)で使うファイルを準備する。以下のURLで、「RAW」のところをクリックしてダウンロードする。この number_recognition.sdcproj はテキストファイルで、圧縮はかかっていません。
    https://github.com/TE-YoshinoriOota/Spresense-LowPower-EdgeAI/blob/main/Chap04/nnc_project/number_recognition.sdcproj

NNC のインストール

NNC(Neural-Network Console)は、ドロップダウンでAI学習ができるSONYの便利ツールをインストールします。入口のURLは以下です。
https://github.com/sony/neural-network-console/tree/main/document/ja
そこから、インストールのURLへ移ります。neural_network_console_350.7z をダウンロードして、展開します。フォルダーをたどっていくと、neural_network_console.exe があるので、これを起動します。
https://github.com/sony/neural-network-console/releases

NNC での学習

  1. データセットを読み込む
     起動画面の左端の上から2段目の「データセット」をクリックし、上段に出てきた「データセットを開く」で、id_train.csv と id_valid.csv を一つずつ選択しておく。
  2. NNCのプロジェクトを読み込む
     起動画面の左端の上から1段目の「プロジェクト」をクリックし、上段に出てきた「プロジェクトを開く」で、number_recognition.sdcproj を選択しておく。すると、畳み込み(C)、Maxpooling(M)、Relu(R)、全結合層(Affine)、Softmax関数(S)などのブロックの積み木が現れる。
  3. ここで、画面一番上で右側の「データセット」をクリックする(起動画面の左端のものとは別物)と、左端に Training と Validation がでてくる。
  4. Training をクリックした後、右上の「データセット」の下の □↗ をクリックする。表示されたリストから id_train.csv を選択する。画像が表示されるのを確認する。ここで、「Image Normalization (1.0/255.0)」にチェックをいれること。
  5. Validation をクリックした後、右上の「データセット」の下の □↗ をクリックする。表示されたリストから id_valid.csv を選択する。画像が表示されるのを確認する。ここで、「Image Normalization (1.0/255.0)」にチェックをいれること。
  6. 左上の「編集」をクリックし、右上の「実行」をクリックすると学習が始まる。Cost、Trainig Error、Validation Error がエポック数に対してプロットされる。
  7. 左上の「編集」から隣の「学習」に自動的に移動しているのを確認し、右上の「実行をクリック」する。
    ラジオボタンで出力結果、混同行列の表示を切り替えることができる。
  8. 左上の「学習」から隣の「評価」に自動的に移動しているのを確認し、「評価」の下の「アクション」をクリックする。出てきたメニューから、「エクスポート」⇒「NNB(NNabra C Runtime file format)」を選択すると、自動的に学習モデルが保存される。
  9. そのなかたの model.nnb を number.nnb にリネームして、マイクロSDカードのルートに保存し、拡張ボードに挿しておく。

Spresenseでカメラ画像を判定する

Arduino を開く

  1. すでに展開済みの Spresense-Playgraound-master → IntegrationWithProcessing → AiCamera → viaUSBSerial → Spresense → Spresense.ino をクリックし、Arduino IDE で開く
  2. 以下の行をコメントアウト(先頭に // 追加)して、VGAの行の // を削除し、メインボードに書き込む( HDの場合、PCのスペックによっては画像転送時に遅延が生じるため)
    int16_t width = CAM_IMGSIZE_HD_H, height = CAM_IMGSIZE_HD_V;
  3. USBケーブルをメインボードから拡張ボードにつなぎ替える

Processing を開く

  1. 展開したフォルダの中の IntegrationWithProcessing → AiCamera → viaUSBSerial → Processing → Processing.pde をクリックし、Processing で開く
  2. 8行目の COMポートを自分の環境に修正する (COM10 を COM6 などに変更)
      8行目 final String SERIAL_PORTNAME = "COM10";
  3. void setup() の以下の HD の行をコメントアウトし、VGA の行の // を削除する
     size(1280, 720); // HD
  4. (▶)をクリックして実行すると、ウィンドウが開き、カメラ画像がリアルタイムで表示される。
  5. PC画面に映る赤枠の中に数字が映るように、カメラの位置を移動すると、赤枠右上に判定した数字とその確率が表示される。
  6. PCの性能によっては、遅延が発生する場合もあります。

謝辞

 ハンズオン講習会で大変お世話になり、Qiita記事の掲載をご了承して頂いた講師の方、ハンズオンを開催していただいたCQ出版株式会の皆様に感謝申し上げます。

参考URL

https://github.com/baggio63446333/USBSerial
https://github.com/TomonobuHayakawa/Spresense-Playground
https://github.com/TE-YoshinoriOota/Spresense-LowPower-EdgeAI/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?