研究会で発表した論文のプログラム
- 好きなフォルダに録音したデータを保存
- cutlen.pyで1歩分の切り出し
- augment.pyでData augmentation
- 各種手法を用いて学習(hoge_train.py)
- 切り分けていたテストデータを使って評価(hoge_eval.py)
フォルダを作成し,その中にtestとtrainを切り分けて保存する
また,音源があるファイルの一つ上のフォルダはsubject毎にフォルダを作る
例としてファイル構成は以下
data/
├ test
├ subject1
└ hogehoge.wav
├ subject2
└ hogehoge.wav
├ train
├ subject1
└ hogehoge.wav
├ subject2
└ hogehoge.wav
python cutlen.py --wavdir ./data/train
これで自動的に生成する
python augment.py --wavdir ./data/train/split
前の処理でsplitフォルダが出来ているはず
splitフォルダには各個人の抽出済みの足音音声が保存されているので,それを参照する
これで,splitフォルダの中に以下のデータが保存される
(ここで,前回保存したnpzファイルがある場合上書きされずにpassされる為注意)
- esc_melsp_test.npz
-- validation用のデータ - nesc_melsp_train_raw.npz
-- 元のtraining用のデータ - esc_melsp_train_wn.npz -- white noizeを混ぜたaugmentationデータ
- esc_melsp_train_ss.npz
-- time shiftを行なったaugmentationデータ - esc_melsp_train_st.npz
-- time stretchingを行なったaugmentationデータ - esc_melsp_train_com.npz
-- 強度の違うwhite noizeを混ぜたデータに,ランダムでSS or STを更に行なったaugmentationデータ
以後の動作でわかりやすくする為に,以下を実行
(カレントディレクトリは.pyファイルがある場所)
- train内のkutusitaとslip内にあるsplitフォルダを"./data/kutusita/"と"data/slip/"に移動する
- 同様に,test内のkutusitaとslip内にあるsplitフォルダを"./testdata/kutusita/"と"testdata/slip/"に移動する
また,上記で生成したnpzファイルを以下にそれぞれ移動
- ./slip_npzdata/
- ./kutusita_npzdata/
今回検討する手法は以下の3つ
詳しい情報は論文を参照のこと
- CNNを用いた手法
- SVMを用いた手法
- NMF+SVMを用いた手法
それぞれのモデルを学習させる(これはcnnをaugmentationあり,靴下の音で学習させる場合)
この時,それぞれに対応するモデルを保存する為のディレクトリを作成しなければならない
python cnn_train.py --aug yes --type kutusita_npz_data/
それぞれのモデルを個別に評価するときは以下を実行
python cnn_eval.py --wavdir ./data --testdir ./testdata --aug yes --type kutusita -m ./hogehoge.hdf5
python svm_eval.py --wavdir ./data --testdir ./testdata --aug yes --type kutusita --nmf yes -m ./hogehoge.sav
また,一気に評価をしてその結果を表形式で書き出したいときは以下を実行 (プログラム内に読み出すモデルの場所を設定しなければならない)
python eval_allmodels.py --wavdir ./data --testdir ./testdata --type kutusita
各種モデルについてはここを参照のこと