ついにGoogleの最新版のmediapipe 0.10.3からaarch64に対応したので、Raspberry Pi4でUSBカメラからの映像をObject detectionを使用して動作させてみました。(2023年10月)
最終更新日:2023年10月12日
※ 2023年10月10日にリリースのmediapipe 0.10.7で動作確認済み
2023年8月2日にmediapipe 0.10.3がリリースされました。このバージョンからaarch64に対応したwhlファイルが含まれています。試しにRaspberry Pi4で動作確認を行います。
mediapipeのリポジトリを確認したところ、aarch64のwhlがありました。cp38~cp311まで用意されているので、python3.8~python3.11で使用できます。
環境
本記事を参考に、mediapipeを試すには以下のものが必要です。
Raspberry Pi 4
SDカード32GB (32GB以上であれば問題ないです)
USBマウス
USBキーボード
USBカメラ
インターネット接続
前提条件
Raspberry Pi 4のOSは64bit版であること。
Raspberry Pi 4にDockerをインストール済みであること。
Raspberry Pi 4の64bit版のOSの書き込み方法とDockerのインストールは以下の記事を参考にしてください。
準備
Raspberry Pi 4のデスクトップにmpフォルダを新規作成します。
Raspberry Pi 4にUSBカメラを接続します。
ここで作成したmpフォルダをDockerコンテナにマウントするため、必ずデスクトップにmpという名称のフォルダを作成してください。
Dockerイメージの入手
ベースとするDockerイメージを入手します。ターミナルを開いて以下のコマンドを入力します。
$ sudo docker pull python:3.8.16-buster
Dockerイメージをダウンロードできたか確認します。以下のコマンドを入力します。
$ sudo docker images
以下のようにTAGに3.8-slim-busterとあれば成功です。
note@raspberrypi:~/Desktop/mp $ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.8-slim-buster 8efd70673d8f 4 weeks ago 110MB
以上でDockerイメージの入手の説明は終了です。
Dockerコンテナの起動
以下のコマンドを入力しますが、コマンド中のUSERはお使いの環境に合わせて変更してください。
※ pwdと入力するとUSERが何かわかるはずです。
※ docker runコマンド入力時、--rmを付与していないため、コンテナ停止時に削除されずに残ります。再度、起動したい場合はsudo docker start <コンテナID >で起動できます。
$ sudo docker run -it --network host --name mediapipe --device=/dev/video0:/dev/video0 -v /tmp/X11-unix:/tmp/X11-unix:rw -e DISPLAY=$DISPLAY -v /home/USER/Desktop/mp:/mp python:3.8.16-buster bash
コマンドの入力後、コンテナの中に入った状態で始まります。コンテナの中では先頭に#が付与されます。
本記事の執筆時に私が使用したRaspberry Pi 4のUSERはnoteです。参考に入力したコマンドは以下となります。
note@raspberrypi:~/Desktop/mp $ sudo docker run -it --network host --name mediapipe --device=/dev/video0:/dev/video0 -v /tmp/X11-unix:/tmp/X11-unix:rw -e DISPLAY=$DISPLAY -v /home/note/Desktop/mp:/mp python:3.8.16-buster bash
root@raspberrypi:/#
以上でDockerコンテナの起動の説明は終了です。
ライブラリのインストール
コンテナの中で以下のコマンドを順番に入力します。
apt update
pip3 install mediapipe==0.10.7
apt install cython3 python3-opencv
apt install cython3 python3-opencvの入力時、以下の表示がされるのでキーボードのyを入力してEnterキーを押します。
0 upgraded, 245 newly installed, 0 to remove and 8 not upgraded.
Need to get 148 MB of archives.
After this operation, 813 MB of additional disk space will be used.
Do you want to continue? [Y/n]
ライブラリのインストールが完了したら、以下のコマンドを入力して内容を確認します。
pip3 list
私の環境では以下のようになりました。mediapipeのバージョンが0.10.7であることを確認します。
root@raspberrypi:/# pip3 list
Package Version
--------------------- --------
absl-py 2.0.0
attrs 23.1.0
cffi 1.16.0
contourpy 1.1.1
cycler 0.12.1
flatbuffers 23.5.26
fonttools 4.43.1
importlib-resources 6.1.0
kiwisolver 1.4.5
matplotlib 3.7.3
mediapipe 0.10.7
numpy 1.24.4
opencv-contrib-python 4.8.1.78
packaging 23.2
Pillow 10.0.1
pip 22.0.4
protobuf 3.20.3
pycparser 2.21
pyparsing 3.1.1
python-dateutil 2.8.2
setuptools 57.5.0
six 1.16.0
sounddevice 0.4.6
wheel 0.40.0
zipp 3.17.0
以上でライブラリのインストールの説明は終了です。
Object Detectionの学習済みモデルのダウンロード
以下のリンクからObject Detectionの学習済みモデルをダウンロードします。
以下の赤枠のモデルを使用してみます。
ダウンロードしたら、デスクトップのmpフォルダの中にコピーしてください。
以上でObject Detectionの学習済みモデルのダウンロードの説明は終了です。
Object Detectionを使用したpythonコードの作成
デスクトップのmpフォルダにobject_note.pyというファイルを新規作成してください。
ここから先は
この記事が気に入ったらチップで応援してみませんか?