姿勢推定は2D関節点 (u,v)、3D関節、または物体の回転 R と並進 t を求める。2D投影は \tilde p\sim K[R|t]P と書け、カメラ較正、遮蔽、左右の取り違え、時間同期が精度を左右する。

画像キーポイント推定の概念カメラ画像をネットワークがヒートマップとキーポイント座標へ変換する流れ画像特徴・ヒートマップ関節点/姿勢

図: Duskcoil作成。概念図であり、人の識別・監視用途の正当性を示すものではない。

ヒートマップ回帰、座標回帰、PnP、時系列平滑化を組み合わせる。PCK、OKS、再投影誤差は評価指標だが、肌色、衣服、補助具、遮蔽、照明ごとの性能を分けて確認する。人に関わる用途では同意、目的限定、保存期間、誤判定時の人の確認を設計する。

手法と座標系

人体2D姿勢では各関節のヒートマップ最大値を座標にする方式、直接座標を回帰する方式、人物検出後に一人ずつ推定するtop-down方式、画像全体から全員を同時に結ぶbottom-up方式がある。6D物体姿勢では既知3D点と画像点の対応からPnPを解き、回転・並進を求める。回転は R\in SO(3)R^TR=I,\det R=1 を満たすため、Euler角をそのまま回帰すると特異性・不連続が生じる。クォータニオン正規化や連続6D表現が使われる。

出力 典型用途 評価 失敗例
2D keypoint 姿勢解析、UI PCK、OKS 遮蔽、左右交換
3D skeleton 動作解析、ロボット模倣 MPJPE 深度曖昧性、カメラ誤差
6D object pose 把持、AR ADD、再投影誤差 対称物、反射、PnP外れ値

データと失敗処理

遮蔽、逆光、鏡、複数人、補助具、衣服、体格、肌の見え方、カメラ高さを分けて評価する。平均OKSが高くても、転倒検知や協働ロボットの人回避に必要な最悪遅延・見逃し率を満たすとは限らない。関節点の推定を本人識別や感情推定へ無断で転用しない。目的限定、同意、保存期間、アクセス制御、削除要求、誤判定への異議手順を持つ。

実装ではカメラ内部・外部パラメータを較正し、推定座標のframe、単位、時刻、信頼度を明示する。信頼度が低いときは補間を真実と見なさず、ロボット速度を下げる、停止する、人の確認へ渡す。時系列平滑化は振動を減らすが遅れを増やすため、安全距離と停止時間へ反映する。

  1. タスクに必要な出力と許容誤差・遅延を定める。
  2. 属性・遮蔽・照明別に分割して評価する。
  3. 較正・座標変換・PnP外れ値をログ化する。
  4. 低信頼度、カメラ断、人物接近時の停止規則を検証する。

  5. COCO Keypoints evaluation

較正と時刻をモデルの外へ出す

姿勢誤差はネットワークだけから生じない。焦点距離や主点がずれれば、画像上で正しい点も3Dでは誤った位置になる。レンズ歪みを補正する順序、画像のresizeとcrop、座標の原点、pixel centerの定義を学習時と推論時で一致させる。外部パラメータはカメラ移動や振動で変わるため、一度の較正結果を永久に正しいとみなさず、基準物や静止背景で再投影誤差を定期確認する。

複数カメラやIMUを融合するときは、同じ座標系より先に同じ時刻を確認する。30 fpsで1フレームずれるだけでも、速い手先や工具の位置は大きく変わる。ハードウェア時刻、受信時刻、推論完了時刻を分けて記録し、補間に用いたサンプルを追跡する。平滑化後の軌跡が美しくても、実際より遅れていれば衝突回避には危険である。

パイプライン選択の比較

構成 利点 計算・データ要件 主な故障モード
単眼2D 安価で導入しやすい 2D注釈、カメラ1台 深度不明、遮蔽
単眼3D 設置が簡単 3D事前分布、大規模データ 撮影条件外、絶対尺度
多眼三角測量 幾何で3Dを拘束 同期・較正・複数視点 対応誤り、視野外
RGB-D 直接的な深度 深度センサ、範囲制約 反射、屋外光、欠損
keypoint+PnP CADを使える 3D対応点、内部較正 対称性、外れ値、縮退配置

2D誤差は画素だけでなく対象サイズで正規化し、3D誤差はmm単位と座標frameを明記する。対称物体では、見た目が同じ回転を単一の正解回転と比較すると、本質的に正しい推定を誤り扱いする。対称性を考慮したADD-Sや再投影誤差を選び、把持なら最終的な接触・衝突余裕でも評価する。平均誤差に加えて95パーセンタイル、未検出率、誤った高信頼出力、end-to-end遅延を残す。

失敗例:高信頼な左右反転

鏡像、背面、自己遮蔽では、左手と右手を入れ替えた骨格が幾何的にもっともらしくなる。時間平滑化が誤りを固定し、数フレーム後まで高信頼を維持することもある。関節長制約だけで解決せず、向き、見えている手掛かり、複数仮説、前フレームとの運動上限を組み合わせる。安全用途では信頼度が高いことを正しさの保証とせず、左右交換検出や独立センサとの不一致を停止条件にする。

再現可能な実装手順

  1. 画像座標、カメラ座標、世界座標、ロボット座標の変換を図とテストデータで固定する。
  2. resize、padding、augmentation後のキーポイント変換を往復テストし、1 px未満の既知誤差を確認する。
  3. PnPではRANSACの閾値と最小点数を決め、inlier数、再投影誤差、解の深度符号を検査する。
  4. 静止、歩行、高速動作、遮蔽、視野端、カメラ断を収録し、条件別指標と遅延を測る。
  5. 低信頼、急な骨格変形、較正ずれ、時刻逆転を検知したときの停止・再初期化を試す。
  6. 元画像を保存する場合は目的、アクセス権、保持期限、匿名化、削除手順を文書化する。

姿勢推定値は観測から得た仮説であり、身体状態や意図そのものではない。精度を上げるだけでなく、座標・時刻・不確かさを下流へ渡し、下流が「不明」を安全に扱えるインターフェースを設計する。

注釈品質と運用時の監査

キーポイント注釈にも不確かさがある。衣服の下の関節中心、遮蔽された手首、対称物の向きは注釈者によって答えが変わる。visible、occluded、outside-frameを同じ座標値で表さず、状態を別フィールドにする。複数注釈者の差、定義書の改訂、補間で作った点を保存し、曖昧な点を厳密な正解として損失へ入れない。合成データではレンダラの材質や照明に依存した手掛かりをモデルが覚えるため、実画像だけのhold-outを必ず残す。

運用ログは画像そのものを無期限に集めなくても設計できる。信頼度、欠落関節数、再投影誤差、処理遅延、カメラ状態、停止回数を集計し、必要な事故調査用データだけを短期間・厳格な権限で保持する。性能監視用のサンプル取得率を決め、目的外の人物追跡データベースへ発展させない。

モデル更新時は同じ動画で新旧を再生し、フレーム平均だけでなく、検出が途切れる長さ、左右交換回数、危険区域での最大誤差を比較する。機器交換後には較正と時刻同期を再確認する。この地味な境界条件の管理が、ベンチマーク上の数点の向上より現場の安全を左右する。

#機械学習 #姿勢推定 #キーポイント #6D pose #コンピュータビジョン