Keras CNN で 音の分類 #7
ディープラーニングで音声分類 のサンプルが出ていたので、試してみましたの #7です。
前回の #6 に続いて、Inception V3 学習済モデルを Tensorflow Lite に変換して、Coral Edge TPU USB で使えるように、
Quantization 化を試してみました。
開発環境
OS: Windwos10
GPU: GeForece GTX 1070 8GB
Anaconda
Python3.6
TensorFlow 1.15.0 GPU
Keras 2.3.1
注1) 今回は、TensorFlow 1.15.0 を使いました。
TensorFlow 1.14.0 では、Tensoflow Liteへの変換が上手く行きませんでした。
また、こちらの方が、Tensorflow Lite の実行速度が速いきがします。
注2) Keras は、オリジナルを使っています。
tensorflow.python.keras を敢えて使っていません。
参考は、下記ページをさせて頂きました。
nb.oの日記:Edge TPUで独自モデルを作る(その2)
https://coral.ai/docs/edgetpu/models-intro/#quantization
→ Retrain a classification model using post-training quantization (for TensorFlow 1 and 2)
概要:
「8-bit 量子化モデル」 への量子化には2つの方法があるとの事です。
1. Quantization-aware training
学習時に、指定して量子化をする。 TensorFlow 1.X のみみたいです。
tflite-convert コマンドを使う場合は、こちらを行わないと、predict がまるっきり当たりません。
2. Post-training quantization
モデルの学習後に量子化の変換をします。 TensoorFlow 2.X、Keras ではこちらになるとの事です。
こちらは、Python Script で行います。その場合に、学習時に使ったデータを読み込ませないと
いけないとの事です。今回は、Keras からなので、こちらを使います。
3.先ず、Tensorflow Lite 向けに学習済モデルを、変換します。
1) 学習データは、'esc_melsp_train_raw.npz' を使います。
2) converter.experimental_new_converter = True は、指定してはいけません。
edgetpu_compiler で、エラーになります。
h5toTFx.py
これは、おんちゃんは、Ubuntu Mate で行いました。
tpu ディレクリーは、予め作成しておきます。
5. 次に、今回の、Coral Edge TPU での、マイク入力での判定プログラムです。
おんちゃんは、Coral Edge TPU USB を今回のために購入して、使いました。
Windows10 と、Raspberrypi 3B+(Buster) でそれぞれ試しましたが、
Keras での実行と同じように、当たります。
スピードは、
Windows10 / USB3.0 : 60 ms 位
RaspberryPi 3B+ / USB2.0 : 600ms 位
Raspi の方は、USB2.0 がネックのようですが、体感は、600ms より、結構速く感じます。
音の判定の実用には使えそうです。
sound-predict3-tflite-tpu.py
余談ですが、Coral Edge TPU USB は、マウザーで購入しました。
注文して、決済してから、3日位でも届きました。結構早かったし、値段も、 7,655円 と安かったです。