DeepPose: Human Pose Estimation
via Deep Neural Networks
発表:齋藤 俊太**
**慶應義塾大学大学院理工学研究科 後期博士課程
Alexander Toshev*, Christian Szegedy*
* Google
DeepCNNで姿勢推定
• ILSVRC 2014でトップだったGoogLeNetチーム(の一部の人)が書いたDeepCNNによる姿勢推定の論文
• LSP (Leeds Sports Pose) Dataset, FLIC (Frames Labeled In Cinema) Datasetを用いて学習・テスト
• ILSVRC 2012でトップだったAlexNet(proposed by Alex Krizhevsky, Ilya Sutskever, Geoffrey Hinton, 全員現
Googler)のアーキテクチャをそのまま利用
• 投稿時点(arXiv初出 17 Dec 2013)ではstate-of-the-art
• DeepCNNを使って回帰問題として姿勢推定を解いた最初の論文で,以降のベンチマーク的手法
• その後グラフィカルモデルと合わせてこれを改善した論文がいくつか発表されている
DeepPose: Human Pose Estimation via Deep Neural Networks
図:Toshev, A. et al., “DeepPose: Human Pose Estimation via Deep Neural Networks” より
Introduction
• 人間は隠れている関節の位置も他の部位のようすやその対象人物の動きなどから推測することができる
• つまり「全体的に見て推測する(holistic reasoning)」ことが重要
• Deep Neural Network (DNN) ならこの辺をうまくやってくれそう
• パーツごとに検出して,あとでパーツ間の関係を考慮する手法は大量に提案されてきたが,あり得るパーツ間
の相互関係のうちの小さな部分集合を考慮に入れることしかできていない
• DNNを用いると特徴量を設計しなくてよいしパーツ検出器もデザインしなくてよい上に関節間の相互関係な
どのモデルさえ用意しなくてよい
• DeepPoseでは複数のDNNを直列につなげる
• まずおおまかに各関節の初期位置を推定するDNNを使い,推定された各関節位置のまわりの画像を元画像か
ら取ってきなおして,その関節まわりの高解像度なパッチを次のDNNに入力する
図:Toshev, A. et al., “DeepPose: Human Pose Estimation via Deep Neural Networks” より
図:Ramanan, D. “Learning to parse images of articulated bodies” より
Related Work
• 関節構造のある物体は一般的に構成パーツのグラフとして表される
• Pictorial Structureという手法ではパーツ間の位置関係の変化に対するコストと各パーツの見えに対するコスト
の和を最小化するように事前に定義しておいたパーツのグラフ(木構造等)をフィッティングする
• このアプローチを改善していくためにはパーツ検出器を強化するかより複雑な関節間の関係を表現できるよ
うにするか,という2つの道しかない
• パーツ検出器をリッチにしたもの,Latent SVMとPictorial Structureを組合せてより複雑な関係を表現できる
ようにしたものなどが提案された
図:Huttenlocher, D. “Object Recognition Using Pictorial Structures” スライドより
人体を「パーツが連結されたもの」として考える手法
図:Yang, Y. et al. "Articulated Human Detection with Flexible Mixtures of Parts” より
Related Work
• 色々な姿勢の人を色々な視点から撮ったときの画像(exampler)を用意し
て関節位置のラベルをつけておく
• 新しい画像が得られたら事前に用意したexamplerのどれと近いかを調べる
• これを高速化した手法や,腕だけに注目して「腕部分の姿勢」を事前に何
パターンも用意しておき,腕あたりを切り出した入力画像に対して,各姿勢
に該当する/しないを判断する分類器をたくさん用意しておく手法など
人体姿勢を部分に分けず全体的に推定する(=Holisticな)手法
図:Mori, G. et al. “Recovering 3d Human Body Configurations Using Shape Contexts” より
図:Gkioxari, G. et al. “Articulated Pose Estimation using
Discriminative Armlet Classifiers” より
パーツベースだと終わる例
Gkioxari,G.etal.“ArticulatedPose
EstimationusingDiscriminative
ArmletClassifiers”より
Deep Learning Model for Pose Estimation
• 姿勢は「各関節の位置座標値を一列に連結したベクトル」で表す→
• よってラベル付き画像とは「画像 x と姿勢ベクトル y 」の組となる
• 普通データセット上では各関節の位置座標は画像上の絶対座標で表されているので,人物領域をくくっ
た bounding box b の中心からの相対的な位置を表すように正規化しておく↓
y = (. . . , yT
i , . . . )T
, i 2 {1, . . . , k}
N(yi; b) =
1/bw 0
0 1/bh
!
(yi bc)
• この正規化姿勢ベクトルを N(y; b) と表し,また元画像から同じ
bounding boxの領域を切り出した画像を N(x; b) と書くことにする
• 以降この人物領域 box b で正規化することを N(・) と書く
データセット中の元画像(関節位置ラベルが付随する)
bh
bw
bc
yi
正規化画像 N(x; b)
図:FLICデータセット より
Pose Estimation as DNN-based Regression
• 元画像 x を姿勢ベクトル y に回帰する関数        を学習したい (k: 関節の数)(x; ✓) 2 R2k
• 元画像 x 中の関節位置 y* を予測するというのは,正規化画像を ψ に入れて正規化姿勢ベクトルを得て,
これを元画像の座標系に変換しなおすということなので
y⇤
= N 1
( (N(x); ✓))
• ψを事前に決めておいたサイズ(220 x 220)の3チャンネル入力画像 (=N(x)) を入力にとり,2k次元の連
続値ベクトル y* を出力するDeep Convolutional Neural Networkで近似する
• DeepCNNのアーキテクチャとしてはAlexNetをそのまま使う(ただし最終層は1000 unitsではなく2k
unitsにする)
➡ AlexNetは,C(55 x 55 x 96) - LRN - P - C(27 x 27 x 256) - LRN - P - C(13 x 13 x 384) - C(13 x 13 x
384) - C(13 x 13 x 256) - P - F(4096) - F(4096) - F(2k) からなる13層のアーキテクチャ.ただし学習
可能パラメータを持っているのはC(convolutional)層とF(fully-connected)層だけ(パラメータ数は約
4000万)なので「7層NN」
➡ 活性化関数には全てReLUを使用
➡ C層のフィルタサイズは下から順に

11x11, 5x5, 3x3, 3x3, 3x3
• It’s truly holistic!!
• 姿勢推定用のモデルを設計しなくてよい
図:Toshev, A. et al., “DeepPose: Human Pose Estimation via Deep Neural Networks” より
Training
• 分類じゃないので AlexNet for ImageNet classification の場合とはロスが異なってくる
• まずデータセット内のデータを全部,(正規化画像 N(x), 正規化姿勢ベクトル N(y)) に変換しておく
DN = {(N(x), N(y)|(x, y) 2 D}
• ロス関数を予測ベクトル ψ(x;θ) と正解ベクトル N(y) の間のユークリッド距離で定義する
• k個の関節ごとのL2距離の合計を,全データに渡って合計した値を最小にするDCNNのパラメータθを求
める
arg min
✓
X
(x,y)2DN
kX
i=1
kyi i(x; ✓)k2
2
• θをmini-batched Stochastic Gradient Descentで最適化する
• (regressionの場合learning rateは小さくしたほうが良い)
• Data augmentation: ランダムcrop,左右反転 全F層でDropout ratioは0.6(AlexNetは0.5)
solverの設定
N(y)
N(x)
(x; ✓)
DCNNの出力
L2ロス(ユークリッ
ド距離)を使う
220
220
N(yi)
bh
bw
bc
yi
Cascade of Pose Regressors
• DCNNの入力が220 x 220サイズに固定されているため,DCNNは粗い画像しか見れない
• 各関節の正確な位置を推定するために,同じアーキテクチャのDCNN全体を複数,直列に接続する
• 同じパラメータを持つ同じDCNNではなく,違うパラメータを学習する別なものをステージごとに用意する
• 第2ステージ以降の学習では一つ下のステージの予測結果をシミュレートして作ったデータを使ってData
augmentationを行う
• 一つ下のステージの予測結果と正解のズレ の平均と分散を計算し,これらをパラメータとして持
つ正規分布を使って生成したノイズを正解に付加したものを擬似予測結果とすることができる
(y
(s 1)
i yi)
cascading
DCNN ステージ s:
(N(x; bs
); ✓s)(N(x; bs
); ✓s)
x
逆変換:
N 1
( (N(x; bs
); ✓s); bs
)N 1
( (N(x; bs
); ✓s); bs
)
元画像中の推定位置: ys+1
ys+1
上の関節推定値
: i-th joint
人物検出結果領域など
yy学習
N(x; bs=0
)
bs=0
220 x 220
N(x; bs
)
bs+1
i
N(x; bs+1
i )
ys+1
i
bs+1
ibs+1
i の中心
正解位置 yiyi
s 2s = 1 s 2
s s + 1
Cascade of Pose Regressors
• これをもとに次のbounding boxも計算される→ bs+1
i = (ys
i , diam(ys
), diam(ys
))
• ステージ2以降は「前のステージの予測結果をどのくらい動かせばいいか」を学習する
• よって次の元画像中の推定位置は,前の予測値に現在のステージの予測結果を足して得られる
ys+1
i = ys
i + N 1
( i(N(x; bs
); ✓s); bs
) s 2
• diamは姿勢ベクトルのうちの左肩関節座標と右腰関節座標の距離で定義される体幹部の大きさ
• つまり体の大きさのσ倍の量によって関節まわりのbounding boxの大きさが決まる
s 2
cascading
DCNN ステージ s:
(N(x; bs
); ✓s)(N(x; bs
); ✓s)
x
逆変換:
N 1
( (N(x; bs
); ✓s); bs
)N 1
( (N(x; bs
); ✓s); bs
)
元画像中の推定位置: ys+1
ys+1
上の関節推定値
: i-th joint
人物検出結果領域など
yy学習
N(x; bs=0
)
bs=0
220 x 220
N(x; bs
)
bs+1
i
N(x; bs+1
i )
ys+1
i
bs+1
ibs+1
i の中心
正解位置 yiyi
s 2s = 1 s 2
s s + 1
• 検証実験のためのデータセットとしては以下の2つを用いる
• Frames Labeled In Cinema (FLIC)データセット
➡ 4000枚の学習画像,1000枚のテスト画像を含む
➡ 上半身の10関節のラベルが付いている
• Leeds Sports Dataset (LSP)データセット
➡ 11000枚の学習画像,1000枚のテスト画像を含む
➡ 全身の14関節のラベルが付いている
• どちらともperson-centricなラベルを持つ
➡ 画像中の人物の視点での左右を反映
➡ 例えば画像の中での位置は左側にある肘関節も,人物
がこちら側を向いていたらそれは右肘としてラベル付
けされる
Empirical Evaluation - Dataset
FLIC dataset
LSP dataset
observer-centricなラベ
ルでは画像中で左の方に
ある方を「左肩」とする
ため対象人物がこちらを
向いていようと向こうを
向いていようと「肩らし
い」ものを2つ見つけれ
ばラベルは一意に決まる
ので姿勢のバリエーショ
ンが減る
Empirical Evaluation - Metrics
➡ パーツの検出率を表す
➡ あるパーツの両端の関節の検出位置が,そのパーツ
の長さ(両端の関節の正解位置間の距離)の半分よ
りも正解に近ければ検出成功とする(PCP at 0.5)
➡ しかし見えの上で小さな大きさになっているパーツ
は極めて検出が難しいものとなる
➡ 例えば,腕を前に出しているときの上腕の長さは画
像上では数ピクセルになるかもしれない
➡ このとき肩と肘の関節はその数ピクセルのさらに半
分の誤差以下でないと検出とされないことになる
Percentage of Correct Parts (PCP)
評価指標
Percentage of Correct Parts (PCP)
Percent of Detected Joints (PDJ)
➡ PCPの問題に対処するために提案された評価指標
➡ 検出位置と正解位置の誤差がdiam(体幹部の対角線
長さ)をβ倍した長さ以内になっているときはその関
節を検出成功したとする
➡ PDJでは見え方上のパーツの大きさによるパーツご
との検出難易度のばらつきを排除して比較できる
➡ さらにβの値を変えることで許容誤差を変化させたと
きの検出率を調べることができる
Experimental Details
• FLICデータセットに対してはまず顔検出を行い,そのbounding boxを広げて全ての関節が含まれるような
ラフな初期人物検出領域を作成する
• LSPデータセットの場合はもともとすでにラフな人物領域が切りだされた画像なのでデータセットの画像を
そのまま初期bounding box( )として用いるb0
• 各データセットから50枚ずつ画像を取り出していくつかのハイパーパラメータを決定するのに使う
• ステージ2以降のbounding boxのサイズを決める係数σ( )は
➡ FLIC datasetの場合:
- 上記50枚で{0.8, 1.0, 1.2}を試した結果,σ=1.0とした
➡ LSP datasetの場合:
- {1.5, 1.7, 2.0, 2.3}を試した結果,σ=2.0とした
bs+1
i = (ys
i , diam(ys
), diam(ys
))
• カスケーディングのステージ数はFLIC, LSP双方で3が最も良かった
• ステージ2以降の学習に使う乱数でノイズがシミュレートされた入力パッチは,各学習データごとに40枚生
成したため,LSPデータセット(関節数14)においては11000枚 x 40バージョン x 2次元(x,y) x 14関節で,
1232万枚の学習データに増やしたことになる
• 学習は12core CPUだと各画像0.1sほどでできる
• 100台のコンピュータを使ってステージ1の学習を3日行ったが,最終的な精度は12時間ほどの時点で達成さ
れていた
• ステージ2以降のDCNNの学習はデータ量が40倍になるので各ステージごとに7日を要した
• それでももっと大量のデータがあればより良い結果が出るだろう
Comparisons
• 最も難しい4つのパーツ(上腕・下腕・脚)それぞれ
と,これらの平均精度で他手法と比較した
• 全てにおいてベストパフォーマンスを達成したが,特
に脚が顕著だった
• 特定のパーツに特化して作られた他手法よりも優れて
いたのは特筆に値する
PCP metric on LSP
PDJ metric on FLIC and LSP
• 全ての対抗手法を圧倒
• 許容誤差が大きいあたりで特に強い
• LSPのケースで正規化距離が0.2以下のあたりで少し対
抗手法に負けているのは恐らくDCNNが7層と深すぎ
るのとMax poolingのせい
FLICLSP
Effects of cascade-based refinement
• ステージを重ねることでどのくらい精度が上がっていくのか?
• initial stage→stage 2の間のゲインがとても大きい
• stageが上がると逆にコンテキストの情報が使えない(周囲の情報から推測する,ということが難しい)
ため精度向上にも限界がある
scaletranslation
Cross-dataset Generalization
• LSP(全身姿勢dataset)で学習したDeepPoseを別のデータセット(Image Parse dataset)でテストした
• Image Parse datasetで学習してImage Parser datasetでテストしている他手法より良かった(衝撃)
Percentage of Correct Parts (PCP) at 0.5
Conclusion
• Deep Neural Networkの応用としては初の人物姿勢推定を行った
• パーツベースではなく,holistic mannerで回帰問題にした
• 今回は物体認識で使われているAlexNetのアーキテクチャをそのまま用いた
• AlexNetが回帰でも使えることが分かった
• 姿勢推定に適したアーキテクチャがあるはずなので,探したい

DeepPose: Human Pose Estimation via Deep Neural Networks

  • 1.
    DeepPose: Human PoseEstimation via Deep Neural Networks 発表:齋藤 俊太** **慶應義塾大学大学院理工学研究科 後期博士課程 Alexander Toshev*, Christian Szegedy* * Google
  • 2.
    DeepCNNで姿勢推定 • ILSVRC 2014でトップだったGoogLeNetチーム(の一部の人)が書いたDeepCNNによる姿勢推定の論文 •LSP (Leeds Sports Pose) Dataset, FLIC (Frames Labeled In Cinema) Datasetを用いて学習・テスト • ILSVRC 2012でトップだったAlexNet(proposed by Alex Krizhevsky, Ilya Sutskever, Geoffrey Hinton, 全員現 Googler)のアーキテクチャをそのまま利用 • 投稿時点(arXiv初出 17 Dec 2013)ではstate-of-the-art • DeepCNNを使って回帰問題として姿勢推定を解いた最初の論文で,以降のベンチマーク的手法 • その後グラフィカルモデルと合わせてこれを改善した論文がいくつか発表されている DeepPose: Human Pose Estimation via Deep Neural Networks 図:Toshev, A. et al., “DeepPose: Human Pose Estimation via Deep Neural Networks” より
  • 3.
    Introduction • 人間は隠れている関節の位置も他の部位のようすやその対象人物の動きなどから推測することができる • つまり「全体的に見て推測する(holisticreasoning)」ことが重要 • Deep Neural Network (DNN) ならこの辺をうまくやってくれそう • パーツごとに検出して,あとでパーツ間の関係を考慮する手法は大量に提案されてきたが,あり得るパーツ間 の相互関係のうちの小さな部分集合を考慮に入れることしかできていない • DNNを用いると特徴量を設計しなくてよいしパーツ検出器もデザインしなくてよい上に関節間の相互関係な どのモデルさえ用意しなくてよい • DeepPoseでは複数のDNNを直列につなげる • まずおおまかに各関節の初期位置を推定するDNNを使い,推定された各関節位置のまわりの画像を元画像か ら取ってきなおして,その関節まわりの高解像度なパッチを次のDNNに入力する 図:Toshev, A. et al., “DeepPose: Human Pose Estimation via Deep Neural Networks” より
  • 4.
    図:Ramanan, D. “Learningto parse images of articulated bodies” より Related Work • 関節構造のある物体は一般的に構成パーツのグラフとして表される • Pictorial Structureという手法ではパーツ間の位置関係の変化に対するコストと各パーツの見えに対するコスト の和を最小化するように事前に定義しておいたパーツのグラフ(木構造等)をフィッティングする • このアプローチを改善していくためにはパーツ検出器を強化するかより複雑な関節間の関係を表現できるよ うにするか,という2つの道しかない • パーツ検出器をリッチにしたもの,Latent SVMとPictorial Structureを組合せてより複雑な関係を表現できる ようにしたものなどが提案された 図:Huttenlocher, D. “Object Recognition Using Pictorial Structures” スライドより 人体を「パーツが連結されたもの」として考える手法 図:Yang, Y. et al. "Articulated Human Detection with Flexible Mixtures of Parts” より
  • 5.
    Related Work • 色々な姿勢の人を色々な視点から撮ったときの画像(exampler)を用意し て関節位置のラベルをつけておく •新しい画像が得られたら事前に用意したexamplerのどれと近いかを調べる • これを高速化した手法や,腕だけに注目して「腕部分の姿勢」を事前に何 パターンも用意しておき,腕あたりを切り出した入力画像に対して,各姿勢 に該当する/しないを判断する分類器をたくさん用意しておく手法など 人体姿勢を部分に分けず全体的に推定する(=Holisticな)手法 図:Mori, G. et al. “Recovering 3d Human Body Configurations Using Shape Contexts” より 図:Gkioxari, G. et al. “Articulated Pose Estimation using Discriminative Armlet Classifiers” より パーツベースだと終わる例 Gkioxari,G.etal.“ArticulatedPose EstimationusingDiscriminative ArmletClassifiers”より
  • 6.
    Deep Learning Modelfor Pose Estimation • 姿勢は「各関節の位置座標値を一列に連結したベクトル」で表す→ • よってラベル付き画像とは「画像 x と姿勢ベクトル y 」の組となる • 普通データセット上では各関節の位置座標は画像上の絶対座標で表されているので,人物領域をくくっ た bounding box b の中心からの相対的な位置を表すように正規化しておく↓ y = (. . . , yT i , . . . )T , i 2 {1, . . . , k} N(yi; b) = 1/bw 0 0 1/bh ! (yi bc) • この正規化姿勢ベクトルを N(y; b) と表し,また元画像から同じ bounding boxの領域を切り出した画像を N(x; b) と書くことにする • 以降この人物領域 box b で正規化することを N(・) と書く データセット中の元画像(関節位置ラベルが付随する) bh bw bc yi 正規化画像 N(x; b) 図:FLICデータセット より
  • 7.
    Pose Estimation asDNN-based Regression • 元画像 x を姿勢ベクトル y に回帰する関数        を学習したい (k: 関節の数)(x; ✓) 2 R2k • 元画像 x 中の関節位置 y* を予測するというのは,正規化画像を ψ に入れて正規化姿勢ベクトルを得て, これを元画像の座標系に変換しなおすということなので y⇤ = N 1 ( (N(x); ✓)) • ψを事前に決めておいたサイズ(220 x 220)の3チャンネル入力画像 (=N(x)) を入力にとり,2k次元の連 続値ベクトル y* を出力するDeep Convolutional Neural Networkで近似する • DeepCNNのアーキテクチャとしてはAlexNetをそのまま使う(ただし最終層は1000 unitsではなく2k unitsにする) ➡ AlexNetは,C(55 x 55 x 96) - LRN - P - C(27 x 27 x 256) - LRN - P - C(13 x 13 x 384) - C(13 x 13 x 384) - C(13 x 13 x 256) - P - F(4096) - F(4096) - F(2k) からなる13層のアーキテクチャ.ただし学習 可能パラメータを持っているのはC(convolutional)層とF(fully-connected)層だけ(パラメータ数は約 4000万)なので「7層NN」 ➡ 活性化関数には全てReLUを使用 ➡ C層のフィルタサイズは下から順に
 11x11, 5x5, 3x3, 3x3, 3x3 • It’s truly holistic!! • 姿勢推定用のモデルを設計しなくてよい 図:Toshev, A. et al., “DeepPose: Human Pose Estimation via Deep Neural Networks” より
  • 8.
    Training • 分類じゃないので AlexNetfor ImageNet classification の場合とはロスが異なってくる • まずデータセット内のデータを全部,(正規化画像 N(x), 正規化姿勢ベクトル N(y)) に変換しておく DN = {(N(x), N(y)|(x, y) 2 D} • ロス関数を予測ベクトル ψ(x;θ) と正解ベクトル N(y) の間のユークリッド距離で定義する • k個の関節ごとのL2距離の合計を,全データに渡って合計した値を最小にするDCNNのパラメータθを求 める arg min ✓ X (x,y)2DN kX i=1 kyi i(x; ✓)k2 2 • θをmini-batched Stochastic Gradient Descentで最適化する • (regressionの場合learning rateは小さくしたほうが良い) • Data augmentation: ランダムcrop,左右反転 全F層でDropout ratioは0.6(AlexNetは0.5) solverの設定 N(y) N(x) (x; ✓) DCNNの出力 L2ロス(ユークリッ ド距離)を使う 220 220 N(yi) bh bw bc yi
  • 9.
    Cascade of PoseRegressors • DCNNの入力が220 x 220サイズに固定されているため,DCNNは粗い画像しか見れない • 各関節の正確な位置を推定するために,同じアーキテクチャのDCNN全体を複数,直列に接続する • 同じパラメータを持つ同じDCNNではなく,違うパラメータを学習する別なものをステージごとに用意する • 第2ステージ以降の学習では一つ下のステージの予測結果をシミュレートして作ったデータを使ってData augmentationを行う • 一つ下のステージの予測結果と正解のズレ の平均と分散を計算し,これらをパラメータとして持 つ正規分布を使って生成したノイズを正解に付加したものを擬似予測結果とすることができる (y (s 1) i yi) cascading DCNN ステージ s: (N(x; bs ); ✓s)(N(x; bs ); ✓s) x 逆変換: N 1 ( (N(x; bs ); ✓s); bs )N 1 ( (N(x; bs ); ✓s); bs ) 元画像中の推定位置: ys+1 ys+1 上の関節推定値 : i-th joint 人物検出結果領域など yy学習 N(x; bs=0 ) bs=0 220 x 220 N(x; bs ) bs+1 i N(x; bs+1 i ) ys+1 i bs+1 ibs+1 i の中心 正解位置 yiyi s 2s = 1 s 2 s s + 1
  • 10.
    Cascade of PoseRegressors • これをもとに次のbounding boxも計算される→ bs+1 i = (ys i , diam(ys ), diam(ys )) • ステージ2以降は「前のステージの予測結果をどのくらい動かせばいいか」を学習する • よって次の元画像中の推定位置は,前の予測値に現在のステージの予測結果を足して得られる ys+1 i = ys i + N 1 ( i(N(x; bs ); ✓s); bs ) s 2 • diamは姿勢ベクトルのうちの左肩関節座標と右腰関節座標の距離で定義される体幹部の大きさ • つまり体の大きさのσ倍の量によって関節まわりのbounding boxの大きさが決まる s 2 cascading DCNN ステージ s: (N(x; bs ); ✓s)(N(x; bs ); ✓s) x 逆変換: N 1 ( (N(x; bs ); ✓s); bs )N 1 ( (N(x; bs ); ✓s); bs ) 元画像中の推定位置: ys+1 ys+1 上の関節推定値 : i-th joint 人物検出結果領域など yy学習 N(x; bs=0 ) bs=0 220 x 220 N(x; bs ) bs+1 i N(x; bs+1 i ) ys+1 i bs+1 ibs+1 i の中心 正解位置 yiyi s 2s = 1 s 2 s s + 1
  • 11.
    • 検証実験のためのデータセットとしては以下の2つを用いる • FramesLabeled In Cinema (FLIC)データセット ➡ 4000枚の学習画像,1000枚のテスト画像を含む ➡ 上半身の10関節のラベルが付いている • Leeds Sports Dataset (LSP)データセット ➡ 11000枚の学習画像,1000枚のテスト画像を含む ➡ 全身の14関節のラベルが付いている • どちらともperson-centricなラベルを持つ ➡ 画像中の人物の視点での左右を反映 ➡ 例えば画像の中での位置は左側にある肘関節も,人物 がこちら側を向いていたらそれは右肘としてラベル付 けされる Empirical Evaluation - Dataset FLIC dataset LSP dataset observer-centricなラベ ルでは画像中で左の方に ある方を「左肩」とする ため対象人物がこちらを 向いていようと向こうを 向いていようと「肩らし い」ものを2つ見つけれ ばラベルは一意に決まる ので姿勢のバリエーショ ンが減る
  • 12.
    Empirical Evaluation -Metrics ➡ パーツの検出率を表す ➡ あるパーツの両端の関節の検出位置が,そのパーツ の長さ(両端の関節の正解位置間の距離)の半分よ りも正解に近ければ検出成功とする(PCP at 0.5) ➡ しかし見えの上で小さな大きさになっているパーツ は極めて検出が難しいものとなる ➡ 例えば,腕を前に出しているときの上腕の長さは画 像上では数ピクセルになるかもしれない ➡ このとき肩と肘の関節はその数ピクセルのさらに半 分の誤差以下でないと検出とされないことになる Percentage of Correct Parts (PCP) 評価指標 Percentage of Correct Parts (PCP) Percent of Detected Joints (PDJ) ➡ PCPの問題に対処するために提案された評価指標 ➡ 検出位置と正解位置の誤差がdiam(体幹部の対角線 長さ)をβ倍した長さ以内になっているときはその関 節を検出成功したとする ➡ PDJでは見え方上のパーツの大きさによるパーツご との検出難易度のばらつきを排除して比較できる ➡ さらにβの値を変えることで許容誤差を変化させたと きの検出率を調べることができる
  • 13.
    Experimental Details • FLICデータセットに対してはまず顔検出を行い,そのboundingboxを広げて全ての関節が含まれるような ラフな初期人物検出領域を作成する • LSPデータセットの場合はもともとすでにラフな人物領域が切りだされた画像なのでデータセットの画像を そのまま初期bounding box( )として用いるb0 • 各データセットから50枚ずつ画像を取り出していくつかのハイパーパラメータを決定するのに使う • ステージ2以降のbounding boxのサイズを決める係数σ( )は ➡ FLIC datasetの場合: - 上記50枚で{0.8, 1.0, 1.2}を試した結果,σ=1.0とした ➡ LSP datasetの場合: - {1.5, 1.7, 2.0, 2.3}を試した結果,σ=2.0とした bs+1 i = (ys i , diam(ys ), diam(ys )) • カスケーディングのステージ数はFLIC, LSP双方で3が最も良かった • ステージ2以降の学習に使う乱数でノイズがシミュレートされた入力パッチは,各学習データごとに40枚生 成したため,LSPデータセット(関節数14)においては11000枚 x 40バージョン x 2次元(x,y) x 14関節で, 1232万枚の学習データに増やしたことになる • 学習は12core CPUだと各画像0.1sほどでできる • 100台のコンピュータを使ってステージ1の学習を3日行ったが,最終的な精度は12時間ほどの時点で達成さ れていた • ステージ2以降のDCNNの学習はデータ量が40倍になるので各ステージごとに7日を要した • それでももっと大量のデータがあればより良い結果が出るだろう
  • 14.
    Comparisons • 最も難しい4つのパーツ(上腕・下腕・脚)それぞれ と,これらの平均精度で他手法と比較した • 全てにおいてベストパフォーマンスを達成したが,特 に脚が顕著だった •特定のパーツに特化して作られた他手法よりも優れて いたのは特筆に値する PCP metric on LSP PDJ metric on FLIC and LSP • 全ての対抗手法を圧倒 • 許容誤差が大きいあたりで特に強い • LSPのケースで正規化距離が0.2以下のあたりで少し対 抗手法に負けているのは恐らくDCNNが7層と深すぎ るのとMax poolingのせい FLICLSP
  • 15.
    Effects of cascade-basedrefinement • ステージを重ねることでどのくらい精度が上がっていくのか? • initial stage→stage 2の間のゲインがとても大きい • stageが上がると逆にコンテキストの情報が使えない(周囲の情報から推測する,ということが難しい) ため精度向上にも限界がある scaletranslation
  • 16.
    Cross-dataset Generalization • LSP(全身姿勢dataset)で学習したDeepPoseを別のデータセット(ImageParse dataset)でテストした • Image Parse datasetで学習してImage Parser datasetでテストしている他手法より良かった(衝撃) Percentage of Correct Parts (PCP) at 0.5 Conclusion • Deep Neural Networkの応用としては初の人物姿勢推定を行った • パーツベースではなく,holistic mannerで回帰問題にした • 今回は物体認識で使われているAlexNetのアーキテクチャをそのまま用いた • AlexNetが回帰でも使えることが分かった • 姿勢推定に適したアーキテクチャがあるはずなので,探したい