Coral EdgeTPU USB Accelerator with VirtualBox

0xkoji - May 12 '19 - - Dev Community

I got Coral USB stick last month. I've been playing that with Raspberry Pi3.
That is a very cool product because with Coral USB the performance is pretty good.

https://www.instagram.com/p/BxSmI5QFIUZ/

But, the thing is Raspberry Pi3B+ cannot use USB3.0 which means data transferring between Pi and Coral is limited.

So I really wanted to use Coral with USB3.0, however, unfortunately recently Parallel Desktop lite got a paid software and I didn't install it on Mac(not sure why).

In this post, I will explain how to set up VirtualBox env for Coral. I think it's been a while since the last time I used VirtualBox.

https://www.instagram.com/p/BxYIPQzFbfI/

1 Get VirtualBox

You need to get the latest one since I tried to use 5.2.22(not the latest version) and spent so much time then it didn't work. Once I switched from 5.2.22 to 6.0.6. Everything works perfectly.
https://www.virtualbox.org/wiki/Downloads

2 Get Ubuntu (LTS version)

I think you can use 16.04 or 18.04. I'm using 18.04 since I use that for my GPU machine for training models. Maybe you can use 19.04, but not sure.

https://www.ubuntu.com/download/desktop

3 Install Ubuntu on VirtualBox

This article is very useful if you don't have any experience with VirtualBox.

https://medium.com/@tushar0618/install-ubuntu-16-04-lts-on-virtual-box-desktop-version-30dc6f1958d0

4 Add USB Device Filters

This is the most important part of this article.
When you do this, you have to turn off your virtual machine
Settings > Ports > USB
ports

(the machine is running. sorry I'm lazy...)
usb

If you power off your machine, you can select USB3.0. Then you need to add 2 USB Device Filters. Probably you just need to add one the following.

3-1. Click Add button
3-2. Select Global Unichip Corp [0100]
3-3. Add one more
3-4. Select one filter you added and edit filter settings
filter setting

Name: you can put anything you want
Vendor ID: 18d1
Product ID: 9302

5 Setup EdgeTPU

We are almost there. You can follow the link.
https://coral.withgoogle.com/docs/accelerator/get-started/

Seems Google update edgetpu, so we don't need to change the install shell script anymore, but I think edgetpu is optimized for python3.5.
So I set up a virtual environment for that. As you know there are some ways to set up virtual env. virtualenv, virtualenvwrapper, pyenv, pipenv and anaconda.
For this, I decided to use Anaconda since it just needs to type a couple of commands to set up the python3.5 environment.

Digital Ocean has a nice article on that.
https://www.digitalocean.com/community/tutorials/how-to-install-anaconda-on-ubuntu-18-04-quickstart

After activating your virtual environment, probably you will need this.

$ pip install edgetpu-1.9.2-py3-none-any.whl
Enter fullscreen mode Exit fullscreen mode

6 Run demo

Just follow the official guide (easy easy easy)

$ cd /usr/local/lib/python3.6/dist-packages/edgetpu/demo

$ 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.761719
Enter fullscreen mode Exit fullscreen mode

Coral repos are on Github
https://github.com/google-coral

Additional Information

I just noticed that this post only works for the first time since something will change the Coral Edge TPU USB's Vender ID and Product ID

The solution

  1. Remove the first settings

    Vendor ID: 18d1

    Product ID: 9302

  2. Add a new one

    Vendor ID: 1a6e

    Product ID: 089a

    Probably these will work, but make sure that your Terminal app shows them when you run lsusb on your Mac.

  3. Reboot VirtualBox

  4. Devices --> USB --> Google, Inc

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .