Raspberry PiとUSB Acceleratorを使って
画像分類と物体検出をしてみました。
行ったのは、公式のスタートガイドです。
環境
- Raspberry Pi 3 Model B+
- ubuntu mate
Raspberry Pi のセットアップ
Edge TPU runtimeと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
install.sh
を実行するとWould you like to enable the maximum operating frequency?
と聞かれます。
最大でパフォーマンスでUSB Acceleratorを使うと、USB Acceleratorがとても熱くなり、やけどするかもしれないので、
最大パフォーマンスが必要かどうか分からないならN
にしろ、とのことです。
この設定は後からでも変えられるそうです。
デモの実行
画像分類
サンプルデータをダウンロード
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/images/parrot.jpg
ラズパイを日本語で設定している方はDownloads
というディレクトリがないと思います。
その場合は、適当なディレクトリでよいです。
デモの実行
$ 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
model``label``image
のファイルパスは、ダウンロード先に合わせて変更してください。
実行に成功すると、以下のような出力がされます。
Ara macao (Scarlet Macaw)
Score : 0.746094
物体検出
サンプルデータをダウンロード
cd ~/Downloads/
wget https://dl.google.com/coral/canned_models/mobilenet_ssd_v2_face_quant_postprocess_edgetpu.tflite \
https://coral.withgoogle.com/static/images/face.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
もし実行エラーとなってNo such file or directory: 'feh'
というメッセージが表示されたら
sudo apt-get install feh
としてから、再実行してください。
以下のような表示がされば成功です。
-----------------------------------------
score = 0.996094
box = [471.33392310142517, 38.03488787482766, 741.695974111557, 353.5309683683231]
-----------------------------------------
score = 0.996094
box = [209.30670201778412, 114.17187392981344, 491.6300288438797, 443.6261138225572]
-----------------------------------------
score = 0.832031
box = [7.304725393652916, 184.98179422784176, 128.21268820762634, 326.07404544882104]
-----------------------------------------
score = 0.5
box = [858.2628228664398, 211.6830582424526, 1007.3986599445343, 385.80091726725993]
リアルタイム画像分類 & 物体検出
ラズパイ用カメラやUSBカメラから取得した画像に対して、リアルタイムで画像分類&物体検出ができるデモもあります。
デモ用プログラムの取得
$ git clone https://github.com/google-coral/examples-camera.git
サンプルデータをダウンロード
cd ~/Downloads/
# 物体分類用
wget https://dl.google.com/coral/canned_models/mobilenet_v2_1.0_224_quant_edgetpu.tflite \
https://dl.google.com/coral/canned_models/imagenet_labels.txt
# 物体検出用
wget https://dl.google.com/coral/canned_models/mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite \
https://dl.google.com/coral/canned_models/coco_labels.txt
ラズパイカメラでの画像分類
事前にカメラが使えるようpip3 install picamera
とraspi-config
でカメラを有効にしてください。
$ cd examples-camera/raspicam
$ python3 classify_capture.py --model ~/Downloads/mobilenet_v2_1.0_224_quant_edgetpu.tflite --labels ~/Downloads/imagenet_labels.txt
ウィンドウに画像が表示され、画面の上部に分類結果などが表示されれば成功です。
USBカメラによる画像分類
実行前に、gstream
などのインストールをする必要があります。
$ cd examples-camera/gstreamer
$ sh install_requirements.sh
実行
$ cd examples-camera/gstreamer
$ python3 classify_capture.py --model ~/Downloads/mobilenet_v2_1.0_224_quant_edgetpu.tflite --labels ~/Downloads/imagenet_labels.txt
こちらもウィンドウに画像が表示され、画面の上部に分類結果などが表示されれば成功です。
USBカメラによる物体検出
$ cd examples-camera/gstreamer
$ python3 classify_capture.py --model ~/Downloads/mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite --labels ~/Downloads/coco_labels.txt
ウィンドウに画像が表示され、物体検出の結果であるバウンディングボックスなどが表示されれば成功です。
こちらの環境では、たまに飛ぶことがあるものの、約5fpsくらいで動作しました。
他のサンプルデータ
ここのREADMEの一番下に、サンプルデータの一覧が記載してあります。