本記事のテーマ
Raspberry PiでMediapipeをpipでインストールする
下記問題の解決
・RasbianOSではpipでMediapipeをインストールできない
・python-opencv-contribをインストールすると強制終了する
概要
今回はラズパイでpip installするためのwheelというものを作ってくださっている方がいるという情報を得ましたのでその方法を使用します。
主な流れは下記記事を参考にしました。
Raspberry Piで手軽にMediaPipeを楽しむ方法
RasbianOS(64bit)のインストール
Raspberry Pi Imagerを使ってSDカードに焼いているのですが、64ビットのRasbianがありませんでした。
記事によると以下からダウンロードできるということでお借りしました。
(こういう情報をどこから知るんでしょうか...?)
Index of /raspios_arm64/images
※今回は2021-10-30-raspios-bullseye-arm64.zipを使用
(raspios_arm64-2021-11-08/)
ダウンロードしたZipファイルをRaspberry Pi ImagerのCHOOSE OS→USE CUSTOMから選択します。
起動後、とりあえずお作法として
sudo apt-get update && sudo apt-get upgradeしています。
スワップファイルの拡張
pipでpython-opencv-contribをインストールするためにスワップファイルの拡張を行います。(これをしないと私は強制終了されてインストールできませんでした。。)
方法は下記を参考にしました。
ラズパイ(Raspbian Jessie)とスワップメモリ容量の変更(環境設定の続き) - 今日も微速転進
☆引用
エディタで/etc/dphys-swapfile
を開き、CONF_SWAPSIZE
という行の値を変更。例えば2048MB(2GB)なら以下のように変更。
CONF_SWAPSIZE=2048
設定したいSwapのサイズをMB単位で指定。
$ sudo systemctl stop dphys-swapfile $ sudo systemctl start dphys-swapfile
systemctl
経由でstop/start する。実際に呼び出されるのは/etc/init.d/dphys-swapfile
。 なお、swapの容量を変更した直後は内部でdd
コマンドが呼び出されるので非常に時間がかかります。
最後にfree -h
で意図した容量に設定されているか確認。
$ free -h total used free shared buffers cached Mem: 862M 833M 28M 6.3M 36M 656M -/+ buffers/cache: 140M 721M Swap: 2.0G 0B 2.0G
-h
は人間が読みやすい単位で出力するというオプション。
mediapipeのwheelを取得
今回の1. Binary typeはDebian/Bullseyeです。
v0.8.4/numpy120x/mediapipe-0.8-cp39-none-linux_aarch64_numpy120x_debian11_download.sh
下記コマンドを実行してインストールします。
$ sudo apt update && \
sudo apt install -y python3-dev protobuf-compiler python3-pip git make libssl-dev
$ sudo pip3 install pip --upgrade
$ cd && git clone https://github.com/PINTO0309/mediapipe-bin && cd mediapipe-bin
$ ./v0.8.4/numpy120x/mediapipe-0.8-cp39-none-linux_aarch64_numpy120x_debian11_download.sh
$ sudo pip3 install *.whl
$ sudo pip3 install opencv-python
この時、libcblas.so.3が見つからないというErrorが出たので下記を追加しました。
$ sudo apt-get install libatlas-base-dev
下記サイトを参考にしましたので他に足らないものがあればインストールしてみたら改善するかもしれません。
【Raspberry Pi】Raspberry Pi Zero WにOpenCVの環境を構築する - ソースに絡まるエスカルゴ
Sampleを動かす
以下コマンドで実行できます。
$ cd && git clone https://github.com/Kazuhito00/mediapipe-python-sample
$ cd mediapipe-python-sample
$ python3 sample_hand.py
この時model_complexityが見当たらないと言われたので#でコメントアウトすれば動くようになりました。
hands = mp_hands.Hands(
# model_complexity=model_complexity,
max_num_hands=max_num_hands,
min_detection_confidence=min_detection_confidence,
min_tracking_confidence=min_tracking_confidence,
)
以上、ご参考になると幸いです!
質問などは下のコメント欄でお待ちしております!