Keras CNN Sound Classify #7

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

4. 次に edgetpu_compiler で、コンパイルします。
これは、おんちゃんは、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円 と安かったです。

このブログ記事について

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

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

次のブログ記事は「Keras YOLO v3 学習済モデルを、Tensorflow Lite に変換して動かす。」です。

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

カテゴリ

ウェブページ

サイトナビ