M5StackのUnitV2をみて、手元のラズパイZeroでも何かできないかと思って調整してみました。
調べてみるとTensorflow Liteが動くようなので、サンプルの画像分類を試してみました。
※ラズパイZero(ARMv6)向けのWheelパッケージは用意されていませんので、自前で作成する必要があります。手順は後ろに載せています
サンプルプログラムの実行
git clone https://github.com/tensorflow/examples --depth 1
cd examples/lite/examples/image_classification/raspberry_pi/
bash download.sh /tmp
python3 classify_picamera.py --model /tmp/mobilenet_v1_1.0_224_quant.tflite --labels /tmp/labels_mobilenet_quant_v1_224.txt
結果1(Mobilenet_V1_1.0_224_quant)
動作はするのですが、1回の推論に10秒近くかかります。。遅い。。
使用するモデルを軽いものに変えてみます。
ここの中からMobilenet_V1_1.0_128_quantに変更してみます。
cd /tmp/
wget https://storage.googleapis.com/download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_128_quant.tgz
tar zxvf mobilenet_v1_1.0_128_quant.tgz
ラベルは見つからなかったのでサンプルに含まれるものを使いまわしましょう
python3 classify_picamera.py --model /tmp/mobilenet_v1_1.0_128_quant.tflite --labels /tmp/labels_mobilenet_quant_v1_224.txt
結果2(Mobilenet_V1_1.0_128_quant)
3.5秒ぐらいなので、まあまあ早くなりました。
ラズパイZero向けのPython Wheelパッケージを作成する
残念ながらラズパイZero(ARMv6)向けのWheelパッケージは用意されていません。
ラズパイ2以降のARMv7用は用意されています。
https://www.tensorflow.org/lite/guide/python
ただ、自分でビルドする手順は用意されていましたので、それに沿ってやってみました。
VSCodeでDocker in Dockerコンテナを起動
ここは好みですが、ホスト環境を汚さずビルドしたかったので、Docker内で行おうと思いました。
ただ、ビルドにDokcerを使用する仕組みだったので、Dockerの中でDockerが起動可能な「Docker in Docker」の形で行いました。
vscodeを起動し、左下の「リモートウィンドウを開きます」ボタンから始めます
「Add Development Container Configuration Files...」を選択
これで設定ファイルができました
ここから先はコンテナ内での作業になります。
Python Wheelパッケージの作成
公式の手順はこちらです。
https://www.tensorflow.org/lite/guide/build_cmake
https://www.tensorflow.org/lite/guide/build_cmake_pip
cd # 作業は/root配下で行いました
sudo apt-get update
sudo apt-get install cmake -y
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
cd tensorflow_src/
tensorflow/tools/ci_build/ci_build.sh PI-PYTHON37 tensorflow/lite/tools/pip_package/build_pip_package_with_cmake.sh rpi0 # 最後のrpi0が重要です
これでWheelパッケージが作成されます
出力先はこちらです
~/tensorflow_src $ ls -l tensorflow/lite/tools/pip_package/gen/tflite_pip/python3.7/dist/
total 2776
-rw-r--r-- 1 vscode vscode 1414958 Jun 6 05:39 tflite_runtime-2.6.0-cp37-cp37m-linux_armv6l.whl
-rw-r--r-- 1 vscode vscode 1422521 Jun 6 05:39 tflite-runtime-2.6.0.linux_armv6l.tar.gz
~/tensorflow_src $
ラズパイZeroにTensorFlow Liteをインストールする
sudo apt-get update
sudo apt install libatlas-base-dev -y
pip install tflite_runtime-2.6.0-cp37-cp37m-linux_armv6l.whl