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」を選択して進みます。
インストールが無事終了したら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を使っている方がどれくらいいるのかわかりませんが、時間短縮に少しは貢献できるかもと思います。
カメラを使った動作確認までと思いましたが、記事が長くなるので一旦終わりにします。
この記事が気に入ったらサポートをしてみませんか?