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