Voxel heatmapで三次元姿勢推定

3次元関節推定問題に対して、

  • volumetric heatmapを回帰させる
  • 反復的なネットワークで段階的に精度を上げる

f:id:yusuke_ujitoko:20170806013741p:plain:w500

関連研究

  • CNNによる三次元姿勢推定でよく行われるアプローチは、
    三次元関節座標(x,y,z)を直接回帰問題として解くこと(Li et al.Tekin et al.
    • 難しい問題となる
    • Tompson et al.の論文Pfisterの論文にこのアプローチの欠点が記述されているようなので読みたい
    • 伝統的な2段階で三次元姿勢推定する手法にも劣る
      • こちらの手法ではCNNは2次元関節位置推定にのみ使われ、3次元姿勢は事後処理で別途推定される。

手法

Volumetric representation

volumetric representationを使う。 三次元空間を{w \times h \times d}のvoxelに分割し、 関節が各voxelに存在する確率を推定させる。 教師データは三次元正規分布で作り、教師データとのL2距離を誤差関数とする。

volumetric representationの利点は、各関節の座標を直接回帰させる問題を、voxel ごと関節が存在する信頼度の推定問題とできること。 こちらの方がネットワークとしては勾配情報を伝搬しやすく学習しやすい。 二次元姿勢推定でも全く同じ話があった。

ネットワークの構造としては、hourglass型を使う。

f:id:yusuke_ujitoko:20170806013802p:plain

Coarse-to-fine prediction

多段のstageを利用して反復的に精度を上げていく。 二次元姿勢推定で有効性が確認されている手法だが、 三次元の場合、例えば{64 \times 64 \times 64}のvoxelを16個の関節分推定する必要があるとすると、400万voxel分推定することになる。 次元の呪いを避けるため、coarse-to-fine predictionの枠組みを使う。 最初の方のstageではvoxelのz次元(距離方向)に対する解像度を低くし、 後ろの方のstageでは解像度を徐々に上げていく。

評価

従来の座標を回帰させる方法(Coordinate Regression)と比べて、voxelの確率を回帰させる提案手法の有効性が明らかとなった。

f:id:yusuke_ujitoko:20170806015201p:plain:w400

他の代表的手法と比べてもSOTAであった。

人体構造の制約を GANでimplicitに教示して姿勢推定するメモ

関連研究

  • 姿勢推定ではDCNN(Deep Convolutional Neural Nets)でheatmapを回帰する手法が一般的
    • しかし、以下の場合では現実ではあり得ない姿勢を出力してしまうことがある
      • 部位のocclusionが大きいとき(以下の画像参照)
      • 背景と部位の類似度が高いとき
    • これを避けるには人体の関節構造についての事前情報が必要。
    • でも人体の幾何的制約をDCNNに入れ込むのは難しい

f:id:yusuke_ujitoko:20170730090950p:plain

Adversarial PoseNet

姿勢推定した結果が「人体として尤もらしいか」をimplicitに学習させるために、GANの枠組みを利用。 通常GANではGeneratorとDiscriminatorが1組ずつだが,この研究ではDiscriminatorが2つある.

  • Generator
    • G: pose generator
      • pose keypointのheatmap(pose heatmap)の生成
      • occlusion heatmapの生成
  • Discriminator
    • P: pose discriminator
      • pose heatmapとocclusion heatmapから姿勢として尤もらしいかを判別する
    • C: confidence discriminator
      • 推定が正しいときにはpose heatmapの値が高い傾向にあることを考慮し,
        Gのpose heatmapの値が大きくなるようにすることが目的

GはG自身で学習可能だが、それだけだと結果は良くない。 PやCの誤差も使ってGを更新する。

PやCは真のheatmapとGの生成したheatmapを区別するように学習する. ただしそれだけではなく,例えばCはGがlow-confidentなheatmapを出力したら"fake"だと分類しやすいようになっている. GはCを欺くよう学習するので,high-confidentなheatmapを出力するようになる.

f:id:yusuke_ujitoko:20170730091150p:plain

以下でG,P,Cをそれぞれ確認する。

G: Multi-Task Generative Network

Gは画像{x}をもとに, pose heatmap {y}とocclusion heatmap {z}を推定する.

Convolutional pose machinesによると,受容野を大きくすることが部位推定に重要であるという. このGでも大きな受容野を利用。

また,顔や手を特定するような局所的な特徴と,体全体を理解するのに必要な全体情報の両方が必要. 各スケールでこれらの情報を捉えるため,encorder-decorderスタイルのアーキテクチャにおいてskip connectionを使用。 stacked hourglassと同様に,各ステージで教師データを与える.

f:id:yusuke_ujitoko:20170730092830p:plain

P: Pose Discriminator

PやCは真のheatmapとGの生成したheatmapを区別するように学習する.
ただそれだけでなく,PはGに対して,人体の関節構造に関する事前情報を与える役割を持つ.

Pの誤差関数は以下で表される.
f:id:yusuke_ujitoko:20170730135244p:plain:w500
この中に{p_{fake}}という項がある。
Gによって生成されたpose heatmapによって関節部位を推定し, その推定した関節位置と真の位置のl2誤差の大きさにより{p_{fake}}は決まる.

f:id:yusuke_ujitoko:20170730134012p:plain:w200

  • その他
    • 誤差関数の設計は従来のGANと同じ.
    • 従来のGANと異なり,encoder-decoderスタイル.

f:id:yusuke_ujitoko:20170730134201p:plain

C: Confidence Discriminator

Cも真のheatmapとGの生成したheatmapを区別するように学習するが, それだけでなくCは,high-confidence predictionをlow-confidence predictionから区別する.

Cの誤差関数は以下で表される. f:id:yusuke_ujitoko:20170730135637p:plain:w500

{c_{fake}}は,Gの生成したheatmapと真のheatmapの類似度で計算される.
f:id:yusuke_ujitoko:20170730133458p:plain:w250
例えばGがlow-confidenceなheatmapを出力したら,{c_{fake}} が 0に近くなる.
GはCを欺くよう学習するので,結果的にGはhigh-confidenceなheatmapを出力するようになる.

学習アルゴリズム

f:id:yusuke_ujitoko:20170730134246p:plain:w500

OpenPose論文メモ

概要

  • CNNの組合せで画像内の人物姿勢を検知を達成
  • NP-hard問題をrelaxationを設けて解く
  • top-downアプローチ(人を検知→検知した人それぞれの姿勢検知)ではなく,
    bottom-upアプローチ.実時間処理可能.

  • COCO 2016 keypoints challengeとMPII Multi Person benchmarkで好成績を出した

Intro

  • 画像に映る人物の姿勢推定の難しさ
    1. 人の数,スケール,位置が不定であること
    2. 人同士の接触,オクルージョンにより複数人の干渉
    3. 人数によって計算量が大きくなること

  • 従来手法は人の検知を行い,その後で個人の姿勢推定を行う
    このtop-downなアプローチには以下の欠点がある
    • 画像内の人の検知に失敗すると,姿勢推定はできない.
    • 人数に比例して計算が重くなる

提案手法

提案手法の処理のパイプラインは下の画像のようになっている f:id:yusuke_ujitoko:20170625214935p:plain

(a)入力画像を使って, 部位の位置エンコードする(b) Part Confidence Mapsと,
部位間の関連度エンコードする(c) Part Affinity Fieldsを作る.
そして(c)をもとに(d) Bipartite Matchingし,結果(e)を出力する.

(a)から(b)Part Confidence Mapsと(c)Part Affinity Fieldsを計算するアーキテクチャは, 下の画像のようになっている.

f:id:yusuke_ujitoko:20170625221707p:plain

(a)入力画像から,VGG-19を使ってfeature map F を生成し, そのFを2つのネットワークに入れて,(b)Part Confidence Mapsと(c)Part Affinity Fieldsを出力する. この単位をstageとする.

stageを繰り返していく. なおstageごとにlossを最小化するように学習する. ただし教師データはどのstageでも共通となっている. なぜstageごとに教師データを使って最適化するかというと, 勾配消失問題を避けるため.

(c) Part Affinity Fieldsの計算

(b) Part Confidence Mapsの他に,(c) Part Affinity Fieldsが必要な理由は, 何人いるかも分からない中でどのように部位を人に割り付ければよいかが,(b)だけだと不定だから.

部位間の関連度を知ることで,一人の人間の部位だとわかるはず. そこでpart affinityを使う. part affinityは二次元ベクトルで,ある部位から別の部位への方向を示すもの. 各部位は,接続している2つの部位へのaffinity fieldを持つ.

複数人のPart Affinity Fieldsを解く

これはNP hardとなるため,2つrelaxationを置いている. 1つ目は部位間のエッジが最小となるような条件を選ぶこと. 2つ目は部位間全体の問題を解くのではなく,隣接する部位間のみの問題に切り分けること.

おまけ

chaiyya chaiyyaに対してopenposeを試してみた。
若き日のシャー・ルク・カーンが骨抜きになっている(違う)

www.youtube.com

Stacked Hourglassによる姿勢推定メモ

概要

  • stacked hourglassな形状のネットワークを使って姿勢推定する
    • 画像の全ての大きさの情報を捉えて利用できる

f:id:yusuke_ujitoko:20170721234149p:plain

  • hourglassを連結、hourglassごとに教師データを与える
  • FLICとMPIIでsota

関連研究

  • 画像から関節位置(x,y)を直接推定(DeepPose(Toshev et al.))
  • 画像からHeatmapを出力(Tompson et al.)
    • 異なる解像度のネットワークを並列処理し、様々なスケールの特徴量を抽出
  • Iterative Error Feedback(Carreira et al.)
    • 繰り返し予測の精度を高めていく
  • Multi-stage pose machines(Wei et al.)

Hourglass Design

hourglassのネットワークにした理由は、画像中の様々なスケールの情報を抽出したかったから。 局所的な情報は、顔や手などの特徴を特定するのに役立つ一方で、最終的な姿勢の推定は体全体の情報が必要となる。 hourglassネットワークであれば、様々なスケールの情報を抽出できる。

様々なスケールの情報を抽出する他のアプローチとして、 並列に異なるスケールの特徴抽出ネットワークを配置し最後に繋げる方法(Tompson et al.)があるが、 本研究では単一のパイプラインで行っている。 単一のパイプラインで様々なスケールの特徴を保持するために、skip layerを備えている。

f:id:yusuke_ujitoko:20170721234231p:plain

hourglassのbottom-up段階(左側)ではConv層を重ねていき、各スケールでの特徴量を抽出する。 そして、一番解像度が低い段階まで来たら、top-down段階に入り、up-samplingしつつ、各スケールの特徴量を結合していく。 この構造はUNetに近い? 出力層ではheatmapを出力する。

8個のhourglassが連結。 重みは共有されない。 同じ教師データが各hourglassの出力の誤差計算に使われる。

結果

f:id:yusuke_ujitoko:20170722000303p:plain

f:id:yusuke_ujitoko:20170722000333p:plain

Convolutional Pose Machinesメモ

姿勢認識の研究の流れを追うため、とりあえずガンガン読んでいく。
あとで綺麗にまとめたい。

関連研究

  • pictorial structures
    • 部位間の空間的関係を木構造のグラフィカルモデルで記述
    • 四肢が良く見える画像に対しては上手く行くものの、木構造で捉えきれない関係に対しては脆弱

  • Hierarchical models
    • スケールの異なる部位間の関係を階層的な木構造で記述
    • 前提の思想として、大きな部位は簡単に検知可能であり、その下の見つけにくい小さな部位を検知するのに役立つという考えに基づく

  • sequential prediction
    • implicitな空間モデルを学習

  • convolutional architectures
    • DeepPose
    • 画像からconfidence mapを回帰
    • 本研究では、空間的依存性をimplicitに学習させるには、上の研究と同じくCNNをcascade的に繋げて精度を高める際に、confidence mapを大きいreceptive fieldを持つCNNに入力させていく方式がよいことを示す

Pose Machines

f:id:yusuke_ujitoko:20170721001108p:plain

Pose Machinesは幾つかStageを経て部位の特定精度を高めていく。
Stage1とそれ以降のStageで少しだけ処理が異なる。
このPose Machinesに関しては以前の論文の方を見たほうが良さそう。

Stage1

Stage1では、入力画像{x_{z}}をもとに「各部位{p}がどの位置にあるかの度合い」を示すconfidence map {b_{1}^{p}}を出力する。 {} $$ g_{1}(x_{z}) \rightarrow {b_{1}^{p}(Y_{p} = z)}_{p \in {0 \cdots P}} $$ 各パーツ、各座標ごとに{b_{t}^{p}}の値が一意に定まるイメージ。
このStage1で、画像中の局所的な特徴から部位を推定する。 ただしStage1だけの結果では弱いのでStage2以降で部位ごとのconfidence mapを統合してconfidence mapの精度を高めていく。

Stage2以降

Stage2以降では、

  • 局所的な画像特徴量{\boldsymbol{x}_{z}^{\prime}}
  • confidence map {\boldsymbol{b}_{t-1}}

をもとに、confidence map{\boldsymbol{b}_{t}}を出力する。 {} $$ g_{t}(\boldsymbol{x}^{\prime}_{z}, \psi_{t}(z, \boldsymbol{b}_{t-1})) \rightarrow {b_{t}^{p}(Y_{p} = z)}_{p \in {0 \cdots P+1}} $$

その際、前のStageで出力されたconfidence map{\boldsymbol{b_{t-1}}}から、 中間生成物としてcontext featuresを作る。 {\psi_{t}(z, \boldsymbol{b}_{t-1})}{\boldsymbol{b_{t-1}}}からcontext featuresへの写像。 この{\psi_{t}}の役割は、confidence mapにおける異なる部位の同じ座標{z}の情報をエンコードすること。

実はこのPose Machinesの考え方は以前の論文に既に載っている。
本論文の新規な部分としては、{g_{t}}{\psi_{t}(z, \boldsymbol{b}_{t-1}))}をCNNに置き換えたこと。
(以前はランダムフォレストだった)

f:id:yusuke_ujitoko:20170721004918p:plain

勾配消失問題への対処

層が深くなると勾配消失問題が起きる。
その対応として、各Stageにおいて出力の誤差を計上し、その和を最小化するように学習する。

Stage間での誤差を最小化する提案手法の場合と、 (そうでない)最後のStageの誤差を最小化する場合で勾配のばらつきを調べたところ、 提案手法を使えば前の方の層でも勾配が消失していないことがわかった。

f:id:yusuke_ujitoko:20170721010106p:plain

実験

  • 3つのデータセットを使った
    • MPII Human Pose Dataset
    • LSP(Leeds Sports Pose) Dataset
    • FLIC

f:id:yusuke_ujitoko:20170721010839p:plain

f:id:yusuke_ujitoko:20170721010845p:plain

その他

この論文の言うbeliefの意味が良くわからなかった。

DeepPoseHeatmap regressorの方法だと、最初のステージでcropされた領域に部位が存在しない場合、絶対に成功しないが、本研究の手法の場合、cropしないのでこの問題は起きない。