【内容】
過去にWindowsで擬似的にEdgeTPUを使う記事を投稿しましたが、Coralの公式のEdgeTPUの導入手順にWindows版が追加されていたので試してみました。
下記の公式手順を踏襲していますが、一部そのままでは実行できないので手を入れています。
【Get started with the USB Accelerator On Windows - Coral】
【Requirements】
- Windows10 64bit
- python3.7 + pip
- git コマンド
【必要モジュールのダウンロード & インストール】
公式手順に従い以下のURLよりダウンロードします。
【 download edgetpu_runtime_20200128.zip - Coral】
今回、このファイルが追加されたことで正式にWindowsからEdgeTPUにアクセスできるようになりました。
ダウンロードしたモジュールを解凍すると以下のようになっています。
解凍したファイルの中の install.bat
を管理者権限で実行します。
すると、お決まりの最大周波数で実行するかどうかを聞いてきますので y
または n
を入力して先に進みます。
先に進むと「UsbDk」のインストールが開始されます。
(UsbDKのインストール中はUSBマウスなどが効かなくなります)
続いて「EdgeTPUのドライバ」をインストールします。
下記画面で「インストール」をクリックしてください。
以上でセットアップ完了です。
【デバイスの確認】
上記が完了したら、EdgeTPUをUSBコネクタに接続してみます。
うまくいっている場合はデバイスマネージャにて以下のように「Coral USB Accelerator」が認識されていることが確認できます。
【TensorFlow Liteのインストール】
続いてTensorFlow Liteをインストールします。
インストール用のパッケージのURLは以下を参照して、環境に応じて変更してください。
【TensorFlow Lite Python quickstart】
本例の場合、「Windows10」で「Python3.7」ですので以下のようになります。
pip install https://dl.google.com/coral/python/tflite_runtime-2.1.0-cp37-cp37m-win_amd64.whl
【サンプルプログラムの実行】
まずは、下記コマンドを実行してサンプルプログラム用のリポジトリをクローンします。
なお、以降の操作は 「PowerShell」 を用いて実行することを想定していますが、途中の wget
コマンドを使いたいだけですので、それ以外はコマンドプロンプトからでも実行可能です。
cd (適当なフォルダ)
git clone https://github.com/google-coral/tflite.git
Linux環境ではクローンしたリポジトリのtflite/python/examples/classification
内の install_requirements.sh
を実行すれば必要な環境ができあがりますがWindowsでは実行不能です。
そこで、以下のコマンドを実行して手動で環境を整えます。
まずはサンプルプログラムの依存モジュールをインストールします。
# 依存モジュールのインストール
pip install numpy Pillow
続いてモデルやラベルなど、必要なファイルをダウンロードします。
PowerShellでは wget
コマンドを利用してファイルをダウンロードすることが可能です。
cd tflite/python/examples/classification
# モデルのDL
wget https://github.com/google-coral/edgetpu/raw/master/test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite -O mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite
# ラベルのDL
wget https://github.com/google-coral/edgetpu/raw/master/test_data/inat_bird_labels.txt -O inat_bird_labels.txt
# 推論用の画像のDL
wget https://github.com/google-coral/edgetpu/raw/master/test_data/parrot.jpg -O parrot.jpg
上記が完了したら、サンプルプログラムを動かして推論をしてみます。
python .\classify_image.py --model mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels inat_bird_labels.txt --input parrot.jpg
下記のような結果が表示されたら正常に動いています。
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
12.5ms
4.4ms
3.5ms
4.1ms
4.3ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.76562
【EdgeTPUのPython APIのインストール】 (2020/02/03 追記)
続いてPython APIをインストールします。
インストール用のwhlファイルは以下に置いてあります。
【Edge TPU Python API for Mac and Windows 】
本例の場合、「Windows10」で「Python3.7」ですので以下のようになります。
pip install https://dl.google.com/coral/edgetpu_api/edgetpu-2.13.0-cp37-cp37m-win_amd64.whl
インストールが完了したら、バージョンを確認してみます。
2020/02/03時点では 2.13.0
になります。
python -c "import edgetpu;print(edgetpu.__version__)"
2.13.0
続いてPCが認識しているEdgeTPUを確認してみます。
以下のコマンドを実行すると、接続中のEdgeTPUが返ってきます。
python -c "from edgetpu.basic import edgetpu_utils;print(edgetpu_utils.ListEdgeTpuPaths(edgetpu_utils.EDGE_TPU_STATE_UNASSIGNED))"
下記例では3つのEdgeTPUを認識しています。
('/sys/bus/usb/devices/1-13', '/sys/bus/usb/devices/1-3', '/sys/bus/usb/devices/1-14')
【最後に】
とりあえず、正式にWinodws環境でEdgeTPUを使うことが出来るようになりました。
これでLinuxなどで稼働するEdgeデバイスにアレルギーのあるおじさん達を丸め込めるようになります。
もっともWindows端末でわざわざEdgeTPUを使うメリットがあるのか? という疑問は残りますが…