Raspberry Pi4でCoral USB Accelerator(EdgeTPU)を使ってみる!
こんにちは、けん@すいラボです。
G検定も無事合格したので、今後はディープラーニングに関するツールやフレームワークを実際に触ってみて、そちらの方面でのスキルアップをしたいと考えているため、Coral USB Acceleratorを買ってみました。
Coral USB AcceleratorはGoogleのEdge TPU(Tensor Processing Unit)を搭載したデバイスで、Raspberry Pi/Windows/Macなどと組み合わせて使えるAIアクセラレーターです。
今回はRaspberry Pi + Coral USB Acceleratorの組み合わせで動かしていきます。
Coral USB Acceleratorを使うならRaspberry Pi4を選ぼう!
Coral USB AcceleratorのインターフェースはUSB3.0です。
Raspberry Pi3まではUSB2.0のポートしかありませんので、ラズパイで使う場合はUSB3.0のポートを持つRaspberry Pi4を選択した方がCoral USB Acceleratorの性能を最大限に発揮することができます。
(USB2.0のポートでもCoral USB Acceleratorは使用できますが、推論にかかる時間が長くなります)
Raspberry Pi4では電源がUSB Type-C(5V/3A推奨)に、映像出力がmicro HDMIに変わったので、Raspberry Pi3を持ってた方でも諸々買い替えが必要です。
さらにRaspberry Piで機械学習をいろいろ試していくのであれば、micro SDカードの容量も最初から64GBにしておいた方が良いです。
いろいろなフレームワークやらライブラリやらデータセットやら入れていくと、32GBでは足りなくなってしまうことがあります。
なので、最初から64GBのmicro SDカードが付属したセットで揃えてしまうのがおすすめです。
Raspberry Pi4でCoral USB Acceleratorを使えるようにセットアップ!
Coralの公式サイトにRaspberry Piでのセットアップ方法の記載があるので、こちらに沿って進めていけば大丈夫です。(Raspberry Pi OSのインストール方法は割愛します)
1: Install the Edge TPU runtimeでは1a: On Linuxに書かれているコマンドを実行しましょう。
Install with maximum operating frequency (optional)はCoral USB Acceleratorの性能を100%引き出すためには実行しましょう。
動作周波数が高くなる分、Coral USB Acceleratorの発熱は増えます。
2: Install the TensorFlow Lite libraryではTensorFlow Lite Python quickstartのリンクに飛び、Platoformに応じてライブラリのインストールを行います。
Raspberry Pi OSの場合はLinux (ARM 32)になるので、あとはインストールされているPythonのバージョンに合わせて以下のようにコマンドを実行します。
$ pip3 install "whlファイルのURL"
# たとえばRaspberry Pi OS & Python3.7の場合は以下を実行
$ pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl
3: Run a model using the TensorFlow Lite APIで実際にCoral USB Acceleratorを使って推論をしていきます。
エラー発生!?
自分の場合は推論の実行時に下記のエラーが出ました。
$ 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
Traceback (most recent call last):
File "/home/pi/.local/lib/python3.7/site-packages/tflite_runtime/interpreter.py", line 161, in load_delegate
delegate = Delegate(library, options)
File "/home/pi/.local/lib/python3.7/site-packages/tflite_runtime/interpreter.py", line 120, in __init__
raise ValueError(capture.message)
ValueError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "classify_image.py", line 122, in <module>
main()
File "classify_image.py", line 99, in main
interpreter = make_interpreter(args.model)
File "classify_image.py", line 73, in make_interpreter
{'device': device[0]} if device else {})
File "/home/pi/.local/lib/python3.7/site-packages/tflite_runtime/interpreter.py", line 164, in load_delegate
library, str(e)))
ValueError: Failed to load delegate from libedgetpu.so.1
んー、何だか分からん・・・という感じでしたが、公式サイトに書かれている通りにセットアップ進めていれば、このエラーは出ません。
と言うことは、書いてある通りに実施していない箇所が怪しい・・・
実は私の場合は1: Install the Edge TPU runtimeの実行前からCoral USB AcceleratorをRaspberry Pi4に接続していたのです。
公式サイトではEdge TPU runtimeをインストールしてから、Coral USB Acceleratorを接続しろと書かれていますね。
と言うことで、単純にCoral USB Acceleratorを抜き差しして、再度推論を実施してみたところ、今度は問題なく動きました。
$ 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.
15.6ms
2.7ms
2.7ms
2.7ms
2.7ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.77734
と言うことで、入力した画像(parrot.jpg)は77.734%の確率でAra macao(コンゴウインコ)であると推論できました!
classify_image.pyでは同じ推論を5回行っていますが、初回のみモデルの読み込みが発生するため、他の4回より推論に時間が掛かっていることが分かります。
まとめ
と言うことで、Raspberry Pi4 + Coral USB Accelerator環境のセットアップから推論まで実行してみました。
ラズパイ環境に公式で対応しているため、手軽に試すことが出来るのはありがたいですね。
今回はサンプルの分類(classification)を行いましたが、物体検知(detection)のサンプルも入っているので、次回はこちらを動かしてみようと思います。
みなさんは公式のドキュメントはちゃんと読みましょうね!
この記事が気に入ったらサポートをしてみませんか?