人工知性を作りたい

私が日々、挑戦したことや学んだことなどを紹介していく雑記ブログです。 (新しいAI技術HTM, 専門の音声信号処理, 趣味のアニメ等も書いてます。)

Raspberry PiでMediapipeをPythonで使用する【pipでインストール】

f:id:hiro-htm877:20211217074325p:plain

 

本記事のテーマ

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

f:id:hiro-htm877:20211217070735p:plain

※今回は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を取得

github.com

今回の1. Binary typeはDebian/Bullseyeです。

v0.8.4/numpy120x/mediapipe-0.8-cp39-none-linux_aarch64_numpy120x_debian11_download.sh

f:id:hiro-htm877:20211217071726p:plain

下記コマンドを実行してインストールします。

$ 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,

    )

 

f:id:hiro-htm877:20211217074106j:plain

 

以上、ご参考になると幸いです!

質問などは下のコメント欄でお待ちしております!