目次
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