概要
ラズパイ4にEdge TPUを付けて、公式のサンプルを動かすまでにすることを書いてます。
最終的には、サンプルコードの物体分類が4.4msでできました。(早すぎないか...?
準備
用意するもの
- ラズベリーパイ4本体
- 5V3A USB Type-C 電源用ケーブル
- ストレージ用microSDカード
- Coral USB Accelerator (Edge TPU)
OSをSDカードに焼く
ダウンロード
https://www.raspberrypi.org/downloads/raspbian/
ここからOSのイメージをzipで落としてきます。
Raspbian Busterにはfull, desktop, liteの3種類がありますが、今回はliteを使います。
焼く
https://www.balena.io/etcher/
を使って用意したmicroSDに、先ほどダウンロードした.img
ファイルを書き込んでいきます。
Validationに成功したら、SDカードは勝手にアンマウントされます。
が、もう一度マウントしてください。やることが残っています。
事前設定
SSHの有効化
ヘッドレス起動(画面無し起動)をするには、SSHの有効化は必要です。
bootパーティション内に、ssh
という名前のファイルを作成します。
拡張子は無くても、.txtなどでも大丈夫です。
ssh
という名前のファイルがある場合、sshがboot時から有効になります。
Wifiの設定
bootパーティション内にwpa_supplicant.conf
という名前のファイルを作ると、boot時にしかるべき場所にコピーしてくれます。
wpa_supplicant.conf
には主にWifiのSSIDと、パスワードの組み合わせを書いていく形になります。
https://mascii.github.io/wpa-supplicant-conf-tool/
ここに、パスワードを暗号化しつつwpa_supplicant.conf
を自動生成してくれるツールがあるので、これを使うといいと思います。
起動
ラズパイに必要な場合hdmiケーブルを接続しモニタにつなげます。
マウス、キーボード、有線LANなどの周辺機器も電源を入れる前に接続してください。
ただし、Edge TPUはまだ接続しないでください。
全て繋ぎ終えたら、ラズパイに電源ケーブルを刺します。
SSHで接続
あなたのパソコンがmDNS
に対応しているか確認してください。
この辺の記事とかに色々書いてあります。私は2019/12/10時点で最新のwindows10を使っているのですが、ファイアーウォールの設定などをせずともできました。
https://qiita.com/maccadoo/items/48ace84f8aca030a12f1
この記事が参考になるかも
mDNSが使える場合、raspberrypi.local
がラズパイのIPアドレスを表すので
>ssh pi@raspberrypi.local
初期起動時はユーザー名pi
、パスワードはraspberry
です。
設定とか
-
passwd
コマンドでパスワードを変更しましょう。 - 好きなエディタとか入れましょう。
-
.bashrc
のHISTSIZE
とHISTFILESIZE
をお好みで変更しましょう。 - gitを入れましょう。
>sudo apt install git
raspi-config
コマンドで色々設定できます。地域をJPにする以外はお好みで。
>sudo raspi-config
後は適当に更新しましょう。
>sudo apt update
>sudo apt upgrade
Edge TPU関連の設定
基本的にはhttps://coral.ai/docs/accelerator/get-started#1-install-the-edge-tpu-runtime に従ってやっていくので、コマンドだけ貼っておきます。
>echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
>curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
>sudo apt-get update
>sudo apt-get install libedgetpu1-std
ここまでやったら、Coral USB Acceleratorをラズパイに接続します。(やっとだ!
Tensorflow Lite Libraryのインストール
ここがちょっとしんどかった😢。
まずpip
を入れるのですが、python-pip
(python2系)とpython3-pip
(3系)があるので気を付けてください。いれるのは3系のほうです。
>sudo apt install python3-pip
# バージョンチェック
>pip3 -V
そして、https://www.tensorflow.org/lite/guide/python#install_just_the_tensorflow_lite_interpreter にアクセスします。
このように、様々なアーキテクチャにビルド済みのtensorflow lite interpreterだけを切り離したライブラリがあるのでpipを使ってインストールします。(推論以外もしたい場合は、普通のtensorflowを入れてください)
念の為アーキテクチャの再確認をします。
>uname -a
# Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux
>python3 --verison
# Python 3.7.3
よって、上の画像の左下のARM32,Python3.7のwhlをダウンロードします。そして、pipでそのファイルを使ってライブラリをインストールします。
pip3 install tflite_runtime-1.14.0-cp37-cp37m-linux_armv7l.whl
サンプルを動かす
https://coral.ai/docs/accelerator/get-started#2-install-the-tensorflow-lite-library に従ってコンソールを叩いていきます。
>mkdir coral && cd coral
>git clone https://github.com/google-coral/tflite.git
>cd tflite/python/examples/classification
>bash install_requirements.sh
最後のbash install_requirements.sh
でエラーになった場合、必要なライブラリが入っていないことによるエラーだと思います。
私は
sudo apt-get install libjpeg-dev
sudo apt install libatlas-base-dev
を入れ、もう一度実行してみたところ上手くいきました。
実行結果
>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
INFO: Initialized TensorFlow Lite runtime.
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
17.2ms
4.4ms
4.4ms
4.4ms
4.4ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.76562
というわけで、なんと4.4msという驚異的な速度で物体分類ができました。
see also
https://jyn.jp/raspbian-setup/
https://qiita.com/shuichiro/items/d9e388fad3a00dbd4028