工作と競馬2

電子工作、プログラミング、木工といった工作の記録記事、競馬に関する考察記事を掲載するブログ

Coral Edge TPU AcceleratorをまずはWindows PCとつないで動かす

概要

Coral Edge TPU Accelerator上で、Tensorflow Liteモデルが動かせた。



背景と目的

Coral Edge TPU Acceleratorをたまたまいじる機会ができた。とりあえず、手元のWindows PCと繋いで動かすこと自体には大してメリットはないのだが、ひとまずサンプルのモデルが動かせることを確認する。



詳細

0. 環境

  • Windows 11
  • Windows Subsystem for Linuxが有効
  • Python 3.7.7
  • numpy 1.20.0
  • edgetpu_runtime_20210119
  • USBハブ Buffalo BSH4U21U3を介してPCに接続

1. 関連ソフトインストール

coral.ai

上記によると、VC++ 2019再頒布可能パッケージと、edgetpu runtimeをまずは入れる必要があるらしい。

1.1 VC++ 2019再頒布可能パッケージ

learn.microsoft.com

インストーラをたたく。PC再起動が必要。

1.2 edgetpu runtime

edgetpu runtimeは、バージョンがいろいろあるが自分の環境に合うものを選ばないといけないらしく、後述のサンプルコード実行の際、

ValueError: Failed to load delegate from edgetpu.dll

と出てしまうため、いろいろ試し結局私の環境では、

coral.ai

から、edgetpu_runtime_20210119.zipを使用することになった。 解凍後、install.batを実行する。クロック周波数を最大に設定するか聞かれるので、Nを選択。(Yを選択してもよいが、アクセラレータが非常に熱くなるため必要に応じて)

デバイスドライバーがインストールされ、デバイスが認識されるようになった。

1.3 numpyのアップデート

私の環境は、最初numpyのバージョンが1.19.5で、後述のサンプルコード実行の際に

RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd

と出てしまったためを1.20以上にアップデートが必要だった。


2. PyCocalのインストール

pip install --extra-index-url https://google-coral.github.io/py-repo/ pycoral

なお、pip install pycoralではだめ。サンプルを動かすときに、

ModuleNotFoundError: No module named 'pycoral.adapters'

と出てしまう。

https://stackoverflow.com/questions/67807906/installing-coral-edge-tpu-software-gives-me-modulenotfounderror-no-module-name


3. サンプルのモデルを動かす

以下、デスクトップで作業。

3.1 サンプルコードとモデルをダウンロード

まず、gitから以下をclone。

mkdir coral
cd coral
git clone https://github.com/google-coral/pycoral.git
cd pycoral

次に、モデルをダウンロードする。私の環境では、Windows Subsystem for Linuxが有効になっているので、コマンドプロンプトでも以下が実行できた。

bash examples/install_requirements.sh classify_image.py

3.2 実行する

python3 examples/classify_image.py --model test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels test_data/inat_bird_labels.txt --input test_data/parrot.jpg

実行したところ、以下の表示が出てうまく動いた。 1回目は少し遅く、2回目以降はほぼ安定して速い。他の環境と比較してないのでよくわからないが、MobileNet v2が数msecで実行できるということがわかった。 参考サイトの速度と比べてやや遅いが、USBハブを使っているからだろうか?

----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
14.8ms
4.5ms
4.5ms
4.4ms
4.4ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.75781



まとめと今後の課題

Coral Edge TPU Accelerator上で、Tensorflow Liteモデルが動かせた。とりあえず、サンプルが動かせただけなので、次は別のものを動かしてみたい。