見出し画像

RASPi4でCoral USB Acceleratorのdemoを動かす

調べてみるとPython3.9は対応していないようですが、非公式な方法で動かすことが出来るようなのでやってみます。
結論を言うと動かすことが出来ました。

1.動作環境(当社環境)

画像処理環境の構築① で作成した環境を利用しています。
Raspberry Pi 4 Model B / 8GB
$ uname -snr
Linux ubuntu 5.8.0-1008-raspi

$ python3 -V
Python 3.9.0

2.インストール

Coral USB Acceleratorは外していてください
$ 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
$ ./install.sh
(省略)
Would you like to enable the maximum operating frequency? Y/N
インストールを開始すると「めっちゃ早く動かす?」と問われますが迷わず「N」を選びましょう。
もの凄く熱くなるらしいです。

3.デモのダウンロード

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

4.デモの実行(Error)

Coral USB Acceleratorを接続します
$ cd /usr/local/lib/python3.9/site-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
これを実行するとエラーになります
Traceback (most recent call last):
 File "/usr/local/lib/python3.9/site-packages/edgetpu/swig/edgetpu_cpp_wrapper.py", line 18, in swig_import_helper
   fp, pathname, description = imp.find_module('_edgetpu_cpp_wrapper', [dirname(__file__)])
 File "/usr/local/lib/python3.9/imp.py", line 296, in find_module
   raise ImportError(_ERR_MSG.format(name), name=name)
ImportError: No module named '_edgetpu_cpp_wrapper'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
 File "/usr/local/lib/python3.9/site-packages/edgetpu/demo/classify_image.py", line 17, in <module>
   from edgetpu.classification.engine import ClassificationEngine
 File "/usr/local/lib/python3.9/site-packages/edgetpu/classification/engine.py", line 17, in <module>
   from edgetpu.basic.basic_engine import BasicEngine
 File "/usr/local/lib/python3.9/site-packages/edgetpu/basic/basic_engine.py", line 17, in <module>
   from edgetpu.swig.edgetpu_cpp_wrapper import BasicEnginePythonWrapper
 File "/usr/local/lib/python3.9/site-packages/edgetpu/swig/edgetpu_cpp_wrapper.py", line 28, in <module>
   _edgetpu_cpp_wrapper = swig_import_helper()
 File "/usr/local/lib/python3.9/site-packages/edgetpu/swig/edgetpu_cpp_wrapper.py", line 20, in swig_import_helper
   import _edgetpu_cpp_wrapper
ModuleNotFoundError: No module named '_edgetpu_cpp_wrapper'
「_edgetpu_cpp_wrapperが無いよ~」と怒られてます
ここでいろいろ調べました

5.暫定対策

$ cd /usr/local/lib/python3.9/site-packages/edgetpu/swig
$ sudo ln -s _edgetpu_cpp_wrapper.cpython-35m-aarch64-linux-gnu.so _edgetpu_cpp_wrapper.so
python3.5のライブラリはあるようなので、これを使ってシンボリックリンクを作成します。(_edgetpu_cpp_wrapper)

6.デモの実行(Pass)

$ cd /usr/local/lib/python3.9/site-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
INFO: Initialized TensorFlow Lite runtime.
---------------------------
Ara macao (Scarlet Macaw)
Score :  0.77734375
インコ(コンゴウインコ)と識別をすることが出来ました。
因みにこれは、デモに付属していた画像です

画像1

他にも、スズメと鴨も行ってみたところ、ちゃんと識別されました。
感動ですね。
#引数に推論したい画像を選択する
$ python3 classify_image.py \
> (省略)
> --image ~/Downloads/(推論したい画像を選択)
INFO: Initialized TensorFlow Lite runtime.
---------------------------
Passer montanus (Eurasian Tree Sparrow)
Score :  0.96484375

画像2

INFO: Initialized TensorFlow Lite runtime.
---------------------------
Anas platyrhynchos (Mallard)
Score :  0.9140625

画像3

7.まとめ

今回は、暫定対策とはいえ、デモを動作させることが出来たのは意味のあることだと思っています。
この環境で推論できるんですもんね。
楽しいですね。
次は、簡単なモデルを自分で作ってみたいですね。

8.謝辞

今回も多数の先駆者様のお陰で実現することが出来ました。
改めてお礼を申し上げます。
#-- デモ実施環境の構築
https://qiita.com/k2kdisk/items/3373689c5ea905328fec

#-- 鳥の画像
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BA%E3%83%A1
https://pixnio.com/ja/%E5%8B%95%E7%89%A9/%E9%B3%A5/%E9%B4%A8/%E9%B4%A8%E3%80%81%E9%B6%8F%E8%82%89%E3%80%81%E6%B0%B4%E9%B3%A5%E3%80%81%E9%B3%A5%E3%80%81%E9%87%8E%E7%94%9F%E5%8B%95%E7%89%A9%E3%80%81%E8%8D%89%E3%80%81%E3%82%AB%E3%83%A9%E3%83%95%E3%83%AB%E3%81%A7

この記事が気に入ったらサポートをしてみませんか?