NanoPi M4にPipenv + Coral Edge TPU USB Accelerator + TensorFlow Liteをインストールして動作確認

はじめに

自作NAS用に購入したNanoPI M4ですが、NASだけではもったいないポテンシャルを秘めたシングルボードコンピュータですので、カメラを使った機械学習の勉強をやろうと構築作業をはじめました。
NanoPi M4には公式OSのFriendlyDesktopをSDカードからeMMCにインストールしています。FriendlyDesktopのインストールについてはたくさん情報があるのでそちらを参考にしてください。
またFriendlyDesktopにはPythonの仮想環境もvirtualenv + virtualenvwrapperという構成で標準で用意されています。Pipenvではなくvirtualenvが使いたいという方はそちらで環境構築ください。

virtualenv --version
16.5.0

作業ディレクトリの作成

好きな名前で作業ディレクトリを作ってください。
自分は「work」にします。

mkdir work
cd work

Pipenvのインストール

Pipenvを使う理由は、機械学習以外にも色々な学習マシンとして使っていきたいので特定の環境に固定されずにPythonを使うためです。
Pipenvのインストールですが、真面目にやると結構大変です。
ありがたいことにシェルスクリプトを作成している方がいらっしゃいましたので活用させていただきました。
記事はこちら
記事を参考にinstall.shを作成します。こちらも作業ディレクトリを作成して進めていきます。

mkdir python
cd python
vi install.sh
chmod +rx install.sh
./install.sh

パッケージのアップデート中にサービスの再起動を促すメッセージが流れる場合があります。「Yes」を選択して進みます。

スクリーンショット 2020-01-16 17.19.06

インストールが無事終了したらPythonのバージョンを確認

source ~/.bash_profile 
python --version

「Python 3.7.4」と表示されればOKです。

Pipenvで仮想環境を作成

Coral Edge TPU動作確認用プロジェクトの仮想環境を作ってみます。
pipenvで仮想環境の構築が終わるとPipfileとPipfile.lockが作成されます。
NumPyもこの時点でインストールしておきます。
これからの作業は~/work/coral_edge_tup/以下で行っていきます。

cd ~/work
mkdir coral_edge_tup
cd coral_edge_tup
pipenv install --python 3.7.4
ls -la

drwxrwxr-x 2 pi pi 4096 Jan 15 13:12 .
drwxrwxr-x 4 pi pi 4096 Jan 15 12:08 ..
-rw-rw-r-- 1 pi pi  138 Jan 15 13:12 Pipfile
-rw-r--r-- 1 pi pi  453 Jan 15 13:12 Pipfile.lock

pipenv install numpy
pipenv install matplotlib

Coral Edge TPUを接続

USBに差し込み接続状況の確認を行います。

lsusb
us 006 Device 003: ID 1a6e:089a Global Unichip Corp.

「Global...」が見えればOKです。
ユーザpiにデバイスの使用権限を付与します。ユーザ名は自身の環境に応じて変更してください。
一旦再起動します。

sudo usermod -aG plugdev pi
sudo reboot

Coral Edge TPU ランタイムのインストール

Debianパッケージリポジトリをシステムに追加

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

Edge TPUランタイムをインストール

sudo apt-get install libedgetpu1-std

TensorFlow Liteのインストール

wget https://dl.google.com/coral/python/tflite_runtime-1.14.0-cp37-cp37m-linux_aarch64.whl
pipenv install tflite_runtime-1.14.0-cp37-cp37m-linux_aarch64.whl

適当なファイルを作成して1行目に「import tflite_runtime.interpreter as tflite」と記述します。

vi test.py
pipenv run python test.py 

何も表示されなければ正しくインストールされています。

TensorFlow Lite APIの動作確認

動作確認用のファイルを取得します。


git clone https://github.com/google-coral/tflite.git
cd tflite/python/examples/classification
bash install_requirements.sh

サンプルを動かしてみる

pipenv shell
python 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

以下のように表示されればOKです。
parrot.jpgを「Ara macao」と認識しています。

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.
18.6ms
5.4ms
5.5ms
5.9ms
5.7ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.76562

まとめ

記事するとスラスラ構築できる気がしますが、調べ物に時間がかかりました。NanoPi M4を使っている方がどれくらいいるのかわかりませんが、時間短縮に少しは貢献できるかもと思います。
カメラを使った動作確認までと思いましたが、記事が長くなるので一旦終わりにします。


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