編集履歴一覧に戻る
Foopingのアイコン画像

Fooping が 2024年09月13日22時31分02秒 に編集

初版

タイトルの変更

+

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

タグの変更

+

SPRESENSE

メイン画像の変更

メイン画像が設定されました

記事種類の変更

+

セットアップや使用方法

本文の変更

+

本記事は[こちらの記事](https://elchika.com/article/36d2318e-f1a6-45ce-92c1-c1d168493275/)の続きです。 独自のデータセット作成について解説します。 ## データセットの作成 ### 学習用データの計測 - 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桁が通し番号です。 ![キャプションを入力できます](https://camo.elchika.com/3116470f18b26c52cb748e497de91e683eebb079/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34306535643335612d306636632d343334642d393230302d6562623231383562613066622f31663136643737302d643563632d343338332d393438312d303566643737366362316661/) ## アノテーション - 同じフォルダに```train.csv```と```valid.csv```を作成する。 - ファイルはx,yの2列で構成し、xに計測したcsvファイル名、yにラベル(=csvの最上位桁)を書き、学習するデータとラベルの組み合わせを定義する ![キャプションを入力できます](https://camo.elchika.com/616730aa50cebf1cf7acf4d8e63bcdcbdad52198/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34306535643335612d306636632d343334642d393230302d6562623231383562613066622f37333437646264332d666438312d346431372d613561322d336432316138663236623736/) ++csvはexcelやnumbers、googleスプレッドシートなどお好きなソフトで作成してください。++ ## Neural Network Consoleのインストール - SonyのNeural Network Console Windowsアプリ(以降、NNC)を[こちら](https://dl.sony.com/ja/app/)からダウンロード&インストールする。 ## NNCで学習の準備 - NNCを起動し、新規プロジェクトを作成、データセット>データセットを開く>データセットを開く をクリック - 先ほど作成したtrain.csvとvalid.csvを読み込む ![キャプションを入力できます](https://camo.elchika.com/4e1389b8f92b487306fc059788f42b3871f3528e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34306535643335612d306636632d343334642d393230302d6562623231383562613066622f65663266316361642d646532392d343734302d393032662d343934363730366361656666/) ## NNの作成 - CNN(Convolution Neural Network)を作成する - プロジェクト>新しいプロジェクトを開く で新しいプロジェクトを作成し、左側メニューから関数をドラッグ&ドロップして以下のように並べる。 - AffineのOutShapeはラベル数となるように設定する。(4つのラベルに分ける場合は4) ![キャプションを入力できます](https://camo.elchika.com/095c315409947223900a0a56bea25c41f25a5592/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34306535643335612d306636632d343334642d393230302d6562623231383562613066622f62396536386332342d643735372d343530372d616338322d613039346537373166643631/) ++[この記事](https://elchika.com/article/d9158fa1-8d54-4bfe-b589-b75af7f266e9/)とほぼ同じニューラルネットワークで構成・実現していることがお分かりいただけるかと思います。 詳しい内容は[こちら](https://www.youtube.com/watch?v=-9ESIYqzVrw)をご覧ください。++ - 上部のコンフィグをクリックしバッチサイズを16に変更します。 ![キャプションを入力できます](https://camo.elchika.com/8d362797bc1d9ed1974f49d3780b51e957f14fa1/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34306535643335612d306636632d343334642d393230302d6562623231383562613066622f32366335323232382d303561352d346165312d623665382d353961636366616234346434/) ## NNCで学習 - 編集>実行(右上の青いボタン)で学習を実行します。 ![キャプションを入力できます](https://camo.elchika.com/33e80730717ba3ed15b5c4703b8ed517ffac2990/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34306535643335612d306636632d343334642d393230302d6562623231383562613066622f63353165376437652d616137382d346266382d383964382d653634636539623636633836/) - 学習が始まると学習曲線が描かれ学習の様子を確認できる ![キャプションを入力できます](https://camo.elchika.com/a0944fc586b36b8c7e49ca6ce7eca55cc657841c/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34306535643335612d306636632d343334642d393230302d6562623231383562613066622f64316661356465322d636163352d346466612d393838382d643032356238376431623566/) - TrainingCompleted.が表示され、学習が完了したら評価を実行(右上の青ボタン) - 学習済のモデルでvalidation用のデータセットを使った評価が実行される - 評価が完了したら混同行列のラジオボタンをクリックし、Accuracyを確認する。 ++以下は1(=100%)と表示されている例です。![キャプションを入力できます](https://camo.elchika.com/c7fa7359c661bb868ca142452352ba4bb61664e6/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34306535643335612d306636632d343334642d393230302d6562623231383562613066622f34656530336262632d613563612d343061392d613438332d366137373230646438366131/)++ ++Accuracyの値が低い場合はCNNの設定や学習用のデータ数不足、カテゴリの分類ミスなどが考えられますので見直ししてみてください。++ - 評価結果が問題なければ、学習済モデルをエクスポートする - アクション>エクスポート>NNB(NNabla C Runtime file format)を選択 - model.nnbが出力される ![キャプションを入力できます](https://camo.elchika.com/36b95dc01ce93d55c70d2f711fbe31b0a0115abe/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34306535643335612d306636632d343334642d393230302d6562623231383562613066622f32373630313431632d636332302d343063332d613439312d666532663639626364383334/) - 出来上がったmodel.nnbをSDカードのルートフォルダに書き込む。