1. ディープラーニング以前の人物姿勢推定 [概要]
この記事では,ディープラーニング登場以前の人物姿勢推定(Human Pose Estimation)について,まとめる.人物姿勢推定技術に,実用性がある論文が初めて生まれ始めた頃(2010年頃以降)の,主な研究を,この記事では紹介する.親記事でフォーカスしている登場する以前の,黎明期の話を紹介したい.
人物姿勢推定黎明期の,2000年代の後半当時は,DPM(Deformable Part Models) が登場して,Pascal VOC 2007以降向けの物体検出が,画像認識分野の主役のテーマであった.その流れで,人物姿勢推定においてもパーツ検出器を活用したモデルが提案されていった (2節).
その後「キーポイント回帰」(3節)の(人物)姿勢推定手法が登場し,さらに実環境下(in the wild)の様々な人物姿勢パターンの画像に通用するモデルが登場した.その途中で,Deep Learning のブームが到来し,CNNベースの手法へ移行が始まる(2014~).
1.1 記事の構成
- 2. パーツ検出による2手法:
- 2.1 Poselets : キーポイント位置合わせによる部分姿勢検出器の学習
- 2.2 「パーツ検出器 + Pictorial Structures」の手法
- Pictorial Structures Revisited (PS-Revisited)
- Flexible Mixtures-of-parts(FMP)
- 3. キーポイント回帰による手法
- 3.1 CPR(Cascaded Pose Regression)
- 3.2 Poselet-Regressor:横向き姿勢への初めての対応
- 3.3 迫り来ていたDeep手法
まず2節では,まず登場したパーツ検出ベースの2路線の手法として,単一クラス物体検出の人物部分姿勢検出器のPoselets (2.1節)と,Pictorial Structures + パーツ検出器 (2.2節, Flexible Mixture-of-Parts など) を紹介する.
3節では,Deep以降の人物姿勢推定と,仕組みが近くなり始めていた時期の「回帰」ベースの手法を紹介する.顔キーポイント推定の発見にも貢献した Cascaded Pose Regression(3.1節) と,Poseletsの回帰版として管理人らが提案した Poselets-Regressor(3.2節)について述べる.
Poselets-Regressorは,Poselets(検出器)を「人物ROI 画像特徴量から,人物キーポイントを回帰」へと問題をスライドさせたものであるゆえ,処理構造・発想は,DeepPoseやMask R-CNNと同じであるといえる.
2. パーツ検出による手法
2.1 Poselets:部分姿勢検出器の学習
Poselets [Bourdev et al., 2009], [Bourdev et al., 2010] は,人物画像にラベル付けされた3Dキーポイントを用いて,人物画像から同一姿勢矩形領域を抽出し,人物姿勢画像の「部分姿勢(= Poselet)」領域の検出器を単一クラス物体検出器として学習することを提案した,
2.1.1 単一クラス手法の「暗黙の拘束」
当時は,単一クラス物体検出により,歩行者検出など「直立姿勢の人間の全身検出器」を学習する技術は確立していた.
しかし,単一クラス物体検出器は「固定の窓サイズ向け」であったので,学習時にも固定窓内で,人の見え方がある程度同じ姿勢で,統一されている必要がある.つまりは「Appearanceの分布が,ある程度狭い」という暗黙の仮定が,学習・テストデータの暗黙の拘束条件として存在していた.
したがって,直立歩行者以外の多様な姿勢をとる人物の領域をうまく検出できる技術が,当時は存在していなかった.
※ 2.2節で紹介する Pictorial Structuresも,検出できる姿勢パターンが「2次元パーツグラフで,人物シルエットを表現できる姿勢パターン」に限られてしまうので,この問題は解決できない.
2.1.2 提案:人物ROI同士をキーポイントで位置合わせ
そこで Poselets の論文 [Bourdev et al., 2009] では,単一クラス物体検出器としてのPoselet検出器を,「同一の部分姿勢(= Poselet)」ごとに,個別に1姿勢ごとに学習することを提案した.テスト時には,バウンディングボックス画像特徴を元に,スライディングウィンドウで,各部分姿勢を検出する.ただ,学習時には,「同一の部分姿勢」を,窓サイズに位置合わせした状態で集める必要があるので,学習に工夫が必要であり,その方法が提案された.
人物画像に対して3Dのスケルトン姿勢をアノテーションしておいた「H3Dデータセット」を用意した.H3Dデータセットでは,「同一関節のキーポイント間3D距離」の残差誤差の和をもとに抽出した「同一の部分姿勢の人物画像」を集める. これらの「キーポイントが位置合わせ済みの人物部分姿勢画像」を学習データに用いることで,各姿勢のPoselet検出器を学習できるようになった.
また,学習時に姿勢と一緒に人物マスクもおよそ位置合わせされているゆえ,テスト画像からPoseletを検出すると,同時にその姿勢の平均人物シルエットROIも推定できている.これはインスタンスセグメンテーションのように,「物体バウンディングボックスと前景マスク」の出力が,部分姿勢(Poselet)に対して検出できていることになる.
続編として [Bourdev et al., 2010] では,一枚画像に対して複数のPoselet検出器の検出結果の応答マップから,各人物単位にグループ化する後処理を行うことで,画像中に複数人物が様々な姿勢で写っていても,各人物を検出できる手法を提案した(※).
※ 親記事の「人物姿勢推定」の,「3.3 複数人物姿勢推定」を,この[Bourdev et al., 2010] で時点で既にある程度は達成していたとも言える.
2.2 「パーツ検出器 + Pictorial Structures」の手法
2000年代中盤に,Pictorial Structures [Felzenszwalb, 2005] , [Ramanan 2007] を元にした物体検出手法が登場していた.Pictorial Structuresは,2Dパーツのグラフで対象物体や人物を表現し,グラフ推定を行うことでそのパーツの配置を推定するモデル化のことである.
しかし,これらの手法 [Felzenszwalb, 2005], [Ramanan, 2007]は,まだ非拘束な実画像全部には通用せず,モデルが仮定している「少し解きやすい条件に合致した画像」でのみ,対象(のパーツグラフ配置)が検出できる手法だった.各パーツ領域を四角形で表現し,それらからなるモデル全体のバイナリーシルエットのモデルを,低レベル画像特徴(エッジなど)を(パーツ尤度に)用いて,対象人物領域にフィッティングする(=グラフ配置パラメータを最尤推定する).よって,シルエットと合わない複雑な服装の画像へのフィッティングは苦手であった.また,古典的画像特徴を使うので,複雑背景下の画像や複雑な服装の人物は,うまく2D姿勢を検出できない制限があった.
そんな中,当時精度向上が著しかった単一クラス物体検出を組み合わせた「高精度なパーツ検出器を用いたPictorial Structures 手法」として,(1)Pictorial Structures Revisited (PS-Revisited) [Andriluka et al., 2009] (2.2.1節)や,(2) Flexible Mixtures-of-Parts [Yi and Ramanan, 2011] (2.2.2節) が登場した.
これらの手法により,人物姿勢推定が,(背景が簡易ではない)実画像において,初めて高い精度で行え始めるようになった.同時期に登場した,デプス画像ベースの人物姿勢推定 [Shotton et al., 2011] の話題性の高さともあいまって,「画像からの2D人物姿勢推定技術」の研究人口が少しずつ増えていく.
ただし,2つともPictorial Structures (2Dパーツグラフ)に依存しているため,2次元的なパーツ移動以外の3次元的な姿勢変化には,まだ弱かった.パーツ検出ベースの手法では,2.2.2節のFMPが,この制限を,初めて突破しはじめて「多様な姿勢の変化」に対応できる先駆者となる.また,3節の「回帰ベースの手法」が登場すると,3次元変化にも,もっと対応できるようになっていった.
2.2.1 Pictorial Structures Revisited (PS-Revisited)
Pictorial Structures Revisited (PS-Rivisited) [Andriluka et al., 2009]は,人物シルエットモデルであるPictorial Structureの各パーツの尤度計算に,単一クラス物体検出として学習した各パーツ検出器の応答を用いる手法である.パーツ配置のPriorもグラフに学習するので,学習済みの(人間なら取りえそうな)姿勢のPriorも用いたパーツ配置の推定をグラフ推論により行うことで,最終的なPSグラフの姿勢を推定する.PS-Revisitedでは現代的な高精度の(Adaboost)パーツ識別器が,パーツ領域判定として代わりに導入されたことで,複雑背景下で人物2D姿勢が推定できるようになりブレイクスルーが起こった.
ただし,PS-Rivisitedは,監視カメラ的な歩行者画像を対象にしており,スポーツで見るような「人の複雑な姿勢変化」には,まだ実験されていなかった.そこで,そうした「より豊富な人物姿勢の変化へ対応できるモデル」として,初めて次節のFMPが登場し,またブレイクスルーがおこる.
2.2.2 Flexible Mixtures-of-parts (FMP)
Flexible Mixtures-of-Parts (FMP) [Ramanan, 2007]と呼ばれる,DPMを人物姿勢推定に応用した手法が提案された 前述のPSベースの手法や,DPMなどでも,当時よく知られていた Deva Ramanan 先生のラボから提案された,DPM式の「パーツ混合モデル」の,人物姿勢推定への応用である.
Flexible Mixtures-of-Partsのプロジェクトページ
FMPは以下に述べる,2つの工夫により,多様な姿勢の検出へ対応できるようになった.
工夫1: パーツ検出器のMixure化
- Pictorial Structures 中の各人体パーツを「$T$種類のタイプのパーツ検出器の混合」として表現
- テスト時には$T$種類のうち尤度が最大のパーツタイプを推定結果として用いる.
- すなわち「パーツの見え方を$T$タイプ保持した混合モデルとみなし,もっともパーツ検出器の応答が強いものを推定パーツタイプとして選ぶ.
工夫2: Flexibleな,小部分の曲げ伸び縮み表現化
人物用 Pictorial Structures グラフでは,四肢の半分を1パーツと見なしていた.それがFMPでは,「小さなパーツ2個ペアの伸び縮み」として四肢の各部位をモデル化した:
- 各パーツの小部分のパーツ検出をそれぞれ行う
- 検出した各小部分の距離感は,「伸び縮み可能」とみなす.
これにより,人ごとの四肢の長さの多様性や,姿勢ごとに(透視投影・正射影)見え具合で変わる,四肢の長さの変化も,PSグラフに学習しやすくなった.
「様々な激しい姿勢変化」へ対応可能に
FPMは以上2点の工夫により,大きな姿勢変化に伴う「各パーツの見え方の変化」も,PSグラフへうまく学習できるようになった.これにより,スポーツ演技中の人物のような,激しい姿勢の変化が生じている人物画像でも,FMPの1モデルだけに,姿勢検出DPMを学習できるようになった.
PS-Revisitedまでは,人物姿勢の多様なバリエーションへの対抗策がなかったゆえ,FMPがそれを突破したのは,大きな進展であった .ただし,パーツ数 × M混合数だけ,検出器を実行する必要があるので,計算コストがやや高い難点があった.
DPMと同じく,FMPでも人体パーツグラフの構造化推定(Structured Prediction)には,Latent SVMによる学習・推論が用いられる.ただし,Latent SVMは,応用するには敷居が高い技術であったため,簡単には手を出しづらかった.
※ もし3節以降の「CNNの登場を通じて構造化推定のハードルが下がる」ことが起き無ければ,この時期移行に,人物姿勢推定は手詰まりになってい可能性もある.古くからここに携わっている私の,個人的な知見をもとにした感想である.
3. キーポイントを直接回帰する手法
3.1 Cascaded Pose Regression (CPR)
Cascaded Pose Regression (CPR) [Dollar et al., 2010] は,複数の姿勢推定器をカスケードでつなぎ,推定姿勢の残差を少しずつ各推定器でrefine量を学習させる方式を提案した.各ステージでは前ステージの回帰結果に残っている残差エラーをRefineする分を学習していき,$N$ステージ分の回帰を経た結果,高精度の最終推定値が得られる.カスケード化している各ステージの推定器には,Random Forest系モデルのRandom Fernが採用された.
この「カスケード化戦略」を採用すると,各モデルの出力の値の範囲は小さく,個別に各ステージを学習できて楽に済む.従って,1モデルで一気に学習する場合はsub-opitimalな解になってしまいやすい,データ・出力のバリエーション(スケールの広さも含めて)も,きちんと学習しやくなる.(モデルがよくフィットしやすくなる反面,カスケード化は過学習が怖くなるとも言えるが).
また,[Dollar et al., 2010] で回帰モデルに使用したRandom Fernのように,特徴次元選択も行える予測モデルを使用することで,各ステージが解くべき問題の出力範囲が更に狭まった.各ステージで特徴選択された特徴だけを連ねて,カスケード処理していくことから,高速処理化も達成している.
ここでは詳しく述べないが,このCPRは「顔のキーポイント推定」に大きな影響を及ぼす.
3.2 Poselet-Regressor:「横向き人物の姿勢」も推定可能に
管理人らはPoseletの「キーポイントペア間における回帰版」として,Poselet-Regressor を提案した.サッカーやアメリカンフットボールなどの「スタンドから広く広角撮影したスタジアム映像で小さく映る選手むけ」の,人物姿勢推定手法である. [Hayashi et al., 2015] [Hayashi and Aoki, 2016].
Poseletは入力の「バウンディングボックス画像特徴」から「部分姿勢を検出(識別)する」という問題設定であった.それを,Poselet-Regressorでは「窓内2キーポイント間の,相対位置ベクトルの回帰問題」に転じた.これにより,(※ 深層学習以降の物体検出と同様に) 矩形内画像特徴から回帰するだけになって,学習しやすくなったことで,横向き人物の姿勢も含めたキーポイント推定を可能にした.
参考となる概要 + 図表 → https://www.ipsj.or.jp/magazine/hakase/2015/CVIM01.html
[Hayashi et al., 2015] (3.2.1節)では,上半身の「背骨姿勢(頭部中心 – Pelvis位置)」間の相対位置ベクトル (頭部中心キーポイントを原点とみて,Pelvisキーポイントがどこにあるか)を,上半身ピラミッドHOG都特徴ベクトルを入力してRegression Forestへ学習するという,背骨推定Poselet-Regressor を提案した.頭部の位置をまず頭部追跡器で追跡し,その動画の各フレームで,毎フレームにおいて背骨のボーン(両端点)が推定される処理手順である.
更に,[Hayashi et al., 2015] の2つ目の提案(3.2.2節)では,背骨の傾きクラスの条件付きモデル化で8方向身体向き推定(Body Orientation Estimation)も行う「背骨両端キーポイント推定 と 8方向体向き推定 の,条件付きモデル化による統合」を提案した .
その後の [Hayashi and Aoki, 2016] (3.2.3節)では,横向き時も含めた脚の姿勢推定も実現した.[Hayashi et al., 2015] の処理で 背骨の2キーポイントを推定した後に,「Pelvisを原点とした,足のキーポイント4つ(左右の膝と足先)」も二段目の処理として推定することで,足のボーンの姿勢も「Poselet-Regressorを下半身向けに4つ追加」するのみで実現した.
ここでは,2つの成果を合体した処理を[Hayashi and Aoki, 2016]の手順を,3.2.1~3.2.3節で,処理順に見ていきたい
3.2.1 動画からの「背骨のボーン」の推定
オリジナルのPoselets (2.1節)の「検出器」という方法から少し考え方を変えて「基準キーポイント(頭部中心)位置からみて,目標キーポイント(Pelvis)がどこにあるかを回帰」するようにした.よって[Poseletの回帰版]という意味で,管理人は Poselet-Regressor と名付けた.
以下が,[Hayashi et al., 2015] における,背骨姿勢の追跡処理手順である:
- まず追跡+姿勢推定をしたい対象人物の頭部矩形を,初期位置として与える.
- 頭部検出器SVMとカルマンフィルタにより,Tracking-by-Detection方式で,毎フレームの頭部中心位置を追跡.
- 各フレームで,(Poseletsのように)頭部位置を原点とした固定サイズ窓内で,上半身のピラミッドHOG特徴量ベクトルを計算.
- その上半身HOGを入力特徴ベクトルとして,Regression Forest (= Poselet-Regressor)により「頭部中心を原点とした際の,Pelvisの相対位置」を推定.
以上の手順により,毎フレームの背骨姿勢(頭部中心位置-Pevis位置の2点)を,スタンドに固定設置したボールスポーツ映像において初めて推定することができるようになった.映像中のほとんどのフレームが,スタジアムのスタンドから撮影した(相手のゴール方向へ走っている)横向きの姿勢である.よって,当時主流のFMPなどの「Pictorial Structure系の検出ベース手法(2.2節)」では,それらの横向き姿勢のキーポイントをうまく推定できていなかった(論文中ではFMPをベースラインとして比較した).
3.2.2. 上半身の傾き(背骨の角度)で条件づけした,8方向の身体向き推定
また [Hayashi et al., 2015]では,Poselet-Regressorによる「背骨姿勢推定」の提案に加え,推定した背骨姿勢を角度5クラスに分けて条件付けモデル化することで,上半身8方向の推定器の提案も行った.
直立姿勢が多い歩行者画像と違い,アメフトなどのボールスポーツ映像では「上半身の傾きが大きい」時に,見え方の変化がより多くなる.これを,Poselet-Regressorで推定した「背骨角度」で条件付け識別器化することにより,角度範囲内の上半身の見え方のみを対象とした「条件付け方向識別器」を学習できるようになった.
3.2.3 下半身の4つの関節も,同時に推定
[Hayashi and Aoki, 2016] では,[Hayashi et al., 2015]の手法どおり,まずPelvisキーポイント位置までを推定しておく(3.2.3).そして次に,そのPelvisを新たな原点位置とみなして,4つのPoselet-Regressorに「足の4つのキーポイント(両膝と両カカト)」の相対位置を学習させるようにした.すなわち,「下半身4キーポイントの推定」も,3.2.1の後処理として追加し,推定する拡張を提案した.
[Hayashi and Aoki, 2016] では,以下の2ステージで,段階的にPoselet-Regressorを2回用いることで,「背骨」+ 「脚の4つの関節位置」の推定を順に行う:
- 上半身Poselet-Regressor の 背骨推定:
- 「頭部中心 -> Pelvis」
- 頭部中心を原点とした,「上半身領域のHOG」が入力ベクトル.
- 下半身Poselet-Regressor × 4個 の脚のボーン推定:
- 「Pelvis -> 足の関節(両膝,両足先)」
- Pelvis位置を原点とした,「下半身領域のHOG」が入力ベクトル.
スポーツ映像なので,服装・体型の変化の少なさはあるものの,横向きの姿勢が多く,なおかつ走っていて下半身姿勢変化が激しい状況での,脚のスケルトン姿勢推定を初めて実現することができた
※ 博士学位論文では,サッカー映像での実験も追加で行い,有効性を確認できた
3.3 迫り来ていたCNN手法
我々も,Poselet-Regressor における人物ボックス内の画像特徴量には,当時の主流であった HOG (Histograms-of-Oriented Gradients) を用いた.HOGは,[8 × 8] 画素のグリッド単位の微分値をヒストグラム化した「プーリングされた特徴化ベクトル」である.従って,[4×4] 画素前後程度の誤差はどうしても出てしまい,結局その問題を解決することは結局できなかった.
つまりPoselet-Regressor では,(その後の深層ベースの人物姿勢推定のように)「任意の全ての姿勢で関節は回帰できそう」ということは達成した.しかし,以下2つの課題やその後取組むべきチャレンジが残っていた:
- 「人物ROI矩形内のHOG特徴 → 回帰モデル (Poselet-Regressor)」の組み合わせでは,上述のHOGプーリング由来の誤差問題は解決できないゆえ,キーポイントの推定精度は今一つなレベルであった.
- 人物領域の大きさ・アスペクト比も,当時の歩行者検出のような [128 × 64]の「低画質に遠くに写る対象」限定で,服装も限定であるスポーツ動画限定での成果であった.
3.3.1 Deep Poseの登場
管理人がPoselet-Regressor を博士課程で研究していた当時に,ディープラーニングを元にしたDeep Pose [Toshev et al., 2014] が登場した.
Deep Poseでは「CNNを用いると,どんな人物姿勢でも,関節キーポイントの精緻な回帰ができそうになるかもしれない」という可能性が,初めて示された.よって,非ディープラーニング手法でそれまで研究していた私としては,「急がないと博士論文が取れなくなる」とその頃の展開に戦々恐々としていたものである.
4. まとめ
この記事では,ディープラーニング以前の機械学習ベースの人物姿勢推定について,その登場時系列順に「1. パーツ検出器 + Pictorial Structures」(2節)→「2. 直接各キーポイントを回帰」(3節) の2系統の路線を紹介した.これらの登場以前は,実験環境の拘束ありの画像でしか解けなかった問題が,1.パーツ検出の登場で,拘束無しの実画像でも,人物姿勢ができるようになっていく.そして,2.回帰の登場以降は,その後,どんな姿勢でも学習できるようになっていった.
後半の「キーポイント回帰」手法である,管理人提案のPoselet-Regressorは,ディープ登場後のDeepPose や Mask R-CNN とやっていることは近くて,同じく「ROI特徴量からのキーポイント回帰」である.だが,当時は色々できて便利なCNNがまだなかったので,当時の回帰モデル(Regression Forest)でできる範囲で,似たようなことを実現したのだと,今考えると類似比較できるようである.Pitor Dollar氏らは,Mask R-CNNで,キーポイント回帰のヘッドも提案しているが,CPR [Dollar et al., 2010] の成果があったがゆえの,回帰ヘッド追加ではあると憶測もできる.
関連書籍
- 深層学習 改訂第2版 (機械学習プロフェッショナルシリーズ) 岡谷貴之,講談社,2022.
- Probabilistic Machine Learning: An Introduction, Kevin Patrick Murphy , MIT Press, 2022.
References
- [Bourdev et al., 2009] L. Bourdev, J. Malik, Poselets: Body Part Detectors Trained Using 3D Human Pose Annotations, In, ICCV 2009.
- [Bourdev et al., 2010] L. Bourdev, S. Maji, T. Brox, J. Malik, Detecting People Using Mutually Consistent Poselet Activations, In , ECCV 2010.
- [Felzenszwalb, 2005] P. F. Felzenszwalb and D. P. Huttenlocher. Pictorial structures for object recognition. IJCV, 61(1):55–79, 2005.
- [Ramanan, 2007] D. Ramanan. Learning to parse images of articulated objects. In , NIPS 2007.
- [Andriluka et al., 2009] M. Andriluka, S. Roth, and B.Schiele . Pictorial structures revisited: People detection and articulated pose estimation. In CVPR, 2009.
- [Yi and Ramanan, 2011] Yang, Yi, and Deva Ramanan. Articulated pose estimation with flexible mixtures-of-parts. In CVPR, 2011.
- [Hayashi et al., 2015] M. Hayashi, K. Oshima, M. Tanabiki and Y. Aoki. Upper Body Pose Estimation for Team Sports Videos Using a Poselet-Regressor of Spine Pose and Body Orientation Classifiers Conditioned by the Spine Angle Prior. IPSJ Transactions on Computer Vision and Applications 2015.
- [Hayashi and Aoki, 2016] M. Hayashi, and Y. Aoki. “Human Body Pose Estimation for Team Sport Videos with Poselets-Regressor and Head Detector.” CVIM 研究会 (May 2016).
- [Dollar et al., 2010] Dollar P., Welinder, P. and Perona, P.: Cascaded pose regression, In CVPR, 2010.
- [Toshev et al., 2014] A. Toshev and C. Szegedy. Deeppose:Human pose estimation via deep neural networks. In CVPR, 2014.