Raspberry Piで手軽にMediaPipeを楽しむ方法
MediaPipeをラズパイでもpipで入れたい
OSC2021 Nagoyaでの @KzhtTkhsさんのMediaPipeに関する発表をみたあと
「MediaPipeよいのだけど、Arm系のラズパイとかApple Silicon Macだとpipでそのまま入らないんだよなー」
とつぶやいたら、なんとビルドジャンキーの @PINTO03091さんが一瞬でRaspberry Pi用のwheelパッケージをビルドしてリポジトリを公開してくださっていました。
最高ですね。とりあえずメモがてら動かし方の手順を残しておきます。
Raspberry PiでMediaPipeを手軽に動かす方法
Raspberry Pi OS(64bit)で動かす方法と、Ubuntu(64bit)で動かす方法の2つがあります。
それぞれ手順が多少異なります。お好きな方を選択ください。
事前準備
OS関係なく、以下が必要です。
- Raspberry Pi 4
- microSDカード + SDカードリーダー
- USBカメラ
試していませんが、Raspberry Pi 3でも問題ないと思います。
Raspberry Pi OS(64bit)でのカメラモジュールの使い方
Raspberry Pi OS(64bit)で、Raspberry Pi用カメラモジュールを使用する場合は、32bit版とは異なる手順が必要なので注意してください。
まず画面左上のスタートボタンから 設定 > Raspberry Piの設定でカメラをEnableにした後、再起動します。その上で、ターミナルで以下コマンド実行して、supported=1 detected=1
となることを確認します。
$ vcgencmd get_camera
supported=1 detected=1
ここまでは32bit版と同じです。この後、64bit版の場合は以下コマンドを実行します。
$ sudo modprobe bcm2835-v4l2
これで、Open CVでラズパイカメラモジュールの入力を扱えるようになります。
Raspberry Pi OS(64bit)にMediaPipeをインストールする方法。
Raspberry Pi OS(64bit)のイメージをサイトからダウンロードします。
私は、以下の2021-05-07
のバージョンのRaspberry Pi OSを用いました。
好きな書き込みソフトでイメージを書き込みましょう。私はRaspberry Pi Imagerを使いました。Raspberry Pi Imagerの使い方やインストール方法に関しては、以下記事参照ください。
カスタムイメージで、先程ダウンロードした64bitのRaspberry Pi OSのイメージファイルを選択します。zipファイルのままで問題ありません。
@PINTO03091さんのリポジトリのREADME、ほぼそのままでOKです。
私の環境では、以下コマンド実行すればOKでした。
$ 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-cp37-none-linux_aarch64_numpy120x_download.sh
$ sudo pip3 install *.whl
$ sudo pip3 install opencv-python
Ubuntu 20.04.2(64bit)にMediaPipeインストール
Raspberry Pi Imagerを使ってmicroSDにOSイメージを書き込みます。Raspberry Pi Imagerの使い方やインストール方法に関しては、以下記事参照ください。
Raspberry Pi Imagerを起動したら Other general purpose OS > Ubuntu > Ubuntu Server 20.04.2 LTS(64-bit)を選択してmicroSDカードに書き込みます。32bitと間違えないように注意しましょう。
Raspberry PiでUbuntuを起動した後、以下コマンドでGUI(デスクトップ)をインストールします。
$ sudo apt update
$ sudo apt install -y ubuntu-desktop
$ sudo shutdown -r now
sudo apt install -y ubuntu-desktop
でCould not get lock /var/lib/dpkg/lock-frontend
というエラーが出る場合は、以下コマンド実行して再起動してから、コマンドを実行しなおしましょう。
$ sudo rm /var/lib/apt/lists/lock
$ sudo rm /var/cache/apt/archives/lock
$ sudo rm /var/lib/dpkg/lock*
再起動したら、GUI画面が立ち上がります。
続いて、MediaPipeをインストールします。Raspberry Pi OSと同様@PINTO03091さんのリポジトリのREADME、ほぼそのままでOKです。
私の環境では、以下コマンド実行すればOKでした。
$ sudo apt update && \
sudo apt install -y python3-dev protobuf-compiler python3-pip git make libssl-dev
$ sudo pip3 install pip --upgrade
$ curl -O https://raw.githubusercontent.com/PINTO0309/mediapipe-bin/main/v0.8.4/numpy120x/mediapipe-0.8-cp38-none-linux_aarch64_numpy120x_download.sh
$ chmod 755 mediapipe-0.8-cp38-none-linux_aarch64_numpy120x_download.sh
$ sudo pip3 install *.whl
$ pip3 install opencv-python
MediaPipeのサンプルを動かす
@KzhtTkhsさんのサンプルリポジトリを使うと、MediaPipeのサンプルを簡単に動かせます。
以下コマンドで実行できます。
$ cd && git clone https://github.com/Kazuhito00/mediapipe-python-sample
$ cd mediapipe-python-sample
$ python3 sample_hand.py
実行結果です。
手の検出が8fpsとなかなかの速度で動きます。
@KzhtTkhsさんの身体を張ったテストによると、その他のモデルでの実行速度は、以下のような感じみたいです。
まとめ
MediaPipeを比較的簡単にラズパイで動かす方法を紹介しました。@KzhtTkhsさん@PINTO03091さんのおかげですね。感謝!
小型なラズパイでMediaPipeが動かせると、色々応用できそうですね。この調子でM1 MacbookやJetson Nanoでも手軽に楽しめるようになるといいですね(Jetson Nanoだとそのまま同じ手順で動くかもとのこと。興味ある方は是非チャレンジしてみてください)。
Raspberry Piに関しては、ブログやラズパイマガジンでも色々記事を書いていますので、ラズパイに興味ある方はこの下の関連記事なども参考にしてみてください。
関連記事
参考リンク
変更履歴
- 2021/05/31 Raspberry Pi OS(64bit)でのセットアップ方法を追記
Discussion