36
Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields 東京⼤学⼤学院⼯学系研究科 技術経営戦略学専攻 松尾研究室 ⼤野峻典 @ono_shunsuke 夏のトップカンファレンス論⽂読み会

夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

Embed Size (px)

Citation preview

Page 1: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

東京⼤学⼤学院⼯学系研究科技術経営戦略学専攻

松尾研究室⼤野峻典

@ono_shunsuke

夏のトップカンファレンス論⽂読み会

Page 2: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

⾃⼰紹介

⼤野峻典

• 東京⼤学松尾研究室, FiNC– 画像認識(Object Detection), ⾃然⾔語処理(NLU系)– deeplearning.jp 輪読会, 実装勉強会 @東⼤

• バックグラウンド– もと:Web系エンジニア– いま: 画像認識, ⾃然⾔語処理 (2017~)

• Twitter: @ono_shunsuke

2

姿勢分析 チャットボット

Page 3: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

書誌情報

3

• 論⽂名:“Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields”– https://arxiv.org/abs/1611.08050

• 著者:Zhe Cao, Tomas Simon, Shih-En Wei, Yaser Sheikh– The Robotics Institute, Carnegie Mellon University

• 公開⽇:24 Nov 2016

• CVPR 2017 Oral

• Slide

• Video

• ※ 特に断りが無い場合は, 上記論⽂, Slide, Videoから引⽤

Page 4: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

アジェンダ

4

• Pose Estimationタスクとは

• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張

– 従来⼿法の問題点

– 提案⼿法

– 定式化

– 実験結果

• おわりに

Page 5: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

アジェンダ

5

• Pose Estimationタスクとは

• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張

– 従来⼿法の問題点

– 提案⼿法

– 定式化

– 実験結果

• おわりに

Page 6: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

Pose Estimationタスクとは

• 複数⼈写っている2D画像中の, 各⼈の各⾝体部位の位置を検知する.– こんな感じ

• 難しさ– ⼈数、スケールが不定– ⼈同⼠のインタラクション– ⼈数に⽐例して計算量増加

6

Page 7: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

“Realtime Multi-Person 2D Pose Estimationusing Part Affinity Fields"

「⾝体部位の関係性(part affinity)を活かした, リアルタイムの2D姿勢推定」

7

Page 8: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

アジェンダ

8

• Pose Estimationタスクとは

• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張

– 従来⼿法の問題点

– 提案⼿法

– 定式化

– 実験結果

• おわりに

Page 9: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

論⽂の主張

• 画像中の⾝体部位の位置のみではなく, 部位間の関係性(繋がり)もエンコードしよう.

• この⼿法によって, 「画像中の⼈を検知してから各⼈に対してそれぞれpose estimationを実⾏するtop-downアプローチ」ではなく, 「⼀度に画像全体の⽂脈から複数⼈に対してpose estimationを⾏うbottom-upアプローチ」が可能になり, 推定の精度・速度を改善できる.

• + 提案⼿法で肝になっているのは, – エンコーディングを学ぶCNNユニットのステージを繰り返すこと– ⾝体部位の位置, 部位間の関係性のエンコーディングを共通で学習するアーキテクチャ

9

Page 10: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

アジェンダ

10

• Pose Estimationタスクとは

• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張

– 従来⼿法の問題点

– 提案⼿法

– 定式化

– 実験結果

• おわりに

Page 11: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

従来⼿法の問題点• 従来のTop-down アプローチ:⼈の検知を⾏い, その後に各⼈に姿勢推定

– ❌ ①⼈の検知に失敗すると, 姿勢推定できない– ❌ ②⼈数分, 姿勢推定実⾏するので, ⼈数に⽐例して計算量増加

• 従来のBottom-Up アプローチ:写真中の各部位を検知し, 繋ぎ合わせることで⼀度で, 全ての⼈の姿勢を推定– ⭕ ①ʼ 検知, 推定と別のステップを踏まないので, 上記①に対して⽐較的ロバスト– ⭕ ②ʼ 計算量抑えられうる– ❌ 既存⼿法では, 部位間の繋ぎ合わせの精度低い/繋ぎ合わせ推定の計算量が⼤きい. 画

像全体のコンテキスト情報を⼗分に利⽤できていないため.

11

⼈検知 姿勢推定 x n⼈

部位検知 部位の繋ぎ合わせ

Page 12: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

アジェンダ

12

• Pose Estimationタスクとは

• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張

– 従来⼿法の問題点

– 提案⼿法

– 定式化

– 実験結果

• おわりに

Page 13: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

提案⼿法: Part Affinity Fieldsの導⼊

• 従来のボトムアップ⼿法では, 検知した部位間の繋ぎ合わせが難しく, そこで精度落ちたり, 組み合わせ爆発による計算量増加などの問題があった.– 部位間の中間点を取るなど位置情報を追加する⼿法は, 提案されていたが, 向き情報が

無く表現⼒に限界があった.

• ⇛ 位置情報, 向き情報を含んだ表現(Part Affinity Fields)を提案– 各limb(部位の繋ぎ合わせ部分)を, 2Dベクトルでエンコードできるフィルタを学習

13

チャネルごとに各部位間の流れをエンコード(図は⼆⼈の左上腕の流れ)

Page 14: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

提案⼿法: アーキテクチャ (1/4)

• (a) ⼊⼒画像• (b) 各チャネルで各部位検知 (confidence map)

– 出⼒:各部位(ex. 右肩, 右肘, …)がありそうな度合(confidence)をpx位置ごとencode.• (c) 部位の関連度のエンコード (affinity fields)

– 出⼒:各部位間(ex. 右上腕, 右太もも, …)の流れ(2d vector)をpx位置ごとにencode.• (d) b, cを元に, 最も確からしい部位同⼠をつなぎ合わせる.

– Ex. どの右肘と, どの右肩をつなぐべきか• (e) 結果

– 各部位に関するdの出⼒を合計して, 結果.14

<⼊⼒から出⼒の流れ>

Page 15: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

提案⼿法: アーキテクチャ (2/4)

• Branch1でconfidence mapの予測, Branch2でpart affinity fieldsの予測• 同じBranch1, Branch2を持つユニットを繰り返す(Stage 1 ~ Stage 6)• 各Stageにおける⼊⼒は, 1つ前のStageにおけるBranch1, Branch2, 元の

Stage1の⼊⼒Fをconcatenateしたもの. (= 部位検知と, 繋ぎ合わせエンコードを共同で⾏っている)

• Stageごとに誤差計算.15

c特徴ベクタ

Page 16: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

提案⼿法: アーキテクチャ (3/4)

• Stageを重ねる事で精度が上がる.

– 上は, confidence map. 右⼿⾸を検知するチャネル. Stageを重ねるごとに右⼿⾸のconfidenceが上がり, そうでない箇所のconfidenceが下がることがわかる.

– 下は, part affinity field. 右上腕の流れをencodeするチャネル. Stageを重ねるごとに右上腕の確からしさが上がり, そうでない箇所が薄くなることがわかる.

16

右⼿⾸検知

右上腕検知

Page 17: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

提案⼿法: アーキテクチャ (4/4)

• 検知された部位達(part confidence map)同⼠を, 繋がりのencoding(part affinity fields)的な確からしさを最⼤化するように, マッチングする.

• 繋ぎ合わせ問題は, 網羅的にやると, NP-Hard問題なため, 以下の2つの緩和法を導⼊.– (1) 各部位にとなり合うべき部位の事前情報を与える. (ex. 右肩とつながるのは, ⾸と

右肘のみ.)– (2) 隣合う部位のみを⾒て, part affinity fields的な確からしさを最⼤化するようにマッ

チングする. (→ 実際これで精度出る(後述). Part affinity fieldsのglobal情報のencodeがうまくいっているよう.)

17

(1) (2)

Page 18: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

アジェンダ

18

• Pose Estimationタスクとは

• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張

– 従来⼿法の問題点

– 提案⼿法

– 定式化

– 実験結果

• おわりに

Page 19: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

定式化:誤差関数

• Stage tにおける誤差関数

• 全体の⽬的関数:全ステージ⾜し合わせ

19

正解値予測値

正解値予測値

各場所p pでのアノテーションが抜けているかで0,1のbinary mask各部位j

各繋がりc

Stage tにおけるPart confidence map S

Stage tにおけるPart affinity field L

Page 20: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

定式化:Part Confidence Mapの正解値

• Part Confidence Mapの正解値 S* を, 部位位置がアノテーションされた2D画像から作成.

• アノテーションされた点をピークに持つ分布で表現する.

• 1つのチャネルが全ての⼈の1つの部位を担当して予測するので, それに形式をあわせるため, 全ての⼈に関してmapを合体. Max オペレータを使⽤し, ピークを明確に保つ.

• Test時は, non-maxmum suppressionにより, 各部位の予測位置を得る.– (補⾜)Non-maximum suppression:閾値以上の割合て分布かかふっている場合、 最も

⾼いconfidence を持つ分布を残す. 20

⼈k部位j

アノテーションされた座標点 x

ピークの広がり具合を調整する項 σ

Page 21: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

定式化:Part Affinity Fieldsの正解値

• Part Confidence Mapの正解値 L* を, 部位位置がアノテーションされた2D画像から作成.

• 2部位の間, かつ, ⼀定の幅σのキョリにある点pが, 2部位間の単位ベクトルvを持つようにする. それ以外の点は全てゼロベクトルに.

• 前ページ同様, 予測される形に合わせて, 全ての⼈に関してfieldsを合体して, limbごとのfieldを作成. Averageオペレータを使⽤.

21

2部位の線分からのキョリがしきい値σ以下か2部位の線分上か

nc(p): 場所pで, k⼈の中でzeroじゃないベクトルの数. (limbが被る場合のみ平均取る)

Page 22: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

定式化:部位マッチング

• 検知された部位間のマッチングを考える.• 部位間の繋がりの確からしさを, Part Affinity Fieldsを⽤いて測る. 検出さ

れた部位同⼠を結ぶ線分上で線積分する.

• 各部位cを最⼤化するようなZc(各部位の繋ぎ合わせ⽅). 各limb typeに対して, 独⽴にE最⼤化するようなつなぎあわせを選ぶ.

22

部位間の線分上の点p(u) 部位間の単位ベクトルかけることで,部位間の⽅向に沿って値評価

Page 23: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

アジェンダ

23

• Pose Estimationタスクとは

• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張

– 従来⼿法の問題点

– 提案⼿法

– 定式化

– 実験結果

• おわりに

Page 24: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

実験結果

• 複数⼈pose estimationの2つのベンチマーク– (1) MPII human multi-person dataset (25k images, 40k ppl, 410 human

activities)– (2) the COCO 2016 keypoints challenge dataset(100k person, 1 million

keypoints)

24

Page 25: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

実験結果: MPII Multi-Person Dataset

• 精度(mAP): 今回の⼿法で従来のSotAを8.5%上回る– Scale search無くとも既存⼿法より良い. MAPIIデータ全体では, 13%良くなった. さ

らにscale searchで良くなる.– → 既存⼿法に⽐べてPAFsが部位間の関係性を表現するのに有効なことがわかる.

• 速度(inference time): 6桁早くなった.• ※ 閾値はPCKhで, mean Average Precision(mAP)を指標に⽐較.

25

Page 26: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

実験結果: MPII Multi-Person Dataset

• PAF利⽤は, 中間点表⽰(-,-)利⽤した結果より優れてる.• マスクによりTrue Positiveのロス防ぐと, 2.3%精度上がる.• 部位DetectionのGround Truth(GT)を⽤いて, PAFsのみ予測⾏うと, mAP

88.3%.• 部位ConnectionのGTを⽤いて, Detectだけ⾏うケースでは, mAP 81.6%.

– → PAFによるconnection判定と, ほぼ精度が変わらない. (79.4% vs 81.6%) . PAFが, ⾮常に⾼い精度で検出できること⽰している.

26

Page 27: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

実験結果: COCO Keypoints Challenge

• → ⽐較的⼩さいスケールの⼈(APM)のみ, top-downアプローチの⼿法に精度負けてる.– 理由: 本⼿法では, 他よりはるかに⼤きいスケールで, 画像内の全ての⼈々を⼀⻫に扱わ

ないといけない. ⇔ top-downアプローチでは, ⼈を検知してその⼈ごとに切り取って拡⼤して扱えるので, ⼩さいスケールによる影響が⽐較的⼩さくなるのでは.

27

Page 28: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

実験結果: COCO Keypoints Challenge

• ① GT bounding Box + Convolutional Pose Machine(CPM)• ② GTの代わりにSSD利⽤すると↑より, パフォーマンスは10%低下する.• ③ 本⼿法のボトムアップ⽅式では, 58.4%のAPを達成. • ④ 本⼿法で最スケーリングされた各領域に, ⼀⼈⼀⼈にCPMを適⽤するこ

とで, 2.6%のAP改善される. – → より⼤きなスケールでのsearchが, ボトムアップ⼿法のパフォーマンスを向上させる

ことが期待できる.

28

①②③④

Page 29: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

実験結果: ⼈数による速度変化

• Top-downアプローチと違い, Bottom-upアプローチでは, Runtimeが⼈の⼈数に⽐例してほとんど変わらないことわかる.

29

Page 30: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

アジェンダ

30

• Pose Estimationタスクとは

• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張

– 従来⼿法の問題点

– 提案⼿法

– 定式化

– 実験結果

• おわりに

Page 31: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

おわりに

• 画像内の⼈物理解において, 複数⼈物の2次元姿勢⼤事.

• 今回の⼯夫– 1. 部位の位置と, ⽅向の両⽅を符号化する表現.– 2. 部位検出と関係性を共同で学ぶアーキテクチャ.– 3. greedyアルゴリズムにより⼈の数が増えてもマッチング計算量抑え, 精度⼗分.

• 代表的な失敗事例

31

Page 32: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

実装

• C++:https://github.com/CMU-Perceptual-Computing-Lab/openpose

• Caffe:https://github.com/ZheC/Realtime_Multi-Person_Pose_Estimation

• PyTorch:https://github.com/tensorboy/pytorch_Realtime_Multi-Person_Pose_Estimation (train未実装)

32

Page 33: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

実験結果: MPII Multi-Person Dataset

• 異なるスケルトン構造の⽐較結果

– 最⼩限のedgeで貪欲アルゴリズムによってとかれたものが精度, 速度ともに最⾼.– (6d)のグラフが精度最も良くなっている.トレーニングの収束がはるかに容易になるた

めと考えられる.(13 edges vs 91 edges)

33

Page 34: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

Results > Results on the MPII Multi-Person Dataset

• 補⾜– mean Average Precision(mAP)

• Precision:システムが正例と判定したもののうち、実際に正例だったものの割合. (正確さ)– 部位判定したもののうち、正しかったものの割合

• Recall:データセットの正例全体のうち、システムが正例と判定したものの割合(カバー率)– データセットでアノテートされている部位のうち、正しく検知されたものの割合

• Average Precision(AP: 平均適合率):PrecisionをRecallについて平均とったもの.

– 以下の式で近似しているもの多い. (I: 正例なら1, 負例なら0の関数)

34引⽤:http://sucrose.hatenablog.com/entry/2017/02/26/224559

Page 35: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

Results > Results on the MPII Multi-Person Dataset

• 補⾜– mean Average Precision(mAP):今回の場合

• mAP:全ての⼈の部位に対する平均のprecision。– まず、複数体写っている画像に対してpose estimation実⾏。– 最も⾼いPCKh閾値にもとづいて、estimateされたポイントをground truth(GT)に割り合ててく。– GTに割り当てられなかった予測ポイントは、false positiveとして扱う。– 各部位ごとにAverage Precision(AP)を計算。– 全体の部位に関してAPの平均を取って、mAPになる。

– PCKh threshhold:• PCP:あるパーツの両端の部位の検出位置が、そのパーツの⻑さの半分よりも正解に近ければ

検出成功とする.• PCK:⼈物のbounding boxサイズの逆数を閾値として定義• PCKh:Headセグメントの50%の⻑さを閾値として定義

35

Page 36: 夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

補⾜: IoU

• 引⽤: http://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/

36