【目的】
Coral USB TPU Accelerator(Edge TPU)をWindows端末で使えるようにします。
(写真のCoralの山は…)
【内容】
Googleが開発したEdge TPU (Tensor Processing Unit)は現時点ではUbuntuおよびRaspbian(ラズパイのOS )などDebianベースのOSでの動作のみ保証されています。
これを、なんとかWindows端末で動かそうという試みです。
【WSLで使ってみる】(前置き)
WindowsでUbuntuといって真っ先に思いつくのは、Windows 10 1607から使えるようになった「Windows Subsystem for Linux (WSL)」を使う方法です。
WSLの使い方は下記記事を参照してください。
【Windowsで環境を極力汚さずにPythonを動かす方法 (WSL利用 Windows10, version 1607以降限定)】
インストールできたら早速Ubuntuを起動して、必要モジュールをインストールしてみます。
cd ~/
wget https://dl.google.com/coral/edgetpu_api/edgetpu_api_latest.tar.gz -O edgetpu_api.tar.gz --trust-server-names
tar xzf edgetpu_api.tar.gz
cd edgetpu_api
bash ./install.sh
Your platform is not supported.
「あなたのプラットフォームではサポートされてません」と言われてしまいました。
もっともここをクリアしてもWSLは現時点ではUSBデバイスを認識しないので、無理なのはわかってましたが…
【VirtuaBoxで使ってみる】(本題)
VirtualBoxとはx86仮想化ソフトの一つで、現在はOracle社が管理しています。
特徴としてはWindows10に標準で搭載されている仮想化ソフト「Hyper-V」とは異なり、USBデバイスを認識できるというところです。
これは期待できます。
利用経験はありませんでしたが、試しに使ってみました。
【VirtuaBoxのインストール】
インストール自体は簡単です。
公式HPからダウンロードしてきてインストールするのみです。
一点気をつける点として、インストール後に「Oracle VM VirtualBox Extension Pack」を追加で適用する必要があります。(これを行わないと仮想環境内でUSB2および3が利用できません)
こちらも上記のサイトからダウンロードできるので、ダウンロードしたものをダブルクリックすると適用が開始されます。
【仮想マシン(VM)の作成】
ubuntuをインストールするためのVMを作成します。
スペックなどは適当でいいです。
今回は4CPU、4GBメモリ、40GBストレージで作成しました。
【USBデバイスフィルタの作成】
VM作成後、「設定」>「USB」から、右端の「+」がついているアイコンをクリックし「Global Unichip Corp. [0100]」を選択します。
この操作を2回繰り返し、USBデバイスフィルタを2つ作ります。
そのうちの一つをダブルクリックで設定画面を開いて、以下の内容に変更します。
以下のようになれば設定完了です。
「USB コントローラを有効化」にチェックが付いていることを確認し、「USB 3.0(xHCI)コントローラー」を選択しておきましょう。
【Ubuntu18.04 LTSのインストール】
上記で作ったVMにUbuntuをインストールします。
今回は安定版の「18.04 LTS」を使いました。
インストール方法は省きますが、インストーラーのisoイメージをダウンロードし、VMにマウントした状態でVMを起動するとインストールが始まるので、指示に従うだけです。
【動作確認】
インストールが完了しUbuntuが起動したら、デスクトップ上を右クリックして「端末を開く」を実行するとターミナル画面が開きます。
まずは下記コマンドでアップデートを行います。
インストール時のオプションによっては勝手にアプデートが動きますので、処理が完了するまで待ちましょう。
sudo apt update
sudo apt upgrade
次にEdge TPUが認識されているか確認します。
lsusb
下記のように「Bus 002 Device 002: ID 18d1:9302 Google Inc. 」のような表示が出ていれば成功です。
Bus 002 Device 002: ID 18d1:9302 Google Inc.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
表示されていない場合はEdge TPUを抜き差ししてみるか、一旦VMの電源を落としてからVMの設定からUSBデバイスフィルタの設定を確認してみましょう。
【Edge TPU用のモジュールのインストールと動作確認】
基本的には下記の記事を踏襲します。
【Coral USB TPU Accelerator(EdgeTPU)をとりあえず使う (Quick Start)】
ただし、以下の2点が異なります。
- ubuntuを日本語でセットアップした場合は【3. サンプルモデルを使って推論を行う】の最初に
mkdir ~/Downloads/
を実行する
(もしくはDownloads
の部分をすべてダウンロード
に置き換える) -
cd /usr/local/lib/python3.5/dist-packages/edgetpu/demo
のpython3.5
の部分をpython3.6
に置き換える
実際に動かした結果は以下のとおりです。
python3 classify_image.py \
--model ~/Downloads/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
--label ~/Downloads/inat_bird_labels.txt \
--image ~/Downloads/parrot.jpg
---------------------------
Ara macao (Scarlet Macaw)
Score : 0.76171875
無事、認識結果が表示されています。