ラズパイ3×PoseNetで姿勢推定

関係ない話

初めて投稿します。
クリスマスイブに動確を終わらせ、クリスマスに草稿を書き、翌朝に書き上げてます。
素晴らしいクリスマスでした。ええ。

概略

ラズベリーパイで動作可能な姿勢推定ライブラリPoseNetなるものを知り、動かしてみたいと思い立った。
TensorFlow Liteのバージョンの組み合わせによる問題がいくつか発生したが、解決し、動かしてみることに成功。
Edge TPU環境の構築から、PoseNetサンプルであるpose_camera.pyを動作させるところまでできたので、手順を書く。

イントロ

ラズベリーパイで動作可能な姿勢推定ライブラリにPoseNetというものがあるらしい。
面白そうなので、ひとまず動作をさせてみようと思い立ち、ラズパイカメラとCoral USB Acceleratorを購入し、お試し。
ゆくゆくは野球の動作解析とかに使ってみたい所存。

実験環境

実験日:2020/12下旬
マシン:RaspberryPi 3 Model B
Python:Python3.7.3
カメラ:Raspberry Pi Camera V2
EdgeTPU:Coral USB Accelerator - USB AI アクセラレータ
https://www.amazon.co.jp/gp/product/B07S214S5Y/ref=ppx_yo_dt_b_asin_title_o05_s00?ie=UTF8&psc=1

Edge TPU環境構築

公式ページを参考に進める
https://coral.ai/docs/accelerator/get-started/#1c-on-windows

1a: On Linux

指示通りコマンドを実行する。
Coral USB Acceleratorは外した状態で実行すること。 

echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" \
| sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg \
sudo apt-key add -
sudo apt-get update
sudo apt-get install libedgetpu1-max

2: Install the TensorFlow Lite Library

注意!公式サイトの最新をインストールしたら動作せず。
リンクを参考に他の人の動作実績があるバージョンを採用する
https://qiita.com/rhene/items/7b34f60b73645d430789

pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl

3: Run model using the TensorFlow Lite API

任意のディレクトリに移動。ここでは[~/]で実行

mkdir coral && cd coral
git clone https://github.com/google-coral/tflite.git
cd tflite/python/examples/classification
bash install_requirements.sh

Coral USB Accelerator - USB AI アクセラレータをラズパイに接続する

python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/parrot.jpg

画像1

こんな感じの出力になればOK

ここまでの注意事項

インストールしたTensorFlow Lite runtimeのバージョンによって動作しないことがある。
実験当時最新であった2.5.0では動作せず。
_edgetpu_cpp_wrapperが無い、というようなエラーだった気がする。

TensorFlow Liteとのバージョンの組み合わせで問題が起こっている人はたくさんいる様子。
当然、この記事の組み合わせでも突然動作しなくなることは考えられるので注意。

PoseNetを動作させてみる

必要なものをインストールする。

pip3 install numpy
pip3 install svgwrite
sudo apt install python3-gst-1.0

ソースをクローンし、実行する

git clone https://github.com/google-coral/project-posenet.git
cd project-posenet/
python3 pose_camera.py


動いた!!!
ただ、結構判定は怪しいし、FPSも5くらいしか出てない。

注意点

ハマったポイントとしてはとにかくTensorFlow Liteのバージョンの組み合わせ。

終わりに

ソースコードを見て閾値の変更や録画に対応したい。
Raspberry Pi 4で動作もさせてみたい。持ってないけど。

参考

https://qiita.com/rhene/items/7b34f60b73645d430789
https://coral.ai/docs/accelerator/get-started/#2-install-the-tensorflow-lite-library
https://github.com/google-coral/project-posenet
https://github.com/google-coral/tflite

この記事が気に入ったらサポートをしてみませんか?