Raspberry Piで、Tensorflow Liteを動かしてみよう!

教育用のマイコンRaspberry Piで、Tensorflowで学習したAIモデルを動かしてみます。Tensorflow Liteでは、モバイル用に推論処理をすることができます

images/cards/tensorflowlite-raspberrypi.webp

目次

1. Tensorflow Lite

TensorFlow Lite は、モバイル、マイクロコントローラ、その他のエッジデバイスにモデルをデプロイするためのモバイル ライブラリです。 TensorFlow で学習したモデルを、TensorFlow Lite 用ファイル(.tflite)に変換することで、TensorFlow Lite で推論処理を実行することができます。

2. .tflite ファイル

TensorFlow Lite モデルは、FlatBuffers と呼ばれる専用の効率的なポータブル フォーマット(ファイル拡張子「.tflite」で識別されます)で表されます。このフォーマットは、TensorFlow のプロトコル バッファ モデル フォーマットに比べて、サイズの縮小(コードのフットプリントが小さくなる)や推論速度の向上(追加の解析と解凍のステップを経ずにデータに直接アクセスできる)などの利点があります。これにより、TensorFlow Lite を計算リソースやメモリリソースが限られたデバイスで効率的に実行できます。

3. 開発環境の確認

  • ハードウェア:Raspberry Pi 3 Model B Rev 1.2
  • OS:Raspbian 11(bullseye)
  • Python: 3.9.2
  • OpenCV-Python: 4.6.0.66
$ cat /proc/cpuinfo
Model           : Raspberry Pi 3 Model B Rev 1.2

$ lsb_release -a
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

4. Tensorflow Lite のインストール

PINTO0309 さんのPINTO0309/TensorflowLite-binリポジトリが非常に導入し易いです。

sudo apt install swig libjpeg-dev zlib1g-dev python3-dev unzip wget python3-pip curl git cmake make libffi-dev
sudo pip3 install numpy==1.24.2
wget "https://raw.githubusercontent.com/PINTO0309/TensorflowLite-bin/main/2.11.0/download_tflite_runtime-2.11.0-cp39-none-linux_armv7l.whl.sh"
chmod 755 download_tflite_runtime-2.11.0-cp39-none-linux_armv7l.whl.sh
 ./download_tflite_runtime-2.11.0-cp39-none-linux_armv7l.whl.sh
sudo pip3 install --upgrade tflite_runtime-2.11.0-cp39-none-linux_armv7l.whl

私の環境だと、Tensorflow が 2.12.0 だと、「ImportError: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.33’ not found」ということだったので、 この記事を参考に、 2.11.0 をインストールするのに成功した。

5. テスト画像にて動作確認

cd && git clone https://github.com/PINTO0309/TensorflowLite-bin
cd ~/TensorflowLite-bin
python3 mobilenetv2ssd.py

6. USB カメラ接続にて動作確認

cd ~/TensorflowLite-bin
python3 mobilenetv2ssd-sync-usbcam.py

参考

関連記事