Foopingのアイコン画像
Fooping 2024年09月13日作成
セットアップや使用方法 セットアップや使用方法 閲覧数 345
Fooping 2024年09月13日作成 セットアップや使用方法 セットアップや使用方法 閲覧数 345

SPRESENSE で作る魔法の杖(データセット作成〜学習編)

SPRESENSE で作る魔法の杖(データセット作成〜学習編)

本記事はこちらの記事の続きです。
独自のデータセット作成について解説します。

データセットの作成

学習用データの計測

  • ArduinoのシリアルモニタでrでリセットしてからSPRESENSEを振り、pで軌跡がシリアルモニタに表示される。
  • rでリセットして、SPRESENSEを振り、sを押すとデータがcsv形式で保存される。
  • 100回ほど上記を繰り返し同じ振り方(例えば8の字)をしてデータを蓄積する。
  • lで次のラベルに移る(ファイル名のラベル項が変わる)
  • 異なる振り方(例えば丸)を再び100回ほど繰り返す。
  • データ収集を終えたら、SDカードからcsvを取り出す。

杖軌跡の通過箇所を1,非通過箇所を0とし、28行、28列のcsvで保存します。

SDカードをパソコンで読み込んでも良いですが、Spresense拡張ボードに実装されているマイクロusbコネクタへ接続するとUSB機器として認識しデータへアクセスすることができ便利です。

データは4桁の数値で構成され、最上位桁がラベル、下位3桁が通し番号です。
キャプションを入力できます

アノテーション

  • 同じフォルダにtrain.csvvalid.csvを作成する。
  • ファイルはx,yの2列で構成し、xに計測したcsvファイル名、yにラベル(=csvの最上位桁)を書き、学習するデータとラベルの組み合わせを定義する

キャプションを入力できます
csvはexcelやnumbers、googleスプレッドシートなどお好きなソフトで作成してください。

Neural Network Consoleのインストール

  • SonyのNeural Network Console Windowsアプリ(以降、NNC)をこちらからダウンロード&インストールする。

NNCで学習の準備

  • NNCを起動し、新規プロジェクトを作成、データセット>データセットを開く>データセットを開く をクリック
  • 先ほど作成したtrain.csvとvalid.csvを読み込む

キャプションを入力できます

NNの作成

  • CNN(Convolution Neural Network)を作成する
  • プロジェクト>新しいプロジェクトを開く で新しいプロジェクトを作成し、左側メニューから関数をドラッグ&ドロップして以下のように並べる。
  • AffineのOutShapeはラベル数となるように設定する。(4つのラベルに分ける場合は4)

キャプションを入力できます

この記事とほぼ同じニューラルネットワークで構成・実現していることがお分かりいただけるかと思います。
詳しい内容はこちらをご覧ください。

  • 上部のコンフィグをクリックしバッチサイズを16に変更します。
    キャプションを入力できます

NNCで学習

  • 編集>実行(右上の青いボタン)で学習を実行します。

キャプションを入力できます

  • 学習が始まると学習曲線が描かれ学習の様子を確認できる

キャプションを入力できます

  • TrainingCompleted.が表示され、学習が完了したら評価を実行(右上の青ボタン)
  • 学習済のモデルでvalidation用のデータセットを使った評価が実行される
  • 評価が完了したら混同行列のラジオボタンをクリックし、Accuracyを確認する。

以下は1(=100%)と表示されている例です。キャプションを入力できます

Accuracyの値が低い場合はCNNの設定や学習用のデータ数不足、カテゴリの分類ミスなどが考えられますので見直ししてみてください。

  • 評価結果が問題なければ、学習済モデルをエクスポートする

  • アクション>エクスポート>NNB(NNabla C Runtime file format)を選択

  • model.nnbが出力される
    キャプションを入力できます

  • 出来上がったmodel.nnbをSDカードのルートフォルダに書き込む。

Foopingのアイコン画像
愛知県のちくわ好きなエンジニア
  • Fooping さんが 2024/09/13 に 編集 をしました。 (メッセージ: 初版)
ログインしてコメントを投稿する