単眼画像からの人物姿勢推定(2D)[深層学習以前の手法からOpenPoseまで]

4+

1. 概要

単眼画像からの人物姿勢推定(Monocular Image Human Pose Estimation)とは,一枚の画像を入力として,画像中の人物に対して,画像上の2次元の骨格(関節間のスケルトン)を推定するコンピュータービジョンの問題である.通常は頭部や手先足先は1点もしくは数点で簡易に表現し,その他に,体幹部と腕・足の各関節キーポイントの推定を行う.

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

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

1.1 典型的な人物姿勢推定モデルの捉える人物画像データ分布

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

1.2 深層学習以前・以後の戦略の変遷

深層学習以前の解き方の戦略としては,以下の2ステージによる戦略が主流であった(2章)

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

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

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

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

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

2 深層学習以前の手法

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-Pars[8]を紹介する.

Pictorial Structures Revisited

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

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

Flexible Mixtures-of-parts

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

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

2.3 Poselet-Regressor

Poseletの「2キーポイントペア間における回帰」版として,管理人のHayashiらはPoselet-Regressor[10] [11]を提案した.Poseletを,元のパーツ検出器学習問題から「窓内2キーポイント間の,相対位置ベクトルの回帰」に転じることにより,横向きの姿勢も含めたキーポイント推定を可能にした手法である(後述の3.1 回帰モデルと入出力が似ている).

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

2.3.1 処理手順の詳細

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

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

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

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

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

3 深層学習を用いた手法

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 姿勢推定のカスケード学習の元祖: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

深層学習時代に入って,一番最初に人物姿勢推定手法としてarixv上に登場して有名になったのがDeepPose [13]である.人物画像から検出したラフな人物領域内の画像を入力として,カスケード接続した$K$ステージのCNN回帰を用いて,全身の人体姿勢の絶対座標をRefineしながら推定する手法である.Deep Pose[13]がarxivに登場した2014年の頃には,既に述べたCascaded Pose Regression[12]や, その顔ランドマーク向け[14]の応用でも既にカスケード構成での姿勢回帰は行われていたて.本研究は,その仕組みを初めて人物2D姿勢推定問題に試した研究である.

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}$を推定する.

論文中の推定結果の可視化を見てもらうとわかるが,Leed Sports データセットでの極端な姿勢での結果がどれもあまり良いものではないので,「とりあえずCNN化してみたが,2章の手法の頃の課題が解決するまでには至っていない」という提案だったと言える.また,同じ会議(CVPR2014)で登場してその後の論文では必ず実験して評価値を出すようになる「MPIIベンチマークデータセット」の実験結果がDeepPoseの論文[10]では無いゆえ,その後の世代の「信頼度マップベースの手法(3.2節)」と比較ができない論文でもある.

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

CNNの時代に突入後,「画素ごとに.キーポイント位置を中心とした確からしさを,2次元正規分布で表したヒートマップ画像」である信頼度マップ(Confidence Map)を$K$パーツ分だけCNNで出力する手法が,人物2D姿勢推定の代表的な戦略となった(信頼度マップのことを「ヒートマップ」と呼ぶ研究も多い).この3.2節では,その信頼度マップを用いた手法の代表として,Convolutional Pose Machines[15]とStacked Hourglass Network[18]を紹介する.後者の「(Stacked) Hourglassネットワーク」は,その後の人物姿勢推定(3Dも含めて)で,ResNetと同じくらいバックボーンネットワークによく用いられている.

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

Convolutional Pose Machines

Covolutional Pose Machines[15]は,彼らの研究室の過去手法であるPose Machines[16](非Deep Learning手法)の「信頼度マップの相互更新によるカスケード式人物姿勢推定」手法を,CNNを用いたものに発展させたものである(CNN版のPoseMachinesである).中間表現の信頼度マップをRefineしていき予測する点が,3.1節のDeepPose[13]では直接キーポイントベクトルを予測していたのと異なる点である.

[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$ストリーム並行に実施するので,$L$層分の複数スケールコンテキストに基づいた信頼度マップのRefineも学習する.

Convolutional Pose Machines[15]では,Pose Machinesの各ステージの推定器をCNNに差し替えることが提案された.CNN化のおかげで(論文中 Figure 2のように)たった3ステージの構成であるにもかかわらず,人物領域全体を最終的に受容野として各画素周辺のコンテキスト特徴を取り入れながら構造化推定をカスケードCNNに学習することができるようになった.これにより,高い姿勢推定精度と,CNNの恩恵による計算効率化の両方を達成しつつ,旧来苦手であった「横向き姿勢」も含めたあらゆる姿勢変化を(PoseMachinesのように)推定可能な,コンパクトなカスケードCNN方式を提案することができた.

Stacked Hourglass Network

Convolutional Pose Machines[15](CVPR2016)の直後に,ResNetのResidual module活用したEncoder-Decoderネットワーク構造「Hourglas」モジュールをカスケード化したStacked Hourglass Network[18]が提案された(ECCV2016).

Hourglassモジュールの構造は,UNet的に各解像度でスキップ接続されているEncoder-Decoder型CNNの,各ConvブロックをResidual ブロック [19] に差し替えたものである.このモジュール自体はSegNetやU-NetなどのHourglass(砂時計)形状のEncoder-Decoder構造を発展させたものとして捉えるとその類似性からどういうものなのか掴みやすい.加えて,Hourglass Moduleを$N$段横方向に積んで(stackして)繰り返すカスケード型構造を提案し,かなりの深いネットワークカスケードを用いて深い(Residualな)特徴を学習できるようになった.

Stacked Hourglass Networkでは,Hourglassモジュール間にもResidual接続が用意されており,そのResidual接続で信頼度マップを中間出力する際に,教師を与えてロスを取れる構造にしてある.こうしてResidualBlockの導入とHourglassブロック繰り返しによるカスケード学習を導入したことで,深く識別性能の良い階層的特徴の学習が可能となり,高い姿勢推定精度を達成できるようになった.

関連記事:畳み込みニューラルネットワーク [Convolutional Neural Network (CNN)] :「2.2 層間の接続による拡張

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

3.1と3.2の手法は,単一人物向けの手法であったが,この頃「画像中の複数人物の姿勢」をお互い区別して推定するCNNベースの手法の研究が始まった[20]

3.2節などの,単一人物画像向けのアプローチで解こうとした場合,$N$人同時に画像上に登場していると,CNNで信頼度マップを予測しても同一パーツの関節が$N$個同時に登場し,その際に検出した各関節が$N$人のうち誰の関節なのかを区別することができなかった.そこで,信頼度マップで推定した関節を「人物インスタンスごとに分割する処理」を追加することで解決をはかることが提案された.

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

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

まず最初に,Bottom-Up手法であるDeepCut[20]・DeeperCut[21]が初めての複数人物姿勢推定として提案された.また,2016年にIqbalとGall[22]は初のTop-Down手法として,Faster-RCNNで検出した各人物に単一画像姿勢推定を行い,誤差をInterger Linear Programmingで修正する手法を提案した.この頃に登場したインスタンスセグメンテーション手法であるMask R-CNN[23]も,その発展版においてCOCOデータセットのキーポイント位置も学習するようになったが,この発展版はTop-Downの複数人物姿勢手法に分類できる.

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

Part Affinity Fields (OpenPose)

前節のConvolutional Pose Machines[15] と同じCMUの研究グループから,Part Affinity Fieldsを用いたリアルタイム複数人物姿勢推定手法であるOpenPose[1][2]が提案された. Part Affinity Fieldは「ペアとなるキーポイント(=パーツ)間のAffinity(2つがペアである具合)を示すベクトル場」であり,パーツペア(ボーン)の数だけ,そのボーンに対応するPart Affinity Fieldsを学習する.Part Affinity Field上では.そのチャンネルが担当する$k$番目のボーン(例:「右前腕」)上の各画素位置でのみ,ボーンのもう片方のキーポイントが存在する方向の2Dベクトルが出力される.

Part Affinity Fieldを「キーポイント対応づけ(part association)」情報として用いてキーポイント群をグラフ対応づけすれば,同一人物ごとにキーポイントを分割できる,というのが[1][2]のアイデアである.前節3.2のように信頼度マップの推定を行うだけだと,複数人物が重なり合って写っている画像に対して,ボーン情報がないので,うまくキーポイント間を対応づけすることができない.ところが,キーポイント間対応づけ情報であるPart Affinity Fieldsも推定できていると,どの2点のキーポイントがボーンを形成しているかの「領域範囲+向き」も知ることができる.

[1]では,「(1)信頼度マップ(キーポイント検出)」を出力するストリームと,「(2)Part Affinity Fields (同一人物内のパーツ間の対応づけ)」を推定するストリームの2つを,カスケード方式で同時にRefineしていくネットワーク構造を提案した.そして,このネットワークを用いたカスケード推定が全ステージ終わったのちに,後段の処理として,キーポイントの人物ごとのグルーピングを次のようにグラフ対応づけで解く.ノードを(信頼度マップで検出した)キーポイントで構成した2分木グラフを用意し,各エッジの重みにはPart Affinity Field上でキーポイント間の直線に沿って積分した値を計算する.そして,このグラフをBipartite matchingで解くことにより,本手法の最終的な出力である「同一人物同士のキーポイント間のみが接続された対応づけ結果」を得る.

こうしてOpenPose[1][2]では,人物検出器などのTop-Down処理の必要なしに,(最後のキーポイント対応づけのグラフ処理以外は)2ストリームのBottom-upベース処理のみで複数人物の姿勢推定を実現できた.よって,計算効率も非常に良くなり,動画から毎フレームにおいてリアルタイムに複数人物姿勢を推定することを初めて達成できた.そして,本手法はOpenPoseという名称でオープンフレームワークとしても公開された(顔と手・足のキーポイント検出処理も追加されている.ジャーナル版[2]の4章でOpenPoseが提案されている).

Associative Embedding

Newellら[24]は,単一人物画像の姿勢推定手法であったNewellらのStacked Hourglass Network[18]の続編として,同一人物のキーポイント同士が近くに配置される「人物クラス値」の埋め込みである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]などの「キーポイント埋め込みベースの物体検出手法」に発展しているので,(シンプルな手法である上に)他のタスクにも応用できる汎用性の高い手法であるのも、よい点であると,管理人は思う.

4. まとめ

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

関連書籍

関連する書籍(Amazon/Kindle)

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.

外部サイト

4+