人物姿勢推定 (Human Pose Estimation)

1. Human Pose Estimation の概要

「単眼画像(Monocular Image)からの人物姿勢推定(Human Pose Estimation)」とは,一枚画像の入力から,画像中の人物に対して,画像上の2次元の骨格 (関節間のスケルトン) を推定する問題である.

この記事では,「画像入力からの人物2D姿勢の推定手法」について,深層学習以前の手法(2章)と 深層学習以後(3章)の順にまとめていく.

通常は頭部や手先・足先については,1点もしくは数点で簡易に表現し,その他に体幹部と腕・足の各関節キーポイントの推定を行う.

近年は,単一画像から3D人物スケルトン姿勢を推定する研究や,画像上の人物に3D人体形状モデル(例:SMPL)をあてはめて「3Dスケルトン姿勢 + 3D表面形状 (つまり姿勢と形状)」を同時推定する「人物3D形状+姿勢推定」の研究も盛んであるが,この記事では,画像からの2D人物スケルトン姿勢推定についてのみ代表的な研究をまとめる.

Human Pose Estimation result example
図1.人物姿勢推定の結果例 (OpenPose [1], [2]のHP中に以前掲載されていた画像を引用). 左図 :COCOデータセットによる人物キーポイントの箇所の定義.右図:画像にOpenPoseを適用した結果を可視化したもの.

画像からの人物姿勢推定は,リアルタイム手法である OpenPose [1], [2]が登場して以降,(動画での)人物行動理解で推定した姿勢を活用する例も非常に多くなり,「行動認識用の特徴量に用いる人物スケルトン姿勢を推定するセンシング課題」であるとみなすこともできる.ただし,(Kinectやモーションキャプチャのように) 本来は2Dスケルトンではなく,3Dスケルトン姿勢で出力できた方が行動認識にも使い勝手がよい.従って,近年は人物3D姿勢推定の研究も非常に活発である.

1.1 典型的な Human Pose Estimation モデルの捉える「人物画像データ」の分布

人物姿勢推定で学習に用いられるデータセット中には,人物の様々な「姿勢の変化」や「服装の変化」が含まれるように作成されてあり,こうしたデータセットから学習することで,未知の姿勢や服装に対応できる汎化性能が高いモデルを学習できることを目標にしているが,この仮定の話はあまり明示的には各論文で説明されない.逆に言うと,そのようなデータセットで学習した OpenPose[1]などは,データセットの平均分布に相当する「中肉中背の大人の人物画像」には強いが,その平均から比べて極端に体型・身長・服装の変化がある人物画像の場合は,正しく人物領域を捉えての推定はできていない(ただし,たまたま上手く推定できることが多い).

(※ この記事はその「体型変化」への対応を目指す「人物形状モデル」の路線は範囲外とするが,3D 体型モデルを学習しておき,それを画像データにフィッティングする研究がその路線にあたる)

1.2 深層学習以前・以後の人物姿勢推定の解き方の違い

深層学習以前の解き方の戦略としては,以下の2ステージ構成システムを用いた解き方が主流であった(2章)

  • 前半:パーツ検出器を用いて画素ごとのパーツクラス尤度を推定(ラフなローカル情報による推定)
  • 後半:人体シルエットモデル(Pictorial Structures)を用いてグラフ推論で最適パーツ配置を推定( 前半のパーツ位置を全体最適化でRefine)

これはデプス画像からの姿勢推定 (Kinectに搭載された手法) [2]でも採用された戦略であるが,深層学習登場以降も,この基本方針は踏襲したまま,深層学習・CNNに合うかたちに改良・洗練されていくことで精度が向上する.また,深層学習以前は不可能だった「横向き姿勢」「パーツが遮蔽した姿勢」も推定できるようになる(3章).

1.3 記事の構成

1.2節の変遷を踏まえて,この記事では,「画像からの人物2D姿勢の推定手法」について,以下のように深層学習以前(2章)深層学習以後(3章)の順にまとめていく:

  • 2章 深層学習以前の手法:
    • 2.1 Poselets
    • 2.2 Pictorial structuresベースの手法
    • 2.3 Poselet-Regressor
  • 3章 深層学習を用いた手法 :
    • 3.1 カスケード方式:回帰ベース
    • 3.2 パーツ検出:信頼度マップの導入
    • 3.3 複数人物への対応:パーツ対応づけ追加による

ちなみに,この記事の「画像からの人物2D姿勢推定」は,著者が博士論文で研究を行った,いまでも研究興味の高い問題設定である.私が後期博士課程に進学した当時は,初代Microsoft Kinectが発売されて,[2]の論文が話題になった頃であった.2.3節はその私の博士論文での研究成果である.

2 深層学習以前の Human Pose Estimation 手法

2010年あたりの,「人物姿勢推定技術に実用性がある論文が初めて生まれ始めた頃」から話を始める.

この当時は.DPM (Deformable Part Models)[5]などの「物体検出」技術が画像認識の主役であった.よって,人物姿勢推定においても,当時の物体検出を応用するかたいで,「検出性能の高いパーツ検出器(boostingなど)を利用した姿勢推定モデル」が提案されていった.

よって,2節では,パーツ検出器を用いた代表的な手法としてPoselets (2.1節)とPictorial Structures+パーツ検出器(2.2節)の2つを紹介する.また,管理人の私が提案した手法で,横向き姿勢でもキーポイント姿勢を推定できる手法の「Poselets-Regressor (2.3節)」についても述べる.

2.1 Poselets:3Dキーポイント空間を利用した部分姿勢検出器の学習

Poselets [3][4] は,人物画像にラベル付けされた3Dキーポイントを用いて,人物画像から同一姿勢矩形領域を抽出し,「人物姿勢画像の部分領域(= Poselet)」の検出器を学習する手法である (プロジェクトページ).

当時は,歩行者検出など「直立姿勢」の人間の「全身」の検出器を学習する技術は確立していた.しかし「固定ウィンドウサイズの検出器」であったので,学習時にも固定ウィンドウ内で人の見え方はある程度同じ姿勢で統一されている必要があった.よって,直立歩行者以外の多様な姿勢の人物領域(もしくはその部分領域)をうまく検出できる技術が存在していなかった.(※2.2節で紹介するPictorial Structuresも,検出できる姿勢パターンがグラフで人物シルエットを表現できる姿勢パターンに限られてしまうので,この問題は解決できない).

そこで[3]では,人物画像に対して3Dのスケルトン姿勢をアノテーションしたH3Dデータセットを用意したうえで,「同一関節のキーポイント間3D距離」の残差エラー和をもとに抽出した「同一の部分姿勢(=Poselet)を取っている人物領域画像」を集め,そのPoseletの検出器をぞれぞれ学習することを提案した[3].また各Poselet検出器は,特定の姿勢シルエットのみで位置合わせされた画像群から学習した検出器であるので,テスト画像からPosletを検出すると,同時にそのPoseletに対応する(ラフな)人物シルエットも推定できるという特性も合わせ持つ(つまりは,セグメンテーションも同時に行うことができる).

また,[3]のPoselet検出器の学習の続編として,[4]では,複数のPoselet検出器の検出結果から,各人物ごとにクラスタリングしてグループ化する処理により,画像中に複数人物が様々な姿勢で写っていても,各人物のバウンディングボックスの検出できるという手法を提案した.[4]は,3.3節で取り上げる「複数人物姿勢推定」を達成していると言える.

2.2 強固なパーツ検出器を用いるPictorial Structures手法

2Dパーツのグラフで対象物体や人物を表現し,グラフ推定を行うことでそのパーツの配置を推定する「Pictorial Structures[5][6]」というアプローチが2000年代中盤に登場した.その後,当時精度向上が激しかった物体検出技術を組み合わせるかたちで,「高精度なパーツ検出器を用いたPictorial Structures手法[7][8]」が2010年ごろに登場し,人物姿勢推定も初めて(背景が簡易ではない)実画像で精度が高くなった.

同時期に登場した,デプス画像ベースの人物姿勢推定[2] (Kinectの手法)の話題性の高さともあいまって,[7][8]での大幅な進展を皮切りに,画像から人物姿勢推定技術の研究人口が少しずつ増えていく.この2.2節では,そのPictorial Structures Revisited [7] と,Flexible Mixtures-of-Parts [8]を紹介する.

2.2.1 Pictorial Structures Revisited

Pictorial Structuresのパーツ尤度の計算にAdaboost識別器によるパーツ検出器を用いる Pictorial Structures Revisited [7]が提案された.学習の結果としてパーツ配置のPriorもグラフに学習する手法であり,推定の際には,学習済みの(人間なら取りえそうな)姿勢のPriorも用いたベイズ的なグラフによるパーツ配置推定を行う.

少し前のPictorial Structuresによる人体手法 [5][6]の時点では,各パーツを四角形で表現して,モデル全体のバイナリーシルエットを,低レベル画像特徴(エッジなど)を用いて画像の対象人物にフィッティングする少し古典的な画像処理方式であった.よって,シルエットと合わない複雑な服装は苦手で,また,古典的画像特徴を使うので複雑背景下ではうまく検出できない制限があった.それが,[7]の提案により,現代的な高精度のパーツ識別器の導入なされ,複雑背景下でも姿勢が推定できるようになり始めるブレイクスルーが起こった.

2.2.2 Flexible Mixtures-of-parts

前述の[6]の手法やDeformable Part Models [9]などでも当時知られていた Deva Ramanan 先生の研究室から,2011年に提案されたのが Flexible Mixtures-of-parts [8]である (プロジェクトページ).Pictorial Structures中の各人体パーツを「$T$種類のタイプのパーツ検出器の混合」として表現し,テスト時には$T$種類のうち尤度が最大のパーツタイプを推定結果として用いる.すなわち「パーツの見え方を$T$タイプ保持したMixtures(混合モデル)とみなし,もっともパーツ検出器の応答が強いものを推定パーツタイプとして選べる」という仕組みを提案した(※ 著者らのDPM [9]における 「Mixtures方式」の応用である).これにより,大きな姿勢変化に伴う各パーツの見え方の変化 + 同時発生具合も,Pictorial Structureグラフとして学習できるようになり,スポーツ演技中の人物画像のような激しい変化のある姿勢でも,1モデルのみで姿勢を検出できるようになった.

DPM [9]と同じく,Flexible Mixtures-of-parts の人体パーツグラフの構造化推定 (Structured Prediction) には,Latent SVM [10] による学習・推論が用いられる.当時,このLatent SVMは敷居が高めの技術であり,簡単には手を出しづらい技術であった.したがって,もし「CNNの登場を通じて構造化推定のハードルが下がる(3節)」ことが起き無ければ,この時期移行に人物姿勢推定は手詰まりになった可能性もある(同じく,CNN型のEncdoder-Decoderを用いた構造化推定に頼る「セマンティックセグメンテーション」等も同様のことが言える)

2.3 Poselet-Regressor

Hayashiらは,「Poseletのキーポイントペア間における回帰版」としてPoselet-Regressor [10],[11]を提案した.Poseletは,元々は特定の1つのパーツインスタンスを検出する問題設定であったが,それを「窓内2キーポイント間の,相対位置ベクトルの回帰問題」に転じることにより,横向きの人物姿勢も含めたキーポイント推定を可能にした手法である(後述のディープラーニング時代の「3.1節 回帰モデル」と入出力が似ている).

まず [10] では,上半身の「背骨姿勢(頭部中心 – Pelvis位置)」間の相対位置 (頭部中心を原点とみて,Pelvisがどこにあるか)を,Regression Forestへ学習するPoselet-Regressorを提案した [10].またその後の成果 [11]では,[10]で背骨を推定した後に「Pelvisを原点とした,足のキーポイント4つ(左右の膝と足先)」も二段目の処理として推定することを提案し,横向き時も含めた脚の姿勢推定も実現した.

2.3.1 Poselet-Regressor の処理手順

まず,対象人物の頭部を,頭部検出器とKalman Filterにより,Tracking-by-Detectionで追跡する.その各フレームにおいて,(Poselets [3],[4] のように)頭部位置を原点としたの固定サイズ窓内で,上半身のHOG特徴量を計算する.その上半身HOGを入力特徴ベクトルとしてRegression Forestにより「頭部中心を原点としたときのPelvis位置」を推定することで,毎フレームの背骨姿勢(頭部中心-Pevis)を推定することができる.オリジナルのPoselets [3],[4]の「検出器」という方法から少し考え方を変えて,「基準キーポイント(頭部中心)位置からみて,目標キーポイント(Pelvis)がどこにあるかを回帰」するようにしたので「Poselet-Regressor」と私は名付けた.

さらに,[10]ではPoselet-Regressorによる背骨姿勢提案に加えて,推定した背骨姿勢を角度を5クラスに分けて条件付けし,クラスごとに用意した各モデルで推測を行う「背骨角度で条件付けされた,上半身8方向推定器」も提案した.直立姿勢が多い歩行者画像と違い,ボールスポーツ映像では「大きな上半身の傾き」により見え方の変化が多くなる.これを,Poselet-regressorで推定した「背骨角度」で条件付け識別器化することにより,角度範囲内の上半身の見え方のみを対象とした方向識別器を学習できるようになった.

次に,博士論文執筆中の成果である [11]では,[10]で推定したPelvis位置を今度はまた原点位置とみなして,別の4つのPoselet-Regressorに足の4つのキーポイント(膝と足先)を推定させることを提案した.[11] では以下の2ステージに分けて,段階的にPoselet-Regressorを2回用いることで,脚の4つの関節位置の推定を行う:

  • Poselet-Regressor1:「頭部中心 -> Pelvis」(頭部中心を原点とした上半身領域のHOGが入力ベクトル)
  • Poselet-Regressor2 × 4個:「Pelvis -> 足の関節(両膝,両足先)」 (Pelvis位置を原点とした,下半身領域のHOGが入力ベクトル)

これにより,スポーツ映像なので,服装・体型の変化の少なさはあるものの,横向きの姿勢が多く,なおかつ走ったていて下半身姿勢変化が激しい状況での脚のスケルトン姿勢推定を実現することができた.(※ 博士論文ではサッカー映像でも実験している).

2.3.2 すぐそこまで迫り来ていたCNNベースの手法

画像特徴量には,我々も当時の主流であった HOG (Histograms-of-Oriented Gradients) を用いていた.HOGは8×8 画素のグリッド単位の微分値をヒストグラム化した「Pooled特徴化ベクトル」である.従って,4×4 画素前後程度の誤差はどうしても出てしまい,著者は結局その問題を解決することは結局できなかった.よって,これを研究していた当時,「Deep Pose (3.1.2 節)が登場した際に,CNNを用いるとどんな人物姿勢でも関節キーポイントの精緻な回帰ができそうになる可能性が初めて示され,非Deep Learningで研究していた私は「急がないと博士論文が取れなくなる」と焦ったものである.

3 深層学習を用いた Human Pose Estimation 手法

2章の手法はPoselet-Regressor以外はどれも,「強いパーツ検出器で各パーツの尤度を計算 -> Pictorial Structureのグラフ処理により最適なパーツ配置を推定」という処理設計であるがゆえ,「正面向き・全パーツ見えて欲しい」という適用可能な人物画像の制限があった.それが,深層学習およびCNNの発展により,対応不可能だった部分遮蔽時も強い人物姿勢推定手法が提案されていく.そして,最終的に複数人物でリアルタイムに姿勢推定可能なOpenPose [1]の登場によりCNNベースの人物姿勢推定手法がひと段落し,コモディティ化が始まるまでに到る.

3章では,CNN化の開始であったDeepPose [13]から,OpenPose [1]登場に至るまでの「深層学習ベースを用いた手法の発展」を,以下の3段階に分けて時系列順に紹介する:

  • カスケード方式 : 回帰ベース (3.1)
  • パーツ検出:信頼度マップの導入 (3.2)
  • 複数人物への対応:パーツ対応付け処理の追加(3.3)

3.1 カスケード方式 : 回帰ベース

3.1.1 Pose推定のカスケード学習の元祖:Cascaded Pose Regression

関連手法としてまず最初に,深層学習時代の前夜に提案された「カスケード方式回帰モデル群による姿勢推定手法」の先駆けであるCascaded Pose Regression [12]について紹介する.[12]は複数の姿勢推定器をカスケードでつなぎ,推定姿勢の残差を少しずつ各推定器でrefine量を学習させる方式を提案した.各ステージでは前ステージの回帰結果に残っている残差エラーをRefineする分を学習していき,$N$ステージ分の回帰を経た結果,高精度の最終推定値が得られる.[12]ではカスケード化している各ステージの推定器にはRandom Fern(Random Forestの改良モデルの1つ)を使用している.

この「カスケードモデル化戦略」を採用すると,各モデルの出力の値の範囲は小さく,個別に各ステージを学習できて楽に済む.従って,1モデルで一気に学習する場合はsub-opitimalな解になってしまいやすいような,データ・出力のバリエーション(スケールの広さも含めて)も,きちんと学習しやくなる.ただし,よくモデルがフィットしやすくなる反面,過学習が怖いとも言える.

また,[12] で回帰モデルに使用されたRandom Fernのように,特徴選択も行える予測モデルを使用することで,各ステージが解くべき問題の出力範囲が狭まり,特徴選択された特徴だけを連ねてカスケード処理していくことから,高速処理化も達成していた.

3.1.2 Deep Pose

深層学習時代に入って,一番最初に人物姿勢推定手法として有名になったのがDeepPose [13]である.人物画像から検出したラフな人物領域内の画像を入力として,カスケード接続した$K$ステージのCNN回帰を用い,キーポイントの絶対座標をRefineしていき,最終結果を推定する.

Deep Pose [13] がarxivに登場した2014年の頃には,3.1.1節のCascaded Pose Regression [12] やその顔ランドマーク推定向けの応用 [14]でも,既にカスケード構成での姿勢回帰は行われていた.本研究は,その仕組みを初めて人物2D姿勢推定問題に(CNNで)試した研究である.

処理手順

DeepPose では,$j$番目の関節点のキーポイント$\bm{p}_{j} \in \mathbb{R}^2$を$K$個分CNNで回帰することを,$S$ステージだけカスケード方式で予測を繰り返してRefineしていく.1ステージ目のCNNも,2ステージ目以降のRefine用CNNも,ともにAlexNetをバックボーンに用いる.

1ステージ目CNNでは,最後の全結合層(4096次元)から,K個の関節の$ \bm{p}_{j} = (x_j,y_j)$値を列ベクトルとして並べた$2K$次元ベクトルを出力として回帰し,この結果「誤差がまだ結構含んでいる全パーツの推定結果」が初期解として手に入る.次に2ステージ目以降のCNNでは,各関節$j$について個別に,GroundTruth 値をターゲットとした前ステージの予測値からのRefine分を推定する.2ステージ目以降の入力画像には,前ステージ$s-1$で推定した$ \bm{p}_{j}^{s-1}$の周辺の小さいバウンディングボックス内の画像を用い,出力には間接$j$のそのステージにおけるRefine値$\Delta\bm{p}_{j}$を推定する.

最初のCNNベースの手法としての立ち位置

論文中の推定結果の可視化を見てもらうとわかるが,Leed Sports データセット中の極端な姿勢での結果が(最近のCNN手法と比べると)どれもあまり良いものではない.すなわちDeepPoseの時点では,以前の手法の課題が解決するまでには至っていない,あくまでCNNベース手法の最初の提案であった.

また,同じ会議 (CVPR2014)で登場し,その後しばらくは人物姿勢推定の標準的ベンチマークとなる「MPIIベンチマークデータセット」の実験がDeepPoseの論文 [10] では行われていない.よってDeepPoseは,その後の世代の「信頼度マップベースの手法(3.2節)」との比較ができない論文でもあった.

3.2 キーポイント検出:信頼度マップの導入

CNNの時代に突入後,「画素ごとに.キーポイント位置を中心とした確からしさを,2次元正規分布で表したヒートマップ画像」である信頼度マップ(Confidence Map)を$K$パーツ分だけCNNで出力する手法が,代表的な戦略となった(信頼度マップのことをヒートマップ(Heat Map)と呼ぶ研究も多い).

この3.2節では,その信頼度マップを用いた手法の代表として,Convolutional Pose Machines [15] (3.2.1節)と,Stacked Hourglass Network [18] (3.2.2節)を紹介する.後者の「(Stacked) Hourglassネットワーク」は,ResNetと同じくらいの高い頻度で,人物姿勢推定ネットワークのバックボーンによく用いられている.

この「信頼度マップを出力とする手法」は,2章で紹介した「パーツ検出器を用いて各画素を$K$クラスに分類する」アプローチに,原点回帰したとも捉えることができる.一方で,2章の「パーツ検出器をスライディングウィンドウする方式」と比べると,この3.2節の手法は広範囲の空間位置情報も含んだ深いCNN特徴を入力として,各画素でキーポイントを予測できる点にアドバンテージがある.

3.2.1 Convolutional Pose Machines(CPM)

Convolutional Pose Machines (CPM) [15]は,彼らの研究室の過去手法である Pose Machines [16]を,CNNを用いたものとして発展させた手法である(すなわち,CNN版のPose Machines).中間表現である信頼度マップをRefineさせていくことにより,予測していく.3.1節のDeepPose [13]は,直接キーポイントベクトルを予測していた点で異なる.

前身の手法:Pose Machines

[15]の前身であるPose (Inference) Machines [16]は,複数の信頼度マップの構造化推定(Structured Inference)の挙動を,代わりにカスケードモデルへ学習する手法である.そして[16]の更に前身手法であった元アイデアの Inference Machines [17] は,セマンティックセグメンテーション問題に対して,グラフのMessage-PassingによるInfereceをカスケードモデルへ学習する手法であった.

Pose (Inference) Machines [16]は,各ステージでマルチクラス識別器 (random forest) を用いたカスケードにより,$K$チャネル(=$K$パーツ) の信頼度マップを推定・Refineする.前ステージの$K$パーツ分の信頼度マップ全てを次ステージの予測の入力特徴ベクトルに結合して用いるので,パーツ間コンテキストを考慮したInferenceを(Random Forestの)カスケードとして学習できる.また,各ステージ間において「それぞれ異なる周辺コンテキスト矩形サイズの画像」を入力とした推定を,$L$本で並列に実施する.従って,$L$層分の複数スケールのコンテキストに基づいた信頼度マップのRefine具合も学習できる.

Pose Machines の CNN化

CPM [15]では,Pose Machinesの各ステージの推定器をCNNに差し替えることが提案された.CNN化のおかげで(論文中 Figure 2のように) たった3ステージの構成であるにもかかわらず,人物領域全体を最終的に受容野として各画素周辺のコンテキスト特徴を取り入れながら構造化推定を,カスケードCNN群へ学習できる.

これにより,高い人物姿勢推定精度と,CNNの恩恵による計算効率化の両方を達成しながらも,旧来の人物姿勢推定手法が苦手であった「横向き姿勢」も含めたあらゆる姿勢変化を (Pose Machines [16] のように) 推定可能となった.

3.2.2 Stacked Hourglass Network

CPM [15](CVPR2016) の直後に,ResNetの残差ブロックを活用したEncoder-Decoder構造である「Hourglassモジュール」をカスケード化した手法のStacked Hourglass Network (SHN) [18] が提案された(ECCV2016).

Hourglassモジュールの構造は,UNet的に各解像度でスキップ接続したEncoder-Decoder型CNNの,各畳み込み層をブロック化して,残差ブロック [19] に差し替えたものである.(SegNetやU-NetなどのHourglass(砂時計)形状のEncoder-Decoder構造を発展させたものとして捉えると,どういう仕組みなのかを理解しやすい).

加えて,Hourglass Moduleを$N$段横方向に積んで(stackして)繰り返す,カスケード学習方式を採用することで,かなりの深さのカスケードを用いて深く残差的な特徴を学習できるようになった.

また,SHNではHourglassモジュール間もスキップ接続されて残差接続化されている.その残差接続側で信頼度マップを中間出力する際に,毎回教師信号を与えてロスを取れる構造となっている.

以上のような工夫により,SHNは高い人物姿勢推定精度を達成できるようになった.

3.3 複数人物への対応:キーポイント対応付け処理の追加

3.1と3.2の手法は,単一人物向けの手法であったが,この頃「画像中の複数人物の姿勢」をお互い区別して推定するCNNベースの手法の研究が始まった [20].3.2節などの,単一人物画像向けのアプローチで解こうとした場合,$N$人同時に画像上に登場していると,CNNで信頼度マップを予測しても同一パーツの関節が$N$個同時に登場し,その際に検出した各関節が$N$人のうち誰の関節なのかを区別することができなかった.そこで,信頼度マップで推定した関節キーポイントを「人物インスタンスごとに分割する処理」を追加することで解決をはかることが提案された.

深層学習時代の複数人物姿勢推定手法は,この「人物ごとにキーポイントを分割する処理」の実施方法の種類によって,以下の2つに分類することができる:

  1. Top-Down手法:Faster R-CNN などで人物検出を行い先に区別し,各インスタンス領域で単一画像姿勢推定を行ったのち,人物間遮蔽などにより生じた関節位置のエラーを修正する処理 (Refinement) を行う.
  2. Bottom-Up手法:信頼度マップに加えて,関節キーポイントを人物インスタンスごとに対応付けする用の「中間特徴量」も推定しておく.最後に,それらを用いて人物ごとに関節を分割(グルーピング)する.

まず最初に,Bottom-Up手法であるDeepCut [20]・DeeperCut [21]が,初めての複数人物姿勢推定として提案された.またIqbalとGall [22](2016)は,初のTop-Down手法として,Faster R-CNNで検出した各人物に単一画像姿勢推定を行い,誤差をInterger Linear Programmingで修正する手法を提案した.この頃登場した Mask R-CNN [23]も,COCOデータセットの人物キーポイント位置も学習する意味で,Top-Down人物姿勢推定手法の一種である.

以降は,このうち,3.2の手法の複数人物対応版として拡張するかたちで発表されたPart Affinity Fields (3.3.1節)とAssociative Embedding (3.3.2節)について紹介する.

3.3.1 OpenPose: Part Affinity Fields (PAF)

前節のCPM [15] と同じCMUの研究グループから,Part Affinity Fields(PAF)を用いたリアルタイム複数人物姿勢推定手法であるOpenPose [1],[2]が提案された.

Part Affinity Fieldsは「ペアとなるキーポイント(= パーツ)間のAffinity(2つがペアである具合)を示すベクトル場」である.パーツペア(= ボーン)の数だけ,そのボーンに対応するPart Affinity Fieldsを学習する.Part Affinity Field上では.そのチャンネルが担当する$k$番目のボーン(例:右前腕ボーン)上の各画素位置でのみ,そのボーンのもう片端のキーポイントが存在する方向の,2Dベクトルを推定(学習)する.このPAFを「キーポイント対応づけ(part association)」情報として用いて,キーポイント群にグラフ対応づけを行えば,同一人物ごとにキーポイントを分割(グループ分け)できる,というのが [1], [2]のアイデアである.

前節3.2のように信頼度マップの推定を行うだけだと,複数人物が重なり合って写っている画像に対して,ボーン情報がないので,うまくキーポイント間を対応づけすることができない.ところが,キーポイント間対応づけ情報であるPart Affinity Fieldsも推定しておくと,どの2点がボーンを形成しているか(ボーンの領域範囲 + 向き)も推定することができる.

[1]では,以下の2つのストリームを,カスケード式に同時にRefineしていくネットワーク構造を提案した:

  1. 信頼度マップ(キーポイント検出)」を出力するストリーム
  2. PAF(同一人物内のパーツ間の対応づけ) を推定するストリーム

そしてカスケード推定が全ステージ終わったのち,後段の処理として,人物ごとにキーポイントをグループ化する処理を,次のようにグラフ対応付けにより解く:

  • ノードを(信頼度マップで検出した)キーポイントで構成した2分木グラフを用意し,各エッジの重みにはPAF上でキーポイント間の直線に沿って積分した値を計算
  • このグラフをBipartite Matchingで解くことにより,最終的な出力である「同一人物同士のキーポイント間のみが接続された対応づけ結果」を得る.

こうしてOpenPose [1],[2]では,人物検出器などのTop-Down処理の必要なしに,(最後のキーポイント対応づけのグラフ処理以外は)2ストリームのBottom-upベース処理のみで複数人物の姿勢推定を実現できた.従って,計算効率も向上することになり,リアルタイムに動画から毎フレームの複数人物姿勢を推定することを初めて達成できた.

本手法はOpenPoseという名称でオープンフレームワークとして公開された.顔と手・足のキーポイント検出処理も追加されたもので,ジャーナル版[2]の4章でこのOpenPoseが提案されている.

3.3.2 Associative Embedding

Newellら [24]は,単一人物画像の姿勢推定手法であったNewellらの SHN [18] (3.2.2節)の続編として,複数人物姿勢推定手法を提案した.同一人物のキーポイント同士が近くに配置される「人物クラス値の埋め込み」であるAssociative Embeddingマップを推定することで,信頼度マップで検出した関節位置のタグ(= 関節ががどの人物クラスに属するか)の推定に用いる手法である.

[24] のネットーワークでは,信頼度マップ$K$チャンネルに加えて,Associative Embedding (タグ値のマップ)$K$チャンネルを出力し,合計$2K$チャンネルを出力する(論文 [24]中 Figure 2を参照).$i$番目の関節の信頼度マップ上で検出された各関節位置$x$は誰の関節なのかまでわからない.しかし,関節$i$に対応するAssociative Embeddingマップ$h \in \mathbb{R}^{W \times H}$上では,検出位置$x$でのタグ値$h(x)$に,その関節が$j$番目の人物クラスの関節であるかの値が推定されている.したがって,このタグ値の距離を用いるだけで,高速に関節群を人物ごとにグルーピングできる.難解な最適化や対応づけ処理を行わずに済むゆえ,計算効率性が非常に高く処理も速い手法と言える.

$K$枚のAssociative Embeddingマップ$h$を学習する際には(contrastive loss的なdeep embedding学習を行う「grouping loss関数」が用いられる.画像上の関節位置(x)に対応するタグ値を$h(x)$としたときに,Grouping Loss関数は,「同一人物クラスのタグ値は近づける」と「別人物クラスのタグ値は遠ざける」の2つの誤差の重み付け和で定義されている.よって,(人物間遮蔽パターンも十分に含む)複数人物が写っている画像群から学習することで,同一人物の関節位置がAssociative Emebbding上の近い位置にグルーピングされて埋め込まれ,なおかつ人物$N$人分の各グループはお互い離れた場所に埋め込まれることとなる.

ちなみに,Associative Embeddingは,CornerNet [25]などの「キーポイント埋め込みベースの物体検出手法」に,その後は発展している.従って,シンプルな手法である上に,こうして他のタスクにも応用できる汎用性の高い手法であるのも,Associative Embeddingの良い点だと著者は感じる.

4. 単眼の Human Pose Estimation のまとめ

画像からの2D人物姿勢推定手法を,深層学習以前(2章)と深層学習ベースの手法(3章)に分けて紹介した.

また,深層学習ベースの手法では,現在おもに信頼度マップを推定する画素クラス識別の設定で解かれることが多く,その信頼度マップ推定も以前からの「単一人物姿勢推定(〜3.2節)」だけ解かれていたのが,新たに「複数人物姿勢推定(3.3節)」も研究されていることを紹介した.

References

  • [1] Z. Cao, T. Simon, S.-E. Wei, and Y. Sheikh. Real-time multi-person 2d pose estimation using part affinity fields. In CVPR 2017.
  • [2] Cao, G. Hidalgo, T. Simon, S. Wei, and Y. Sheikh. Open-pose: Realtime multi-person 2D pose estimation using partaffinity fields.CoRR, abs/1812.08008, 2018.
  • [3] Lubomir Bourdev, Jitendra Malik, Poselets: Body Part Detectors Trained Using 3D Human Pose Annotations, In, ICCV 2009.
  • [4] Lubomir Bourdev, Subhransu Maji, Thomas Brox, Jitendra Malik, Detecting People Using Mutually Consistent Poselet Activations, In , ECCV 2010.
  • [5] P. F. Felzenszwalb and D. P. Huttenlocher. Pictorial structures for object recognition. IJCV, 61(1):55–79, 2005.
  • [6] D. Ramanan. Learning to parse images of articulated objects. In , NIPS 2007.
  • [7] Andriluka, M., Roth, S., and Schiele, B. . Pictorial structures revisited: People detection and articulated pose estimation. In CVPR, 2009.
  • [8] Yang, Yi, and Deva Ramanan. Articulated pose estimation with flexible mixtures-of-parts. In CVPR 2011.
  • [9] P. F. Felzenszwalb, R. B. Girshick, D. McAllester, and D. Ramanan. Object detection with discriminatively trained part based models. IEEE PAMI, 2009.
  • [10] 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,7, pp. 121-137 (2015).
  • [11] Hayashi Masaki, and Yoshimitsu Aoki. “Human Body Pose Estimation for Team Sport Videos with Poselets-Regressor and Head Detector.” CVIM 研究会 (May 2016) (2016).
  • [12] Dollar P., Welinder, P. and Perona, P.: Cascaded pose regression, In CVPR 2010.
  • [13] A. Toshev and C. Szegedy. Deeppose:Human pose estimation via deep neural networks. In CVPR, 2014
  • [14] X. Cao, Y. Wei, F. Wen, and J. Sun. Face alignment by explicit shape regression. In, CVPR 2012
  • [15] S.-E. Wei, V. Ramakrishna, T. Kanade, and Y. Sheikh. Con- volutional pose machines. In CVPR, 2016.
  • [16] V. Ramakrishna, D. Munoz, M. Hebert, J. A. Bagnell, and Y. Sheikh. Pose machines: Articulated pose estimation via inference machines. In, ECCV 2014.
  • [17] Ross, S., Munoz, D., Hebert, M., Bagnell, J.A.: Learning message-passing inference machines for structured prediction. In , CVPR 2011.
  • [18] A. Newell, K. Yang, and J. Deng. Stacked hourglass networks for human pose estimation. In, ECCV 2016.
  • [19] He, K., Zhang, X., Ren, S., Sun, J.: Deep residual learning for image recognition. Computer Vision and Pattern Recognition, 2016. CVPR 2016. IEEE Conference on (2015)
  • [20] L. Pishchulin, E. Insafutdinov, S. Tang, B. Andres, M. Andriluka, P. Gehler, and B. Schiele. Deepcut: Joint subset partition and labeling for multi person pose estimation. In CVPR, 2016.
  • [21] E. Insafutdinov, L. Pishchulin, B. Andres, M. Andriluka, and B. Schiele. Deepercut: A deeper, stronger, and faster multi-person pose estimation model. In ECCV, 2016.
  • [22] Umar Iqbal and Juergen Gall. Multi-person pose estimation with local joint-to-person associations. In ECCV, 2016 workshop.
  • [23] He, K., Gkioxari, G., Dolla ́r, P., Girshick, R., 2017. Mask r-cnn, In, ICCV 2017.
  • [24] Alejandro Newell and Jia Deng. Associative embedding: End-to-end learning for joint detection and grouping. In NIPS, 2017.
  • [25] Law, Hei, and Jia Deng. Cornernet: Detecting objects as paired keypoints. In, ECCV 2018.

外部サイト

関連記事