古典的な人物姿勢推定 [ディープラーニング以前の手法]

1. ディープラーニング以前の人物姿勢推定 [概要]

この記事では,ディープラーニング登場以前の人物姿勢推定(Human Pose Estimation)について,まとめる.

2010年あたりの「人物姿勢推定技術に,実用性がある論文が初めて生まれ始めた頃」の時期の,主な研究を,「パーツ検出(2章)」紹介する.親記事でフォーカスしている「(ディープラーニングを使用した2015~2015移行の)人物姿勢推定」が登場する以前の,黎明期の話を紹介したい.ディープラーニング登場以後の話は,以下の親記事にまとめている.

人物姿勢推定黎明期の,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手法

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 手法として,Pictorial Structures Revisited [Andriluka et al., 2009] (2.2.1節)や,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式の「パーツ混合モデル」の,人物姿勢推定への応用である.

FMPは以下に述べる,「工夫1: 各パーツの混合モデル化」と「工夫2: 小部分の伸び縮み表現化」の2つのにより,多様な姿勢の検出へ対応できるようになった.

工夫1: パーツ検出器の「Mixure」化

Pictorial Structures 中の各人体パーツを「$T$種類のタイプのパーツ検出器の混合」として表現し,テスト時には$T$種類のうち尤度が最大のパーツタイプを推定結果として用いる.すなわち「パーツの見え方を$T$タイプ保持した混合モデルとみなし,もっともパーツ検出器の応答が強いものを推定パーツタイプとして選ぶ.

工夫2: 「Flexible」な,小部分の曲げ伸び縮み表現化

また,人物用のPictorial Structuresグラフでは,四肢の半分を1パーツと見なしていたのが,FMPでは「小さなパーツ2個ペアの伸び縮み」としてモデル化するようになった.これにより,人ごとの四肢の長さの多様性や,姿勢ごとに(透視投影・正射影)見え具合で変わる,四肢の長さの変化も,グラフに学習しやすくなった.

2つの工夫のおかげで「様々な激しい姿勢変化」へ対応可能に

以上2点の改良により,FMPは,大きな姿勢変化に伴う「各パーツの見え方の変化」も,PSグラフへうまく学習できるようになった.これにより,スポーツ演技中の人物のような,激しい姿勢の変化が生じている人物画像でも,FMPの1モデルだけに,姿勢検出DPMを学習できるようになった.PS-Revisitedまでは,人物姿勢の多様なバリエーションへの対抗策がなかったので,FMPがそれを突破したのは大きな進展であった (ただし,パーツ数 × M混合数だけ,検出器を実行する必要があるので,計算コストがやや高い難点はあった).

DPM と同じく,FMPの人体パーツグラフの構造化推定(Structured Prediction) には,Latent SVM による学習・推論が用いられる.ただし,Latent SVMは,応用するには敷居が高い技術であったため,簡単には手を出しづらかった.もし3節以降の「CNNの登場を通じて構造化推定のハードルが下がる」ことが起き無ければ,この時期移行に,人物姿勢推定は手詰まりになった可能性もある.

3.「キーポイント回帰」による手法

3.1 Cascaded Pose Regression

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] では追加で,背骨の傾きからの条件付きモデルにより,8方向の身体向き推定(Body Orientation)も提案した(3.2.2節).

その後の [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-Regressorと名付けた.

以下が,[Hayashi et al., 2015] における,背骨姿勢の追跡処理手順である:

  • まず追跡+姿勢推定をしたい対象人物の頭部矩形を,初期位置として与える.
  • 頭部検出器SVMとカルマンフィルタにより,Tracking-by-Detection方式で,毎フレームの頭部中心位置を追跡.
  • 各フレームで,(Poseletsのように)頭部位置を原点とした固定サイズ窓内で,上半身のピラミッドHOG特徴量ベクトルを計算.
  • その上半身HOGを入力特徴ベクトルとして,Regression Forestにより「頭部中心を原点とした際の,Pelvisの相対位置」を推定.

以上の手順により,毎フレームの背骨姿勢(頭部中心位置-Pevis位置の2点)を,ボールスポーツ映像において初めて推定することができるようになった.映像中のほとんどのフレームが,スタジアムのスタンドから撮影した「横向きの姿勢」であることが,当時主流の「Pictorial Structure系の検出ベース手法(2.2節)」の解きかたでは,解けなかった点である.

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 では達成したのだものの,「人物ROI矩形内のHOG特張 → 回帰モデル (Poselet-Regressor)」の組み合わせでは,上述のHOGプーリング由来の誤差問題は解決できないので,キーポイントの推定精度は今一つであった.また,人物領域の大きさ・アスペクト比も,当時の歩行者検出のような [128 × 64]の,「低画質に遠くに写る対象」限定での成果であった.

3.3.1 Deep Poseの登場

Poselet-Regressor を博士課程で研究していた当時に,Deep Pose [Toshev et al., 2014] が登場した.Deep Poseでは「CNNを用いると,どんな人物姿勢でも,関節キーポイントの精緻な回帰ができそうになるかもしれない」という可能性が,初めて示された.よって,非Deep Learningで研究していた私としては「急がないと博士論文が取れなくなる」と焦り,その後の展開に戦々恐々としたものである.

4. まとめ

この記事では,ディープラーニング以前の機械学習ベースの人物姿勢推定について,登場順に「1. パーツ検出器 +Pictorial Structures」と「2. 直接キーポイント回帰」の2段階を紹介した.これらの登場以前は,実験環境の拘束ありの画像でしか解けなかった問題が,1.パーツ検出の登場で,拘束無しの実画像でも,人物姿勢ができるようになっていく.そして,2.回帰の登場以降は,その後,どんな姿勢でも学習できるようになっていった.

後半の「キーポイント回帰」手法である,管理人提案のPoselet-Regressorは,ディープ登場後のDeepPose や Mask R-CNN とやっていることは近くて,同じく「ROI特徴量からのキーポイント回帰」である.だが,当時は色々できて便利なCNNがまだなかったので,当時の回帰モデル(Regression Forest)でできる範囲で,似たようなことを実現したのだと,今考えると類似比較できるようである.Pitor Dollar氏らは,Mask R-CNNで,キーポイント回帰のヘッドも提案しているが,CPR [Dollar et al., 2010] の成果があったがゆえの,回帰ヘッド追加ではあると憶測もできる.

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.