LoginSignup
0
2

More than 3 years have passed since last update.

ラズパイ上でEdge TPU動作

Last updated at Posted at 2019-10-16

ラズパイでedge tpu上で実行までの流れを整理。

  1. 学習してモデル作成する(kerasの場合hoge.h5)
  2. hoge.h5をtfliteへ変換する
  3. 変換したtfliteをedgetpu向けにコンパイルする
  4. エッジ上で推論する

が必要。

学習してモデル作成する

Kerasでモデルを作成する。詳細は割愛するがMobileNetv2でモデルを作成。

h5モデルをtfliteへ変換する

ポイントはuint8に量子化する必要がある。

参考: https://qiita.com/iwatake2222/items/6aeab468c326ecc21563

$ tflite_convert \
  --output_file=best_mobilenetv2_2.tflite \
  --keras_model_file=best_mobilenetv2.h5 \
  --inference_type=QUANTIZED_UINT8 \
  --default_ranges_min=0 \
  --default_ranges_max=255 \
  --mean_values=128 \
  --std_dev_values=127

なんとか変換はできたが、動作がおかしい。
こちらを参考にコードで変換を行ってみる
https://qiita.com/jdk/items/f2bccaecd4827cf3977b

変換したtfliteをedgetpu向けにコンパイルする

  • 公式通りにコンパイラをダウンロードする
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add 
$ echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
$ sudo apt-get update
$ sudo apt-get install edgetpu
  • コンパイル実行
$ edgetpu_compiler "tfliteモデル"

完了したらデフォルトでは"xxxxx_edgetpu.tpu"というファイルが出来ている

エッジ上で推論する

推論はこちらを参考に
https://qiita.com/PINTO/items/dd6ba67643bdd3a0e595

直列でもかなりの速度だけど並列処理することで高速化出来る
その他EdgeTPU上のメモリに乗るようにモデルサイズを意識することでより高速化可能

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2