Keras CNN Sound Classify #4

Keras CNN で 音の分類 #4。update 2020.4.20

ディープラーニングで音声分類 のサンプルが出ていたので、試してみましたの #4です。
変更
1) 学習データを、変更しました。 by nishi 2020.4.17
2) sound-predict3-mobile-v2.py で、4096Hz 以上をブーストしました。 by nishi 2020.4.19
3) 学習データ毎のエポック数を 5 → 4 に変更。 by nishi 2020.4.20

 Keras CNN Sound Classify
で、オリジナルができたので、同じ要領で、今度は、
Keras MobileNet V2 を使って、同じ学習データ、テストデータを使って試してみました。

開発環境
OS: Windwos10
GPU: GeForece GTX 1050 4GB
Anaconda
Python3.6
TensorFlow 1.14.0 GPU
Keras 2.3.1

注1) TensorFlow 1.14.0 を使っているのは、 K210 の YOLO v2 等で、
使っているので、他意はありません。
注2)  Keras は、オリジナルを使っています。
tensorflow.python.keras を敢えて使っていません。

手順は、上記ページに従って行いました。

1.今回のテストと学習用の クラス、スペクトラムデータを、npz で作成。
プログラムは下記になります。
オリジナルの学習データでは、val_acc が余り上がらないので、下記を参考に手を加えてみました。
音声認識におけるデータ拡張

load-dataset1.py 改 Ver3.2

2. 学習の実行
プログラムは、下記になります。

今回は、float16 を使います。
そうすれば、GPU 4GByte メモリーでもなんとか学習できます。

従前の学習データでは、1,685エポックほどで、val_acc=0.72 で、そこから余り進まなくなります。
更に学習をさせて、2,650エポックで、 val_acc=0.726 val_loss=1.3138
やはり、学習データが適切でないと、モデルの汎用性は向上しないようです。

注1) 今回、学習データを見直して、改めて学習させてみます。

同じ学習データで、InceptionV3 で学習させると、なんとか val_acc=0.83 になりした。
val_acc=0.83 を超えればかなり、正解が多くなるみたいですが、

今回は、
val_acc/loss=0.8180/0.9420  acc/loss=0.9573/0.6375  725 epoch  です。(2020.4.18)

注2) 1 学習データ毎のエポック数 = 5 → 4 に変更しました。(2020.4.20)
これで、val_acc の値が進みます。

train-mobile-v2.py  update 2020.4.20

2. モデルのアプリ
学習済みモデルを使った、PCのマイク入力による Sound Classify プログラムは、下記になります。

PCのスピーカから、ECS-50 のSound の音を出して、下記プログラムにPCのマイク経由で音を与えれば、クラスの分類が出来ます。

飛行機、ヘリコプターなどの、細かい音が一杯入っている音は苦手な、ような気がします。
今回のモデルのデータサイズは、float16 ですが、もしかして、float32 にすると改善するのか。

注) チョンボして、float16 の学習済モデルに、float32 のデータを与えて予測させていましたが、
それでも問題なく動作するみたいです。これは、どうゆうこと? どうやら、中でキャストされているのでは。

注2) PCのスピーカ経由で、マイクから ECS-50 の音を取り込むと、mel スペクトグラム上で、4096Hz 以上が減衰しているみたいです。
もっと高性能のスピーカが必要みたいです。
今回は、取り敢えず、melsp 上で、 4096 以上をブーストする処理を加えて回避しました。
melsp = heigh_boost(melsp)
これで大分、改善されます。

注3)  同じく、取り込んだ音を、mel スペクトグラム上で確認すると、全般的にホワイトノイズが入って
きています。どうやら、マイク と PC本体 が近いので、PCのファンの音を拾っているみたいです。
マイクに雑音を入れないことが肝要みたいです。→ 学習データに wn(white noise) はやはり、入れた方が良いみたいです。

sound-predict3-mobile-v2.py  (update 2020.4.19)

注) ちなみに、PCのスピーカから、ECS-50 のSound の音を出すのは、
sound-player.py を使います。
Keras CNN Sound Classify #2

感想としては、InceptionV3 の方が、良い結果が得られるみたいです。

このブログ記事について

このページは、おんちゃんが2020年3月23日 13:16に書いたブログ記事です。

ひとつ前のブログ記事は「Sipeed MAix Bit with MIC Maixduino(Arduino) で マイクのお試し #2」です。

次のブログ記事は「Keras CNN Sound Classify #5」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ