RaspberryPiでGoogle Edge TPU

提供: ディーズガレージ wiki
移動先: 案内検索

Image edgetpu.jpg

環境

ボード Raspberry Pi 3 Model B Revision 1.2
OS Raspbian Stretch with desktop 2019-04-08
ストレージ SanDisk Ultra microSDHC 16GB
USB電源アダプター 5V 3.0A
TPU Google Edge TPU

USB Accelerator datasheet | Coral

準備

OS

省略

IP固定

$ sudo nano /etc/dhcpcd.conf

末尾に追記

interface eth0
static ip_address=192.168.1.162/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

保存: Ctrl + o > リターン
終了: Ctrl + x

再起動

$ sudo reboot

ホスト名

Menu > 設定 > Raspberry Piの設定 > システムタブ > ホスト名
tpu
OK > 再起動

遠隔操作

運用にモニター、マウス、キーボードは必要ないので遠隔操作にする
標準で入っているRealVNCを使用

VNC有効

Menu > 設定 > Raspberry Piの設定 > インターフェイスタブ > VNC有効 > OK

解像度の変更

Menu > 設定 > Raspberry Piの設定 > システムタブ > 解像度 > 1280x960程度 > OK > 再起動

シャットダウンし、モニター、マウス、キーボードを取り外して電源入れ直し
WindowsPCなどのVNCクライアントから接続を試す
成功していれば、以降はVNCクライアントの窓の中で作業

Get started

Get started with the USB Accelerator | Coral

セットアップ

1.Edge TPUランタイムとPythonライブラリをインストール

$ 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
Would you like to enable the maximum operating frequency? Y/N 
N Enterキーを押してデフォルトの動作周波数を使用
ンストールスクリプトを再実行するだけで後で変更できる

2.付属のUSB 3.0ケーブルを使用してアクセラレータを接続

モデルを実行

ダウンロード

$ cd ~/Downloads/
$ wget https://dl.google.com/coral/canned_models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite https://dl.google.com/coral/canned_models/inat_bird_labels.txt https://coral.withgoogle.com/static/docs/images/parrot.jpg

実行

Figure 1. parrot.jpg
$ cd /usr/local/lib/python3.5/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

Python API

Python API overview & demos | Coral
Edge TPU Pythonライブラリ(edgetpuモジュール)を使用すると、
TensorFlow Liteモデルで推論を実行できる

APIの概要

ClassificationEngine 画像分類を実行
DetectionEngine 物体検知を実行
ImprintingEngine 再トレーニングを実行(画像分類のみ)

複数のEdge TPUで複数のモデルを実行する

APIデモ

ダウンロード

$ cd ~/Downloads
$ curl -O https://dl.google.com/coral/canned_models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite -O https://dl.google.com/coral/canned_models/inat_bird_labels.txt -O https://coral.withgoogle.com/static/docs/images/parrot.jpg
$ curl -O https://dl.google.com/coral/canned_models/mobilenet_ssd_v2_face_quant_postprocess_edgetpu.tflite -O https://coral.withgoogle.com/static/docs/images/face.jpg

移動

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

画像分類

classify_image.py

Figure 1. parrot.jpg
$ 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

確認
classify_image.pyソース

物体検知

object_detection.py

$ python3 object_detection.py --model ~/Downloads/mobilenet_ssd_v2_face_quant_postprocess_edgetpu.tflite --input ~/Downloads/face.jpg --output ~/detection_results.jpg

エラー

No such file or directory: 'feh'

インストール

$ sudo apt-get install feh

実行

Figure 3. detection_results.jpg
$ python3 object_detection.py --model ~/Downloads/mobilenet_ssd_v2_face_quant_postprocess_edgetpu.tflite --input ~/Downloads/face.jpg --output ~/detection_results.jpg
-----------------------------------------
score =  0.996094
box =  [474.22854804992676, 38.03488787482766, 738.8013491630554, 353.5309683683231]
-----------------------------------------
score =  0.992188
box =  [205.4297697544098, 110.28378465056959, 487.75309658050537, 439.73802454331343]
-----------------------------------------
score =  0.832031
box =  [6.2277887016534805, 182.35811898071842, 127.13575917482376, 326.5376813379348]
-----------------------------------------
score =  0.5
box =  [859.8422718048096, 213.5472493581642, 1008.978108882904, 383.9367261515483]

確認
object_detection.pyソース

ライブ画像分類

classify_capture.py 電源OFF
Piカメラとモニターを取り付け電源ON

カメラ有効

Menu > 設定 > Raspberry Piの設定 > インターフェイスタブ > カメラ有効 > OK > 再起動 > はい

ダウンロード

$ cd ~/Downloads
$ curl -O https://dl.google.com/coral/canned_models/mobilenet_v2_1.0_224_quant_edgetpu.tflite -O https://dl.google.com/coral/canned_models/imagenet_labels.txt

実行

$ cd /usr/local/lib/python3.5/dist-packages/edgetpu/demo
$ python3 classify_capture.py --model ~/Downloads/mobilenet_v2_1.0_224_quant_edgetpu.tflite --label ~/Downloads/imagenet_labels.txt

停止: Ctrl + c > リターン

確認
classify_capture.pyソース
picamera API

GStreamer samples

GStreamer samples from GitHub

ダウンロード

$ cd ~/Downloads
$ git clone https://github.com/google-coral/examples-camera.git
$ cd examples-camera
$ sh download_models.sh

gstreamerインストール

$ cd ~/Downloads/examples-camera/gstreamer
$ sh install_requirements.sh

gstreamer/classify.py

$ cd ~/Downloads/examples-camera/gstreamer
$ python3 classify.py
$ python3 classify.py --model ~/Downloads/examples-camera/all_models/inception_v1_224_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/imagenet_labels.txt
$ python3 classify.py --model ~/Downloads/examples-camera/all_models/inception_v2_224_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/imagenet_labels.txt
$ python3 classify.py --model ~/Downloads/examples-camera/all_models/inception_v3_299_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/imagenet_labels.txt
$ python3 classify.py --model ~/Downloads/examples-camera/all_models/inception_v4_299_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/imagenet_labels.txt
$ python3 classify.py --model ~/Downloads/examples-camera/all_models/mobilenet_v1_1.0_224_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/imagenet_labels.txt
$ python3 classify.py --model ~/Downloads/examples-camera/all_models/mobilenet_v2_1.0_224_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/imagenet_labels.txt
$ python3 classify.py --model ~/Downloads/examples-camera/all_models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/inat_bird_labels.txt
$ python3 classify.py --model ~/Downloads/examples-camera/all_models/mobilenet_v2_1.0_224_inat_insect_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/inat_insect_labels.txt
$ python3 classify.py --model ~/Downloads/examples-camera/all_models/mobilenet_v2_1.0_224_inat_plant_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/inat_plant_labels.txt

終了: ×ボタン

gstreamer/detect.py

$ cd ~/Downloads/examples-camera/gstreamer
$ python3 detect.py
$ python3 detect.py --model ~/Downloads/examples-camera/all_models/mobilenet_ssd_v1_coco_quant_postprocess_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/coco_labels.txt
$ python3 detect.py --model ~/Downloads/examples-camera/all_models/mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/coco_labels.txt
$ python3 detect.py --model ~/Downloads/examples-camera/all_models/mobilenet_ssd_v2_face_quant_postprocess_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/coco_labels.txt

終了: ×ボタン

raspicam/classify_capture.py

$ cd ~/Downloads/examples-camera/raspicam
$ python3 classify_capture.py
$ python3 classify_capture.py --model ~/Downloads/examples-camera/all_models/inception_v1_224_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/imagenet_labels.txt
$ python3 classify_capture.py --model ~/Downloads/examples-camera/all_models/inception_v2_224_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/imagenet_labels.txt
$ python3 classify_capture.py --model ~/Downloads/examples-camera/all_models/inception_v3_299_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/imagenet_labels.txt
$ python3 classify_capture.py --model ~/Downloads/examples-camera/all_models/inception_v4_299_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/imagenet_labels.txt
$ python3 classify_capture.py --model ~/Downloads/examples-camera/all_models/mobilenet_v1_1.0_224_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/imagenet_labels.txt
$ python3 classify_capture.py --model ~/Downloads/examples-camera/all_models/mobilenet_v2_1.0_224_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/imagenet_labels.txt
$ python3 classify_capture.py --model ~/Downloads/examples-camera/all_models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/inat_bird_labels.txt
$ python3 classify_capture.py --model ~/Downloads/examples-camera/all_models/mobilenet_v2_1.0_224_inat_insect_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/inat_insect_labels.txt
$ python3 classify_capture.py --model ~/Downloads/examples-camera/all_models/mobilenet_v2_1.0_224_inat_plant_quant_edgetpu.tflite --label ~/Downloads/examples-camera/all_models/inat_plant_labels.txt

終了: Ctrl + c

TensorFlow Lite

参考: TensorFlow Lite | TensorFlow

更新履歴

  • 2019.06.23 公開