編集履歴一覧に戻る
airpocketのアイコン画像

airpocket が 2023年03月30日18時52分34秒 に編集

初版

タイトルの変更

+

Raspberry Pi OSにローカルAI実行環境を作る 2023/4/1

タグの変更

+

RaspberryPi

+

Bullseye

+

Buster

+

32bit

+

64bit

記事種類の変更

+

セットアップや使用方法

本文の変更

+

# はじめに raspberry pi上でエッジAIを動かしたいケースがあったのですが、OSのバージョンにより環境構築に違いがあり面倒だったのでまとめます。 よわよわなので自分でビルドするという選択肢はありません。 現在動作確認できている環境は表の通り。順次埋めていきます。 |OS|tensorflow|tflite|onnx|pytorch|opencv| |-|-|-|-|-|-| |Bullseye 32bit|×|○|○|×|○| |Bullseye 62bit|○|○|○|×|○| |Buster 32bit|ー|ー|ー|ー|ー| |Ubuntu Desktop 22.10 64bit|ー|ー|ー|ー|ー| ※〇:動作確認済み  ×:試してみたけど私には環境が作れない。  ー:これから試すところ。 # 環境 ## ハードウェア Raspberry Pi 4B+ 4GB ## OS ①Raspberry Pi OS Bullseye 32bit  Bullseye 32bitは現行バージョンの標準OSです。 ```sh $ uname -a Linux raspberry 5.15.84-v7l+ #1613 SMP Thu Jan 5 20:01:26 GMT 2023 armv7l GNU/Linux $ getconf LONG_BIT 32 ``` ②Raspberry Pi OS Bullseye 64bit  Bullseye 64bitは現行の64bitバージョンです。64bitに対応していないパッケージが使えないことがありますが、新しいアプリケーションは64bit版をターゲットに開発されているものも多い様です。 ③Raspberry Pi OS Buster 32bit  Buster 32bitは旧バージョンの標準OSです。現在はLegacyとして公開されています。現行バージョンの公開が2021年11月だった様ですので、それ以前の記事はBusterをターゲットにしていることが多いかと思います。Busterは2019年7月公開です。 ④Ubuntu Desktop 22.10 64bit ## 導入するAI実行環境 ①tensorflow ②tflite ③pytorch ④onnx ## その他ツール類 画像処理に欠かせないopencv-python を導入します。 # update パッケージを更新します。 ``` sudo apt update sudo apt -y upgrade ``` # tensorflowの導入 ## Bullseye 32bit Bullseye 32bit版向けのいいバイナリが見つかりません。 知ってる人は教えてください。 ## Bullseye 64bit PINTOさん謹製ランタイムです。 ``` sudo apt-get install -y libhdf5-dev libc-ares-dev libeigen3-dev gcc gfortran \ libgfortran5 libatlas3-base libatlas-base-dev \ libopenblas-dev libopenblas-base libblas-dev \ liblapack-dev cython3 libatlas-base-dev openmpi-bin \ libopenmpi-dev python3-dev python-is-python3 sudo pip3 install pip --upgrade sudo pip3 install keras_applications==1.0.8 --no-deps sudo pip3 install keras_preprocessing==1.1.2 --no-deps sudo pip3 install numpy==1.24.2 sudo pip3 install h5py==3.6.0 sudo pip3 install pybind11==2.9.2 pip3 install -U --user six wheel mock sudo pip3 uninstall tensorflow TFVER=2.12.0rc0 PYVER=39 ARCH=`python -c 'import platform; print(platform.machine())'` echo CPU ARCH: ${ARCH} sudo -H pip3 install \ --no-cache-dir \ https://github.com/PINTO0309/Tensorflow-bin/releases/download/v${TFVER}/tensorflow-${TFVER}-cp${PYVER}-none-linux_${ARCH}.whl ``` ## Buster 32bit ## Ubuntu Desktop 22.10 64bit # tfliteの導入 ## Bullseye 32bit ``` sudo pip install tflite_runtime ``` で入りますが、PINTO様謹製ならこちら ``` sudo apt install -y swig libjpeg-dev zlib1g-dev python3-dev unzip wget python3-pip curl git cmake make sudo pip3 install numpy==1.24.2 TFVER=2.11.0 PYVER=39 ARCH=arm7l sudo -H pip3 install \ --no-cache-dir \ https://github.com/PINTO0309/TensorflowLite-bin/releases/download/v${TFVER}/tflite_runtime-${TFVER/-/}-cp${PYVER}-none-linux_${ARCH}.whl ``` githubのUSAGEでは、ARCHの設定がarmhfとありますが、arm7lが正解の様です。 2023年4月1日現在、最新ビルドは2.12.0-rc0ですが、インタプリタのインポート時にエラーが発生する為、バージョンを落として回避しています。 ## Bullseye 64bit PINTO様謹製です。 ``` sudo apt install -y swig libjpeg-dev zlib1g-dev python3-dev unzip wget python3-pip curl git cmake make sudo pip install numpy==1.24.2 TFVER=2.11.0 PYVER=39 ARCH=aarch64 sudo -H pip3 install --no-cache-dir https://github.com/PINTO0309/TensorflowLite-bin/releases/download/v${TFVER}/tflite_runtime-${TFVER/-/}-cp${PYVER}-none-linux_${ARCH}.whl ``` 2023年4月1日現在、最新ビルドは2.12.0-rc0ですが、インタプリタのインポート時に以下のエラーが発生する為、バージョンを落として回避しています。 ```python >>> from tflite_runtime.interpreter import Interpreter Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.9/dist-packages/tflite_runtime/interpreter.py", line 33, in <module> from tflite_runtime import _pywrap_tensorflow_interpreter_wrapper as _interpreter_wrapper ImportError: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /usr/local/lib/python3.9/dist-packages/tflite_runtime/_pywrap_tensorflow_interpreter_wrapper.so) ``` ## Buster 32bit ## Ubuntu Desktop 22.10 64bit # onnxの導入 ## Bullseye 32bit ``` wget https://github.com/nknytk/built-onnxruntime-for-raspberrypi-linux/raw/master/wheels/bullseye/onnxruntime-1.14.0-cp39-cp39-linux_armv7l.whl sudo pip install onnxruntime-1.14.0-cp39-cp39-linux_armv7l.whl ``` ## Bullseye 64bit ``` sudo pip install onnxruntime ``` ## Buster 32bit ## Ubuntu Desktop 22.10 64bit # pytorchの導入 pytorchは今のところまともに動く環境が作れていません。情報求。 ## Bullseye 32bit ## Bullseye 64bit ## Buster 32bit ## Ubuntu Desktop 22.10 64bit # oepncv-pythonの導入 ## Bullseye 32bit ``` sudo pip install opencv-python==4.6.0.66 sudo apt install libatlas-base-dev sudo pip install -U numpy ``` ## Bullseye 64bit ``` sudo pip install opencv-python==4.7.0.72 ``` ## Buster 32bit ## Ubuntu Desktop 22.10 64bit # まとめ まだ確認中ですが、Raspberry Pi でAI環境整えるならBullseye 64bit版が良さそうに思えます。