見出し画像

ついに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カメラ

  • インターネット接続

前提条件

  1. Raspberry Pi 4のOSは64bit版であること。

  2. Raspberry Pi 4にDockerをインストール済みであること。

Raspberry Pi 4の64bit版のOSの書き込み方法とDockerのインストールは以下の記事を参考にしてください。

準備

  1. Raspberry Pi 4のデスクトップにmpフォルダを新規作成します。

  2. 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のUSERnoteです。参考に入力したコマンドは以下となります。

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の学習済みモデルをダウンロードします。

以下の赤枠のモデルを使用してみます。

Object Detection学習済みモデル一覧

ダウンロードしたら、デスクトップのmpフォルダの中にコピーしてください。

以上でObject Detectionの学習済みモデルのダウンロードの説明は終了です。

Object Detectionを使用したpythonコードの作成

デスクトップのmpフォルダにobject_note.pyというファイルを新規作成してください。

ここから先は

4,017字 / 1画像 / 1ファイル

この記事が気に入ったらチップで応援してみませんか?