Keras CNN Sound Classify #3

Keras CNN で 音の分類 #3。

ディープラーニングで音声分類 のサンプルが出ていたので、試してみました。

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

開発環境
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. 学習の実行
プログラムは、かきになります。
tarin-mobile.py

2. 学習の結果
90 epoch まで学習させましたが、
1 epoch 120[sec] なので、直ぐに終わります。
tennsorboard で確認すると、50 epoch でMAX みたいです。

3. 検証プログラム
ESC-50 のmeta/esc50.csv を読み込んで、
実際の音を、ヘッドホーンで確認しながら確認してみました。

プログラムは、下記になります。
sound-predict-mobile.py

4. 検証の結果
最後の、2件の結果だけ示します。
学習とテストデータがごちゃ混ぜなので、結果として
学習時の正解率となりました。
正解率: 0.95

5.結論
ESC-50 の WAV はS/N 比ががよくて、クリアーな音で、旨く録音されているので
結構、良い結果が得られたと思います。

これが、PCのマイクからだと、かなり音が悪いので、同じ様な結果は得られません。
PCのマイク音のノイズやダイナミックレンジを改善するか、
PCのマイク音に近い音質の学習データも加えてやれれば、かなり良くなるのではと思います。

注) この点に関しては、Keras CNN Sound Classify #2 で ESC-50 の WAV音を、スピーカー出力 > マイク入力
での評価テストの中で、高音域の消失(減衰) が問題だと言う事判ったので、そちらを参考にしてください。
つまり、アプリケーションプログラムの実装の問題。

この後、MobileNet V2 も同じように試してみましたが、
こちらは、GTX1050 の 4GB では、役不足です。
8GBの GPU が買えたら、再チャレンジしてみたいと思もっちょります。
注) float16 を使うと、GTX1050 でも学習できるようなので、今試しちょります。(2010.2.7 by おんちゃん)

6.その後
1) コンデンサーマイクが、音がクリアーだと言う事なので、早速、安いコンデンサーマイクを
購入して試してみます。

2) 当初、K210(Sipeed MAIX BiT) で、このMobileNet 版 sound-classify を動かそうかと思っていましたが、
その前に、Coral USB TPU Accelerator(EdgeTPU) + Raspberry PI 3B+ が簡単に
出来そうなので、Ubuntu PC + Coral USB TPU Accelerator(EdgeTPU) で先に試して見ようか
と考えちょります。

このブログ記事について

このページは、おんちゃんが2020年1月29日 12:24に書いたブログ記事です。

ひとつ前のブログ記事は「Keras CNN Sound Classify #2」です。

次のブログ記事は「Sipeed MAix MaixPy で FFT と マイク入力の確認」です。

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

カテゴリ

ウェブページ

サイトナビ