【MediaPipe】Poseを動かしてみた(v0.7.9)

2020.08.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

カフェチームの山本です。

先日、MediaPipeがアップデートされ、v0.7.9が公開されました。

Release MediaPipe Pose · google/mediapipe

今回は、この変更で追加されたPoseという骨格検出を動かしてみたいと思います。

(今まで投稿したMediaPipe関連記事はこちらにまとめてあります。)

【MediaPipe】投稿記事まとめ

Poseの動かし方

今回はAndroidのAPK版とWeb版で動かしました。Android版はこちらのページの「Example Apps」「Mobile」「Android target」の項目に、APKへのリンクがありますので、そこからダウンロードして使用できます。Web版はVisualizerのページに飛んで、右上の非常口のピクトグラムのようなボタンを押すと実行できます。(どちらもとても簡単ですね)

WSLやUbuntuから動かしたい場合は、今までと同様にビルドと実行のコマンドを打つことで実行できると思われます。コマンドとしては以下のようになると思われます(未確認)。入出力ファイルへのパスは適宜変更してください。

bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 \
ediapipe/examples/desktop/upper_body_pose_tracking:upper_body_pose_tracking_gpu
GLOG_logtostderr=1 bazel-bin/mediapipe/examples/desktop/upper_body_pose_tracking/upper_body_pose_tracking_gpu \
--calculator_graph_config_file=mediapipe/graphs/pose_tracking/upper_body_pose_tracking_gpu.pbtxt \
--input_video_path="/mnt/c/Users/yamamoto.hiroki/Pictures/Camera Roll/sample.mp4" \
--output_video_path="/mnt/c/Users/yamamoto.hiroki/Pictures/Camera Roll/output.mp4"

GPUではなくCPUで動かす場合には、2つのコマンドの「upper_body_pose_tracking_gpu」を「upper_body_pose_tracking_cpu」に変更すれば良いはずです。

Poseの処理の様子

Web版での処理の様子は下の動画のようでした。(他のプログラムでもそうだったのですが)Web版だと画面が定期的に揺れるのですが、通常のプログラムでは問題ありません。

どちらも2人が横に並んでも、処理結果を描画するのは1人まででした。ネットワーク図を見ての推測ですが、検出自体は複数人していて、描画のみ1人になっているように思われます。

正面からの検出

結果は以下のようでした。基本的には、体の正面・後ろのどこからでも検出ができていました。ただ、00:30~のように、体を横にした状態で手を前に出すと、すこし検出が悪くなりました。また、マスクをしているからかも知れませんが、目の検出位置が実際よりも下に出ることが多かったです。

上からの検出

真上からでは難しいですが、ある程度角度がついて体が見えている状態では、比較的安定して検出ができました。ただし、手を前に出したり、中腰になると検出が悪くなりました。

Poseの内容

利用されているモデル

CVPR2020で発表されたBlazePoseを軽量化したモデルが利用されているようです。BlazePose自体は全身の骨格を検出できますが、MediaPipeでは上半身のみを検出するモデルになっていると書かれています。

Pose

On-device, Real-time Body Pose Tracking with MediaPipe BlazePose

まとめ

MediaPipeがアップデートされ、v0.7.9が公開されました。ここで追加されたPose(上半身の骨格検出)を動かして、検出の様子を確認しました。

参考にさせていただいたページ

Pose

MediaPipe

On-device, Real-time Body Pose Tracking with MediaPipe BlazePose

補足

v0.7.9でPythonでのビルド方法が追加されました。

https://google.github.io/mediapipe/getting_started/building_examples.html#python

ドキュメントを見る限り、簡単にインストールして使えそうなので、そのうち動かしてみたいと思います。