ドキュメントについて
Dataset
概要
3つのジェスチャーを7人から集めた。一連の動作から分割して作った模様。
ジェスチャーに該当しないものはnegativeとしてランダムに自動生成。
ダウンロード
中身について
ジェスチャごとにフォルダがあり、その下に人物ごとにテキストファイルがある。
テキストファイルを見た感じ、一回のジェスチャは-,-,-
で区切られる模様。
また、ジェスチャの長さは特に固定ではなさそう。
疑問:どうやって分割したんだろう
Press the RST button to start capturing a new gesture, then press Button 14 when it ends. New data will begin with a line "-,-,-".
動作確認
学習方法について
学習パターン
二つ学習のやり方がある。
- Random data split, which mixes different people's data together and randomly splits them into training, validation, and test sets
- Person data split, which splits the data by person
randomは学習のaccuracyはいいが、new dataのパフォーマンスが劣る。
personは逆
学習の実行方法
Random data splitの時
$ python data_prepare.py
$ python data_split.py
$ python train.py --model CNN --person false
Person data splitの時
$ python data_prepare.py
$ python data_split_person.py
$ python train.py --model CNN --person true
data_splitのpythonプログラムとtrain時のオプション引数に差がある。
また、--modelでは CNN
か LSTM
が選択できる。CNNの方がサイズ小さくてレイテンシも低い。
colabで実行
とりあえず動かす
cp: cannot stat 'tensorflow/tensorflow/lite/micro/examples/magic_wand/train': No such file or directory
まあ、そんなもん
原因と解決法
tensorflowのリポジトリから分かれているので、cloneするリポジトリを変更する。
!git clone --depth 1 -q https://github.com/tensorflow/tflite-micro.git
また、コピー元も変わるので
!cp -r tflite-micro/tensorflow/lite/micro/examples/magic_wand/train train
再実行
Load TensorBoardのところで、「No dashboards are active for the current data set.」と出るが、まだ学習してなく表示するものがないだけなのでスルー。
学習は5分かからず終わった。 TensorBoardは図のようになった。(後半のvalidationが気になるけど動かしたかっただけなのでスルー)
最後のセルが実行されると、
/content
に
model.cc
というファイルができる。
この中身を、
magic_wand_model_data.cppの
g_magic_wand_model_data
と
model_tflite_len
に移せばいい、はず。
学習データの収集
私はraspberry pi picoを使いたいので、独自でプログラムを組む必要がある。
そのために、重要そうなポイントだけ抜き出すと
- ジェスチャの開始時に
"-,-,-\r\n"
がある。
- 各フレームのジェスチャの値のフォーマットは、
("%04.2f,%04.2f,%04.2f\r\n", acceleration_mg[0], acceleration_mg[1], acceleration_mg[2])
である
- ジェスチャの開始と終了はボタンの押下で判断する
- outputのファイル名は、
output_{gesture_name}_{person_name}.txt
とする
この辺りを守れば学習用データになるだろう。
終わりに
今回は、magic wandを再学習するドキュメントの調査をした。
再学習時に自分のデータを使いたく、集め方の指針が立ったので、次は集めるためのプログラムを書くのに挑戦する。
また、モデルの構造も特にみていないので、そのうちそのあたりも確認したい。