Upload
shunsuke-ono
View
1.348
Download
1
Embed Size (px)
Citation preview
Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
東京⼤学⼤学院⼯学系研究科技術経営戦略学専攻
松尾研究室⼤野峻典
@ono_shunsuke
夏のトップカンファレンス論⽂読み会
⾃⼰紹介
⼤野峻典
• 東京⼤学松尾研究室, FiNC– 画像認識(Object Detection), ⾃然⾔語処理(NLU系)– deeplearning.jp 輪読会, 実装勉強会 @東⼤
• バックグラウンド– もと:Web系エンジニア– いま: 画像認識, ⾃然⾔語処理 (2017~)
• Twitter: @ono_shunsuke
2
姿勢分析 チャットボット
書誌情報
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から引⽤
アジェンダ
4
• Pose Estimationタスクとは
• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張
– 従来⼿法の問題点
– 提案⼿法
– 定式化
– 実験結果
• おわりに
アジェンダ
5
• Pose Estimationタスクとは
• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張
– 従来⼿法の問題点
– 提案⼿法
– 定式化
– 実験結果
• おわりに
Pose Estimationタスクとは
• 複数⼈写っている2D画像中の, 各⼈の各⾝体部位の位置を検知する.– こんな感じ
• 難しさ– ⼈数、スケールが不定– ⼈同⼠のインタラクション– ⼈数に⽐例して計算量増加
6
“Realtime Multi-Person 2D Pose Estimationusing Part Affinity Fields"
「⾝体部位の関係性(part affinity)を活かした, リアルタイムの2D姿勢推定」
7
アジェンダ
8
• Pose Estimationタスクとは
• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張
– 従来⼿法の問題点
– 提案⼿法
– 定式化
– 実験結果
• おわりに
論⽂の主張
• 画像中の⾝体部位の位置のみではなく, 部位間の関係性(繋がり)もエンコードしよう.
• この⼿法によって, 「画像中の⼈を検知してから各⼈に対してそれぞれpose estimationを実⾏するtop-downアプローチ」ではなく, 「⼀度に画像全体の⽂脈から複数⼈に対してpose estimationを⾏うbottom-upアプローチ」が可能になり, 推定の精度・速度を改善できる.
• + 提案⼿法で肝になっているのは, – エンコーディングを学ぶCNNユニットのステージを繰り返すこと– ⾝体部位の位置, 部位間の関係性のエンコーディングを共通で学習するアーキテクチャ
9
アジェンダ
10
• Pose Estimationタスクとは
• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張
– 従来⼿法の問題点
– 提案⼿法
– 定式化
– 実験結果
• おわりに
従来⼿法の問題点• 従来のTop-down アプローチ:⼈の検知を⾏い, その後に各⼈に姿勢推定
– ❌ ①⼈の検知に失敗すると, 姿勢推定できない– ❌ ②⼈数分, 姿勢推定実⾏するので, ⼈数に⽐例して計算量増加
• 従来のBottom-Up アプローチ:写真中の各部位を検知し, 繋ぎ合わせることで⼀度で, 全ての⼈の姿勢を推定– ⭕ ①ʼ 検知, 推定と別のステップを踏まないので, 上記①に対して⽐較的ロバスト– ⭕ ②ʼ 計算量抑えられうる– ❌ 既存⼿法では, 部位間の繋ぎ合わせの精度低い/繋ぎ合わせ推定の計算量が⼤きい. 画
像全体のコンテキスト情報を⼗分に利⽤できていないため.
11
⼈検知 姿勢推定 x n⼈
部位検知 部位の繋ぎ合わせ
アジェンダ
12
• Pose Estimationタスクとは
• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張
– 従来⼿法の問題点
– 提案⼿法
– 定式化
– 実験結果
• おわりに
提案⼿法: Part Affinity Fieldsの導⼊
• 従来のボトムアップ⼿法では, 検知した部位間の繋ぎ合わせが難しく, そこで精度落ちたり, 組み合わせ爆発による計算量増加などの問題があった.– 部位間の中間点を取るなど位置情報を追加する⼿法は, 提案されていたが, 向き情報が
無く表現⼒に限界があった.
• ⇛ 位置情報, 向き情報を含んだ表現(Part Affinity Fields)を提案– 各limb(部位の繋ぎ合わせ部分)を, 2Dベクトルでエンコードできるフィルタを学習
13
チャネルごとに各部位間の流れをエンコード(図は⼆⼈の左上腕の流れ)
提案⼿法: アーキテクチャ (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
<⼊⼒から出⼒の流れ>
提案⼿法: アーキテクチャ (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特徴ベクタ
提案⼿法: アーキテクチャ (3/4)
• Stageを重ねる事で精度が上がる.
– 上は, confidence map. 右⼿⾸を検知するチャネル. Stageを重ねるごとに右⼿⾸のconfidenceが上がり, そうでない箇所のconfidenceが下がることがわかる.
– 下は, part affinity field. 右上腕の流れをencodeするチャネル. Stageを重ねるごとに右上腕の確からしさが上がり, そうでない箇所が薄くなることがわかる.
16
右⼿⾸検知
右上腕検知
提案⼿法: アーキテクチャ (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)
アジェンダ
18
• Pose Estimationタスクとは
• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張
– 従来⼿法の問題点
– 提案⼿法
– 定式化
– 実験結果
• おわりに
定式化:誤差関数
• Stage tにおける誤差関数
• 全体の⽬的関数:全ステージ⾜し合わせ
19
正解値予測値
正解値予測値
各場所p pでのアノテーションが抜けているかで0,1のbinary mask各部位j
各繋がりc
Stage tにおけるPart confidence map S
Stage tにおけるPart affinity field L
定式化:Part Confidence Mapの正解値
• Part Confidence Mapの正解値 S* を, 部位位置がアノテーションされた2D画像から作成.
• アノテーションされた点をピークに持つ分布で表現する.
• 1つのチャネルが全ての⼈の1つの部位を担当して予測するので, それに形式をあわせるため, 全ての⼈に関してmapを合体. Max オペレータを使⽤し, ピークを明確に保つ.
• Test時は, non-maxmum suppressionにより, 各部位の予測位置を得る.– (補⾜)Non-maximum suppression:閾値以上の割合て分布かかふっている場合、 最も
⾼いconfidence を持つ分布を残す. 20
⼈k部位j
アノテーションされた座標点 x
ピークの広がり具合を調整する項 σ
定式化: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が被る場合のみ平均取る)
定式化:部位マッチング
• 検知された部位間のマッチングを考える.• 部位間の繋がりの確からしさを, Part Affinity Fieldsを⽤いて測る. 検出さ
れた部位同⼠を結ぶ線分上で線積分する.
• 各部位cを最⼤化するようなZc(各部位の繋ぎ合わせ⽅). 各limb typeに対して, 独⽴にE最⼤化するようなつなぎあわせを選ぶ.
22
部位間の線分上の点p(u) 部位間の単位ベクトルかけることで,部位間の⽅向に沿って値評価
アジェンダ
23
• Pose Estimationタスクとは
• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張
– 従来⼿法の問題点
– 提案⼿法
– 定式化
– 実験結果
• おわりに
実験結果
• 複数⼈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
実験結果: MPII Multi-Person Dataset
• 精度(mAP): 今回の⼿法で従来のSotAを8.5%上回る– Scale search無くとも既存⼿法より良い. MAPIIデータ全体では, 13%良くなった. さ
らにscale searchで良くなる.– → 既存⼿法に⽐べてPAFsが部位間の関係性を表現するのに有効なことがわかる.
• 速度(inference time): 6桁早くなった.• ※ 閾値はPCKhで, mean Average Precision(mAP)を指標に⽐較.
25
実験結果: 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
実験結果: COCO Keypoints Challenge
• → ⽐較的⼩さいスケールの⼈(APM)のみ, top-downアプローチの⼿法に精度負けてる.– 理由: 本⼿法では, 他よりはるかに⼤きいスケールで, 画像内の全ての⼈々を⼀⻫に扱わ
ないといけない. ⇔ top-downアプローチでは, ⼈を検知してその⼈ごとに切り取って拡⼤して扱えるので, ⼩さいスケールによる影響が⽐較的⼩さくなるのでは.
27
実験結果: COCO Keypoints Challenge
• ① GT bounding Box + Convolutional Pose Machine(CPM)• ② GTの代わりにSSD利⽤すると↑より, パフォーマンスは10%低下する.• ③ 本⼿法のボトムアップ⽅式では, 58.4%のAPを達成. • ④ 本⼿法で最スケーリングされた各領域に, ⼀⼈⼀⼈にCPMを適⽤するこ
とで, 2.6%のAP改善される. – → より⼤きなスケールでのsearchが, ボトムアップ⼿法のパフォーマンスを向上させる
ことが期待できる.
28
①②③④
実験結果: ⼈数による速度変化
• Top-downアプローチと違い, Bottom-upアプローチでは, Runtimeが⼈の⼈数に⽐例してほとんど変わらないことわかる.
29
アジェンダ
30
• Pose Estimationタスクとは
• ⾝体部位の関係性(part affinity)を活かした, 姿勢推定(pose estimation)– 論⽂の主張
– 従来⼿法の問題点
– 提案⼿法
– 定式化
– 実験結果
• おわりに
おわりに
• 画像内の⼈物理解において, 複数⼈物の2次元姿勢⼤事.
• 今回の⼯夫– 1. 部位の位置と, ⽅向の両⽅を符号化する表現.– 2. 部位検出と関係性を共同で学ぶアーキテクチャ.– 3. greedyアルゴリズムにより⼈の数が増えてもマッチング計算量抑え, 精度⼗分.
• 代表的な失敗事例
31
実装
• 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
実験結果: MPII Multi-Person Dataset
• 異なるスケルトン構造の⽐較結果
– 最⼩限のedgeで貪欲アルゴリズムによってとかれたものが精度, 速度ともに最⾼.– (6d)のグラフが精度最も良くなっている.トレーニングの収束がはるかに容易になるた
めと考えられる.(13 edges vs 91 edges)
33
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
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
補⾜: IoU
• 引⽤: http://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/
36