姿勢推定Pose Estimation

体の関節の位置を点で打って姿勢を読み取ること

ポイント
  • 姿勢推定は写真や動画の中で肩・肘・膝のような関節の位置を点で打つ作業です。
  • 点ひとつは画面上の縦横の位置ふたつです。点の位置と点の間の曲がり具合が集まって姿勢になります。
  • どの点をどの点とつなぐかはあらかじめ決めた接続表に従います。だから腕の先が足首につながることはありません。
  • ひとつの場面に複数の人がいれば、打たれた点を誰のものか束ねる段階が別に必要です。
  • 隠れた関節も周りの点の位置から推測して打ち、どれくらい確信しているかの数字を一緒に出します。
目次

1たとえで理解する

服屋のマネキンは肩と肘、腰と膝の位置が回るように作られています。店員が新しい服を着せて姿勢を決めるときにすることは、その関節をひとつずつ望む角度に回すことだけです。腕を上げた姿勢でも片側に寄りかかった姿勢でも、結局は関節がどこにあってどれくらい曲がっているかで決まります。

姿勢推定はこの作業を逆方向に行います。すでに姿勢が決まった写真一枚を受け取って、関節がどのあたりにあったからこう見えるのかをさかのぼって点を打ちます。マネキンを回して姿勢を作る代わりに、できあがった姿勢を見て関節の位置を言い当てるほうです。

打った点を決まった順番でつなぐと、棒が数本の骨組みが残ります。服の色も背景も消えて関節の位置だけが残ったこの骨組みが、姿勢推定が出す結果です。

2くわしく

打つ場所をリストであらかじめ決めます

姿勢推定はどこにでも点を打つわけではありません。鼻と両目、両肩、両肘、両手首、両腰、両膝、両足首のように**打つ場所があらかじめリストで決まっています。**よく使われるリストは十七か所前後で、指の関節やつま先まで含めて三十か所を超えるリストもあります。

リストが決まっているということは結果の形もいつも同じという意味です。どんな写真を入れても返ってくるのは同じ個数の点で、何番目の点が左肘かもいつも同じです。だからこの結果を受け取るプログラムは「三番目の点が肩だ」と信じて計算を続けられます。

モデルがすることは写真全体を調べながら場所ごとに「ここが左肩である可能性」を点数として付けることに近いです。点数がいちばん高い場所を選んで点をひとつ打ち、リストの次の場所へ進みます。

点をつなぐ順番はすでに組まれています

点だけがばらばらにあると姿勢は読み取りにくいです。そこで肩と肘、肘と手首のように**つなぐべき組が表で決まっています。**この表に従って線を引くと骨組みの形が出ます。

線ができると角度が測れます。肩から肘へ伸びた線と肘から手首へ伸びた線がどれくらい開いているかを測れば、腕を伸ばした状態か曲げた状態か分かります。膝の曲がり具合、背中の傾き具合も同じです。運動姿勢を見てくれるアプリが「腰が曲がりすぎています」と言えるのは、この角度のおかげです。

体の大きさやカメラとの距離は人によって違っても、角度はあまり変わりません。だから姿勢を比べたり判定したりするときは、点の位置そのものより点の間の角度と長さの比率のほうがよく使われます。

複数の人がいれば点を束ねる必要があります

ひとつの場面に二人が立っていれば、肩の点が四つ、膝の点も四つ出てきます。この点を誰のものか束ねないと、一人の肩ともう一人の手首がひとつの骨組みにつながってしまう、見当違いの結果になります。

束ねる方法は大きく二つです。ひとつはまず人がいる四角い枠を見つけてから、枠ごとに別々に点を打つ方式です。人数が少ないときはきれいですが、人数が増えるほど遅くなります。もうひとつは画面全体で点をまとめて打っておき、どの点とどの点がひとつの体に属するかをあとでつなぐ方式です。混み合う場面でも速度が落ちにくいです。

二人が重なって立ったり腕を組んだりすると、この束ねが揺らぎます。人数を誤って数えたり、点がいくつか隣の人にくっついたりする誤りがこの段階で起きます。

隠れた関節も推測して打ちます

机に隠れて脚が見えなくても、結果には膝の点が打たれて出てきます。リストにある場所はできる限り全部埋めるからです。見えない場所は**見える点の配置を根拠にありそうな場所に打ちます。**人の体の比率や関節が曲がる範囲が学習の過程で身についているからこそできることです。

その代わりモデルは点ごとに確信の程度を数字で一緒に出します。よく見える肩は高い値が、隠れた膝は低い値が付きます。この数字を無視してすべての点を同じように信じると、見当違いの判定が出ます。実際のサービスは値が一定水準を下回る点は画面に描かないか計算から外します。

動画では前後の場面を一緒に見て点を整えることもあります。ある場面で急に飛んだ点を前後の場面の位置と照らし合わせて滑らかにつなげば、骨組みの震えが減ります。

3もう少し正確に

姿勢推定が出すのは関節ごとの縦横の座標と確信の値です。画面上の平面座標だけを出せば二次元姿勢推定、カメラからどれくらい離れているかまで乗せれば三次元姿勢推定と呼びます。三次元のほうはカメラ一台では前後の距離があいまいなので、複数台を使うか体の比率についての仮定を追加して解きます。

計算の過程は点をひとつ直接指す方式より、画面を格子状に区切って場所ごとに「ここが左肘らしい程度」を明るさのように塗った地図をまず作り、そのいちばん明るい場所を選ぶ方式のほうがよく使われます。

たとえがずれる点もあります。マネキンの関節は実際にその場所にあって決まった方向にしか回りませんが、姿勢推定は関節を直接見るのではなく、画面の明るさと模様だけを見て場所を推測します。だから、ゆったりした服、暗い照明、横に寝た姿勢のように学習時に少なかった状況では、関節のない場所に点が打たれることもあります。マネキンは腕が後ろに折れませんが、推定結果は人の体では出せない角度になることもあります。

4やってみる

5よくある誤解

  • 姿勢推定が人が誰かも突き止めると思われがちですが、実際には関節の位置を打つだけで身元とは関係ありません。点だけを見て同じ人かどうかを区別するのは難しいです。

  • 点が打たれたということはそこに関節があると信じられがちですが、実際には隠れた場所も推測で埋めるため、確信の値も一緒に見る必要があります。

  • 動作の意味まで一緒に出ると考えられがちですが、実際には点の位置が出るだけで「手を振る」といった判断はその点を受け取った次の段階で行います。

7ひとこと要約

つまり姿勢推定は写真の中の関節の位置に点を打ち、決まった順番でつないで、姿勢を点と線のいくつかに置き換える作業です。

誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02