Raspberry Pi で Tensorflow Lite を実行しようとすると “GLIBCXX 3.4.29” エラーが出ました。
対処方法についてまとめておきます。
環境:
Raspberry Pi (bullseye)
Python 3.9.2
Tensorflow Lite object detection 等をインストール済み
背景 ~ 環境を新しくするとエラーが出る …
Raspberry Pi の起動用SDカードを作り直し、以前から動かしていた Tensorflow Lite などのインストールを行いました。
ところが、あらたな環境でオブジェクト認識などのプログラムを動かそうとすると、下記のエラーが出ます。以前の環境では動いていました。
いくらか試行錯誤したところ動くようになりましたので、ポイントを整理して公開しておくことにします。
エラーの詳細
① Raspberry Pi の起動用のSDカードをあらたに設定する。
OpenCV などもインストールして動作確認を行う。(2024年4月)
② Tensorflow Lite の物体認識などのプログラムをインストールする。
(手順の詳細は、下記の関連リンクを参照してください。)
③ 物体認識のサンプルコードを実行しようとすると、以下のようなエラーが表示される。
エラー表示の概要
ImportError: /lib/arm-linux-gnueabihf/libstdc++.so.6:
version `GLIBCXX_3.4.29' not found
(required by /home/pi/.local/lib/python3.9/site-packages/tensorflow_lite_support/
metadata/cc/python/_pywrap_metadata_version.so)
※ Python のスクリプトでのインポート時にエラーが出ており、“GLIBCXX_3.4.29” が見つからないといっています。
対処方法
環境の確認
Raspberry Pi でターミナルを起動し、Python のバージョンと、インストールされているパッケージのバージョンを確認します。
$ python --version
Python 3.9.2
$ pip list
…
tflite-runtime 2.13.0
tflite-support 0.4.4
…
※ Python のバージョン(3.9.2 以降)を確認しておきます。
※ また、Tensorflow Lite の関連パッケージ(tflite …)についても、バージョンを確認しておきます。
tflite-support のバージョンを指定してインストールしなおす
下記の外部リンクを参照すると、Python のバージョンを 3.9.2 (以降?)としたとき、Tensorflow Lite の関連パッケージ tflite-support の最新バージョン(0.4.4 以降)は動かないようです。
そこで、以下を実行します。(バージョンを下げます。)
$ python -m pip install --upgrade tflite-support==0.4.3
→ Tensorflow Lite のオブジェクト認識等のプログラムが動くようになりました!(私の環境では)
まとめ
Tensorflow Lite で “GLIBCXX …” エラーが出たときの対処方法についてまとめました。
ネット検索をしたところ情報が古いものが大半で、また、日本語で解説されたものが見あたりませんでした。
そこで、対処方法についてポイントをまとめ、公開しておくことにします。
Tensorflow Lite の添付のプログラムが動いたら、静止画を使ったオブジェクト検出のプログラムなどもこのサイトで公開しています。もし、興味があるようでしたら、関連リンクなども参照してみてください。
関連リンク
・ 静止画でオブジェクト検出 【Raspberry Pi & Tensorflow Lite】
・ TensorFlow Lite を Raspberry Pi にインストール
・ Raspberry Pi で物体検出をやってみた