NNC+Spresenseでiris(アヤメ)の分類

導入

Spresenseでのニューラルネットワーク推論を試してみました。 Spresenseはカメラモジュールが優秀なこともあり、画像分類の記事が多かったため、非画像データを入力としたニューラルネットワーク動作の備忘録として記録します。

NNC(Neural Network Console)での学習

学習データをCSVで用意します。 入力を"xi"、出力を"yi"の形で各列にまとめます。 今回の出力は分類ラベルで1次元なので、インデックスなしの"y"で用意しています。

x__0,x__1,x__2,x__3,y
5.0,3.2,1.2,0.2,0
5.5,3.5,1.3,0.2,0
...

NNCで以下の図のように、4入力1出力のネットワークを作成します。

今回作成したネットワーク

その後、実行を押して学習と評価を行います。

学習結果
評価結果(混合行列)

良いモデルができたら、学習結果を右クリックしてnnbファイルをエクスポートし、SDカードに保存します。

Spresenseでの実装

Spresenseの拡張ボードに、nnbファイルの入ったSDカードを挿入し、以下のプログラムを書き込みます。 ここでは、小数データを空白区切りでシリアル入力することで、結果をシリアル出力するようにしました。

以下のように動作することが確認できました。

実行の様子