🐕

PINTO model zoo を散歩しようとしたらつまづいた

2021/12/27に公開2

PINTO model zooとは?
に沿ってRaspberry piで散歩しようとしたらつまづいてしまった時のメモです。
(わたしが何らか手順を間違っていた可能性が大ですので、参考程度にご覧ください)

ハードウェア

ハードウェアはこれです。
Raspberry Pi 400 スターターキット(日本語キーボード)

OS versionなどは以下のとおりです。
スターターキットのuSDにインストール済みのものをそのまま使用しています。

$ uname -a
Linux xxx 5.10.63-v7l+ #1459 SMP Wed Oct 6 16:41:57 BST 2021 armv7l GNU/Linux
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

仮想環境

pyenvでpythonの仮想環境を作ります。
pythonは後述のtensorflowのpackageをインストール際の推奨versionの ver3.7.3 を選択しました。
https://karaage.hatenadiary.jp/entry/2016/04/04/073000

install pacakges

Tensorflow

32bit版osではver2.7を選択できなかったのでver2.5を選択しました。
https://github.com/PINTO0309/Tensorflow-bin
Example of Python 3.x + Tensorflow v2 series に従って各種インストールします。ただし、pythonは仮想環境を使っているので pip3 でinstallするところはすべてsudoは不要です。

$ 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
$ pip3 install pip --upgrade
$ pip3 install keras_applications==1.0.8 --no-deps
$ pip3 install keras_preprocessing==1.1.0 --no-deps
$ pip3 install numpy==1.19.5
$ pip3 install h5py==3.1.0
$ pip3 install pybind11
$ pip3 install -U six wheel mock
$ wget "https://raw.githubusercontent.com/PINTO0309/Tensorflow-bin/main/tensorflow-2.5.0-cp37-none-linux_armv7l_numpy1195_download.sh"
$ ./tensorflow-2.5.0-cp37-none-linux_armv7l_numpy1195_download.sh
$ pip3 uninstall tensorflow
$ pip3 install tensorflow-2.7.0-cp37-none-linux_aarch64_numpy1195_download.whl

【Required】 Restart the terminal.

opencv

numpyのversionが合わないとimport cv2したときにエラーが発生します。
少しversionが古いですが下記を参考にver3.4.6.27を選択しました。
https://github.com/karaage0703/pose_estimation_pi

pip3 --default-timeout=1000 install opencv-python==3.4.6.27

onnxrumtime

pipでは適当なversionがpypi.orgから見つけられないのでinstalllできません。

$ pip3 install onnxruntime
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
ERROR: Could not find a version that satisfies the requirement onnxruntime (from versions: none)
ERROR: No matching distribution found for onnxruntime

なのでbuildするか、build済みのものを探します。
通常はbuild済みのものを使えばいいと思います。

build済みを入手する場合

下記でビルド済みの.whlを入手してinstallする。
https://github.com/nknytk/built-onnxruntime-for-raspberrypi-linux

$ wget https://github.com/nknytk/built-onnxruntime-for-raspberrypi-linux/raw/master/wheels/buster/onnxruntime-1.6.0-cp37-cp37m-linux_armv7l.whl
$ pip3 install onnxruntime-1.6.0-cp37-cp37m-linux_armv7l.whl

buildする場合

↑でインストールできればこれは不要です。
最初build済みのものが見つからず、自分でbuildしていたらだいぶハマりました。

記録を残していなかったのであいまいですが下記に従って進めました。
https://qiita.com/linyixian/items/bd7b8378da8c1fc9d24d

ただし、インストールしたcmakeが古かったので、cmakeもビルドしました。

$ wget https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0.tar.gz
$ tar xvzf cmake-3.22.0.tar.gz
$ cd cmake-3.22.0
$ ./bootstrap && make && sudo make install

onnxruntimのビルドは以下のとおりです。

$ git clone --single-branch --branch v1.6.0 --recursive https://github.com/Microsoft/onnxruntime onnxruntime
$ cd onnxruntime
$ ./build.sh --use_openmp --config Release --update --build --build_shared_lib --build_wheel --arm
$ cd build/Linux/Release/onnxruntime/
$ pip3 install ./build/Linux/Release/dist/onnxruntime-1.6.0-cp37-cp37m-linux_armv7l.whl

動作確認

Webcamをつないで
PINTO model zooとは?
記載の姿勢検出のデモ(007_mobilenetv2-poseestimation)の動作確認ができました。

Discussion

zinzirogezinziroge

ありがとうございます。ググったときにそのレポジトリーにたどり着けませんでしたorz