高精度な手足、身体の姿勢推定API「MediaPipe」を使って体の姿勢を数値化させてみる
一年ほど前に紹介した「PoseNet」がありますが。
Googleの「PoseNet」を試してみた: EeePCの軌跡
あれがさらに高精度、高密度になった「MediaPipe」なるものが、いつの間にか登場してます。
少し前から気になってたんですが、休みに入り、ようやくそれを実験する機会を得ました。
で、参考にしたのは以下のサイト。
CPUだけで顔・手・ポーズのリアルタイム検出を行う | cedro-blog
ここで紹介されたコードで、一発で動きました。
やったことといえば、
(1) pipコマンドで「MediaPipe」をインストールする。
> pip install mediapipe
(ほかにも、numpy、OpenCV、PILLOWも必要です)
(2) Githubから、コードを一式ダウンロードしておく。
(3) WebカメラのついたPCなら、そのままコマンドで実行。
> python sample_face.py
(コードは4種類で、「sample_face.py」「sample_hand.py」「sample_holistic.py」「sample_pose.py」から選択。大体、どれがどういうコードかは、名前からわかるかと思います。)
こんな感じの結果が出ます。
いやあ、なかなか高精度ですね。
これ、GPUを使ってないようですが、うちの環境(Ryzen 5 4600H 6コア)で20~30fpsは出ます。
さて、姿勢推定をさせたなら当然、各々の座標が抜き出したくなるものですが、上で入手したコードのうち、「sample_holistic.py」という、顔も手も身体もすべて出力させているコードを参考にします。
このコードの中の「landmark_x」「landmark_y」という配列があるんですが、これが座標情報だとわかります。
で、じーっとこのコードを解読すると、例えば191行目から始まる「draw_hands_landmarks()」という関数207行目あたりを見ると、この中ではどうやらlandmark_point.x[2]、landmark_point.y[2]が親指の座標なんだなぁと読めますね。[]野中の数字が0だと「手首1」、1だと「手首2」(右か左かは不明)、10だと「中指・第2関節」……という具合に、解読できそうです。
顔の座標を読み出したければ、299行目から始まる「draw_face_landmarks()」を見れば、目や鼻、口の座標を拾えそうです。
かなり地味で忍耐が必要な作業になりそうですが、このコードを流用すれば、姿勢の数値化はどうにかできそうです。
とまあ、かなりいい感じのMediaPipe。これでPoseNetとはおさらばか……と思いきや。
実は欠点が一つあります。それは、1体しか読みだせないということ。
PoseNetは10人まで同時に読み込めましたが、こちらは一番大きな人物のみ姿勢推定を行うことしかできません。
このため、複数の人の動きをトレースすることは不可能。あくまでも一人だけの詳細な動きを読み出すためのコードのようです。
ベテランの作業姿勢と新入社員の姿勢とを比べる、といったことくらいならできそうですね。
![]() |

« 2年ぶり12回目のヴィレッジヴァンガード福袋購入! | トップページ | 簡単にSFなCGが作れるツール「とてかんCG」を使ってみた »
「数値解析系」カテゴリの記事
- 生成AI系の本を2冊購入(2025.01.30)
- Windows 11でFORTRANをコンパイルしたい!という方への対処法(2025.01.04)
- どこに視線を向けているかを可視化してくれる物体検出器(2024.12.23)
- 2024年まとめ記事(2024.12.31)
- 生成AI解説書籍「ChatGPT & 生成AI」という本を買った(2024.12.08)
« 2年ぶり12回目のヴィレッジヴァンガード福袋購入! | トップページ | 簡単にSFなCGが作れるツール「とてかんCG」を使ってみた »
コメント