3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ラズパイ4でCoral USB Acceleratorを使ってみる。

Last updated at Posted at 2020-07-10

ラズパイ4でCoral USB Acceleratorを使ってみる。

以下の記事では、秋月とマルツで販売中と書かれていましたが、僕は千石電子で購入してきました。
どんなものかは、この記事を読んでください。
Raspberry Piで使える「Google Coral Edge TPU USB Accelerator」が店頭販売中

構成

ハードウェア

107510833_986999821733753_115309040864084857_n.jpg

OS

Raspberry Pi OS 64bit

TESTバージョンなので、もちろんまだ安定していません。
2020/07/11で30ほどオープンのステータスになっています。
issues

Coral USB Acceleratorのセットアップ

Debian用パッケージリポジトリをシステムに追加

$ echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
deb https://packages.cloud.google.com/apt coral-edgetpu-stable main
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   653  100   653    0     0   4296      0 --:--:-- --:--:-- --:--:--  4296
OK
$ sudo apt-get update
ヒット:1 http://archive.raspberrypi.org/debian buster InRelease
ヒット:2 http://deb.debian.org/debian buster InRelease
取得:3 http://deb.debian.org/debian-security buster/updates InRelease [65.4 kB]
ヒット:4 http://deb.debian.org/debian buster-updates InRelease
取得:5 https://packages.cloud.google.com/apt coral-edgetpu-stable InRelease [6,332 B]
取得:6 https://packages.cloud.google.com/apt coral-edgetpu-stable/main armhf Packages [1,170 B]
取得:7 https://packages.cloud.google.com/apt coral-edgetpu-stable/main arm64 Packages [1,170 B]
74.0 kB を 2秒 で取得しました (35.4 kB/s)
パッケージリストを読み込んでいます... 完了

Edge TPU Runtimeをインストール

$ sudo apt-get install libedgetpu1-std
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  libedgetpu1-std
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
252 kB のアーカイブを取得する必要があります。
この操作後に追加で 880 kB のディスク容量が消費されます。
取得:1 https://packages.cloud.google.com/apt coral-edgetpu-stable/main arm64 libedgetpu1-std arm64 14.1 [252 kB]
252 kB を 0秒 で取得しました (680 kB/s)
以前に未選択のパッケージ libedgetpu1-std:arm64 を選択しています。
(データベースを読み込んでいます ... 現在 93370 個のファイルとディレクトリがインストールされています。)
.../libedgetpu1-std_14.1_arm64.deb を展開する準備をしています ...
libedgetpu1-std:arm64 (14.1) を展開しています...
libedgetpu1-std:arm64 (14.1) を設定しています ...
libc-bin (2.28-10) のトリガを処理しています ...

ラズパイとCoreal USB Acceleratorを接続

すでに接続指定場合は、抜いて、再度接続する。

このあとオプションで最大クロック周波数で動作させるためのパッケージのインストールの記述があったが今回はインストールせずに次へ。

TensorFlow Liteライブラリのインストール

TensorFlow Lite Python quickstartから自分のマシンにインストールされているPythonのバージョンに合わせたものをインストールする。

$ python3 -V
Python 3.7.3

で、64bit OSなので、

$ pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_aarch64.whl
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting tflite-runtime==2.1.0.post1 from https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_aarch64.whl
  Downloading https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_aarch64.whl (1.9MB)
    100% |????????????????????????????????| 1.9MB 276kB/s
Requirement already satisfied: numpy>=1.12.1 in /usr/lib/python3/dist-packages (from tflite-runtime==2.1.0.post1) (1.16.2)
Installing collected packages: tflite-runtime
Successfully installed tflite-runtime-2.1.0.post1

TensorFlow Lite APIのサンプルを実行してみる。

サンプルをGitHubからダウンロード

$ mkdir coral && cd coral
$ git clone https://github.com/google-coral/tflite.git
Cloning into 'tflite'...
remote: Enumerating objects: 65, done.
remote: Counting objects: 100% (65/65), done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 193 (delta 23), reused 59 (delta 19), pack-reused 128
Receiving objects: 100% (193/193), 675.91 KiB | 757.00 KiB/s, done.
Resolving deltas: 100% (69/69), done.```

bird classifier model、labels file、および鳥の写真をダウンロード

$ cd tflite/python/examples/classification
$ bash install_requirements.sh
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (1.16.2)
Requirement already satisfied: Pillow in /usr/lib/python3/dist-packages (5.4.1)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   189  100   189    0     0    334      0 --:--:-- --:--:-- --:--:--   334
100 3972k  100 3972k    0     0  1938k      0  0:00:02  0:00:02 --:--:-- 5765k
100   181  100   181    0     0    354      0 --:--:-- --:--:-- --:--:--   354
100 3448k  100 3448k    0     0  2577k      0  0:00:01  0:00:01 --:--:-- 9686k
100   158  100   158    0     0    558      0 --:--:-- --:--:-- --:--:--   558
100 40895  100 40895    0     0  44596      0 --:--:-- --:--:-- --:--:-- 7987k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   148  100   148    0     0    425      0 --:--:-- --:--:-- --:--:--   425
100  582k  100  582k    0     0   434k      0  0:00:01  0:00:01 --:--:--  753k

鳥の写真を使用してイメージ分類を実行

$ python3 classify_image.py \
> --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
> --labels models/inat_bird_labels.txt \
> --input images/parrot.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
17.6ms
4.5ms
4.4ms
4.4ms
4.4ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.77734

この写真の鳥が、0.77734%の確率でコンゴウインコと推測されました。
サンプルのページより確率が少し上がっているのはどうしてなんだろう。(^^;;

parrot.jpg

少し鳥の画像をもってきて読み込ませてみようっと。

PAKUTASOから鳥のフリー画像をダウンロードして試してみた。
ここにアップしている画像はリサイズして小さくしています。

あひる

0001.jpg

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/0001.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
19.5ms
4.5ms
4.4ms
4.4ms
4.4ms
-------RESULTS--------
Anas platyrhynchos domesticus (Domestic Duck): 0.95703

アヒル

だちょう

0002.jpg

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/0002.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
17.6ms
4.4ms
4.4ms
4.4ms
4.4ms
-------RESULTS--------
Struthio camelus (Common Ostrich): 0.87500

ダチョウ

ふくろう

0003.jpg

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/0003.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
17.6ms
4.4ms
4.4ms
4.4ms
4.4ms
-------RESULTS--------
Strix nebulosa (Great Gray Owl): 0.74609

カラフトフクロウ

ふらみんご

0004.jpg

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/0004.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
17.6ms
4.4ms
4.4ms
4.4ms
4.4ms
-------RESULTS--------
Phoenicopterus roseus (Greater Flamingo): 0.72656

オオフラミンゴ

はしびろこう

0005.jpg

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/0005.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
17.6ms
4.5ms
4.4ms
4.4ms
4.4ms
-------RESULTS--------
Ardea herodias (Great Blue Heron): 0.28906

オオアオサギ

はと

0006.jpg

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/0006.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
17.7ms
4.4ms
4.4ms
4.4ms
4.3ms
-------RESULTS--------
Columba livia (Rock Pigeon): 0.66797

イワバト

かも

0007.jpg

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/0007.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
18.3ms
4.5ms
4.5ms
4.5ms
4.5ms
-------RESULTS--------
Tadorna tadorna (Common Shelduck): 0.21094

ツクシガモ

かもめ

0008.jpg

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/0008.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
17.8ms
4.4ms
4.3ms
4.4ms
4.4ms
-------RESULTS--------
Larus fuscus (Lesser Black-backed Gull): 0.39062

ニシセグロカモメ

からす

0009.jpg

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/0009.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
17.7ms
4.4ms
4.4ms
4.5ms
4.4ms
-------RESULTS--------
Corvus brachyrhynchos (American Crow): 0.17578

アメリカガラス

めじろ

0010.jpg

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/0010.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
17.9ms
4.5ms
4.4ms
4.4ms
4.4ms
-------RESULTS--------
Zosterops japonicus (Japanese White-eye): 0.96094

メジロ

にわとり

0011.jpg

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/0011.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
17.5ms
4.4ms
4.3ms
4.4ms
4.3ms
-------RESULTS--------
Circus cyaneus (Northern Harrier): 0.45312

ハイイロチュウヒ

ぺんぎん

0012.jpg

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/0012.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
20.4ms
4.5ms
4.4ms
4.4ms
4.4ms
-------RESULTS--------
Megadyptes antipodes (Yellow-eyed Penguin): 0.29297

キンメペンギン

12種類の画像をテストして大きく外れたのはハシビロコウとニワトリですかね。

3
3
1

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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?