SlideShare a Scribd company logo
1 of 16
Download to read offline
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が回帰でも使えることが分かった
• 姿勢推定に適したアーキテクチャがあるはずなので,探したい

More Related Content

What's hot

What's hot (20)

[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video Processing (NeRF...
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video  Processing (NeRF...[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video  Processing (NeRF...
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video Processing (NeRF...
 
自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)自己教師学習(Self-Supervised Learning)
自己教師学習(Self-Supervised Learning)
 
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
SSII2021 [SS1] Transformer x Computer Visionの 実活用可能性と展望 〜 TransformerのCompute...
 
夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affin...
夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affin...夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affin...
夏のトップカンファレンス論文読み会 / Realtime Multi-Person 2D Pose Estimation using Part Affin...
 
【DL輪読会】Novel View Synthesis with Diffusion Models
【DL輪読会】Novel View Synthesis with Diffusion Models【DL輪読会】Novel View Synthesis with Diffusion Models
【DL輪読会】Novel View Synthesis with Diffusion Models
 
画像認識と深層学習
画像認識と深層学習画像認識と深層学習
画像認識と深層学習
 
三次元表現まとめ(深層学習を中心に)
三次元表現まとめ(深層学習を中心に)三次元表現まとめ(深層学習を中心に)
三次元表現まとめ(深層学習を中心に)
 
物体検出の歴史(R-CNNからSSD・YOLOまで)
物体検出の歴史(R-CNNからSSD・YOLOまで)物体検出の歴史(R-CNNからSSD・YOLOまで)
物体検出の歴史(R-CNNからSSD・YOLOまで)
 
Image Retrieval Overview (from Traditional Local Features to Recent Deep Lear...
Image Retrieval Overview (from Traditional Local Features to Recent Deep Lear...Image Retrieval Overview (from Traditional Local Features to Recent Deep Lear...
Image Retrieval Overview (from Traditional Local Features to Recent Deep Lear...
 
動画像を用いた経路予測手法の分類
動画像を用いた経路予測手法の分類動画像を用いた経路予測手法の分類
動画像を用いた経路予測手法の分類
 
【DL輪読会】Poisoning Language Models During Instruction Tuning Instruction Tuning...
【DL輪読会】Poisoning Language Models During Instruction Tuning Instruction Tuning...【DL輪読会】Poisoning Language Models During Instruction Tuning Instruction Tuning...
【DL輪読会】Poisoning Language Models During Instruction Tuning Instruction Tuning...
 
動画認識サーベイv1(メタサーベイ )
動画認識サーベイv1(メタサーベイ )動画認識サーベイv1(メタサーベイ )
動画認識サーベイv1(メタサーベイ )
 
[DL輪読会]Graph R-CNN for Scene Graph Generation
[DL輪読会]Graph R-CNN for Scene Graph Generation[DL輪読会]Graph R-CNN for Scene Graph Generation
[DL輪読会]Graph R-CNN for Scene Graph Generation
 
【チュートリアル】コンピュータビジョンによる動画認識
【チュートリアル】コンピュータビジョンによる動画認識【チュートリアル】コンピュータビジョンによる動画認識
【チュートリアル】コンピュータビジョンによる動画認識
 
[DL輪読会]A Higher-Dimensional Representation for Topologically Varying Neural R...
[DL輪読会]A Higher-Dimensional Representation for Topologically Varying Neural R...[DL輪読会]A Higher-Dimensional Representation for Topologically Varying Neural R...
[DL輪読会]A Higher-Dimensional Representation for Topologically Varying Neural R...
 
SfM Learner系単眼深度推定手法について
SfM Learner系単眼深度推定手法についてSfM Learner系単眼深度推定手法について
SfM Learner系単眼深度推定手法について
 
Transformer 動向調査 in 画像認識(修正版)
Transformer 動向調査 in 画像認識(修正版)Transformer 動向調査 in 画像認識(修正版)
Transformer 動向調査 in 画像認識(修正版)
 
【メタサーベイ】Video Transformer
 【メタサーベイ】Video Transformer 【メタサーベイ】Video Transformer
【メタサーベイ】Video Transformer
 
3D CNNによる人物行動認識の動向
3D CNNによる人物行動認識の動向3D CNNによる人物行動認識の動向
3D CNNによる人物行動認識の動向
 
三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ
 

More from Shunta Saito

Automatic selection of object recognition methods using reinforcement learning
Automatic selection of object recognition methods using reinforcement learningAutomatic selection of object recognition methods using reinforcement learning
Automatic selection of object recognition methods using reinforcement learning
Shunta Saito
 
強化学習入門
強化学習入門強化学習入門
強化学習入門
Shunta Saito
 
視覚認知システムにおける知覚と推論
視覚認知システムにおける知覚と推論視覚認知システムにおける知覚と推論
視覚認知システムにおける知覚と推論
Shunta Saito
 

More from Shunta Saito (12)

Deep LearningフレームワークChainerと最近の技術動向
Deep LearningフレームワークChainerと最近の技術動向Deep LearningフレームワークChainerと最近の技術動向
Deep LearningフレームワークChainerと最近の技術動向
 
[unofficial] Pyramid Scene Parsing Network (CVPR 2017)
[unofficial] Pyramid Scene Parsing Network (CVPR 2017)[unofficial] Pyramid Scene Parsing Network (CVPR 2017)
[unofficial] Pyramid Scene Parsing Network (CVPR 2017)
 
Introduction to Chainer
Introduction to ChainerIntroduction to Chainer
Introduction to Chainer
 
[5 minutes LT] Brief Introduction to Recent Image Recognition Methods and Cha...
[5 minutes LT] Brief Introduction to Recent Image Recognition Methods and Cha...[5 minutes LT] Brief Introduction to Recent Image Recognition Methods and Cha...
[5 minutes LT] Brief Introduction to Recent Image Recognition Methods and Cha...
 
A brief introduction to recent segmentation methods
A brief introduction to recent segmentation methodsA brief introduction to recent segmentation methods
A brief introduction to recent segmentation methods
 
LT@Chainer Meetup
LT@Chainer MeetupLT@Chainer Meetup
LT@Chainer Meetup
 
Building and road detection from large aerial imagery
Building and road detection from large aerial imageryBuilding and road detection from large aerial imagery
Building and road detection from large aerial imagery
 
Building detection with decision fusion
Building detection with decision fusionBuilding detection with decision fusion
Building detection with decision fusion
 
Automatic selection of object recognition methods using reinforcement learning
Automatic selection of object recognition methods using reinforcement learningAutomatic selection of object recognition methods using reinforcement learning
Automatic selection of object recognition methods using reinforcement learning
 
強化学習入門
強化学習入門強化学習入門
強化学習入門
 
視覚認知システムにおける知覚と推論
視覚認知システムにおける知覚と推論視覚認知システムにおける知覚と推論
視覚認知システムにおける知覚と推論
 
集合知プログラミングゼミ第1回
集合知プログラミングゼミ第1回集合知プログラミングゼミ第1回
集合知プログラミングゼミ第1回
 

Recently uploaded

Recently uploaded (10)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

DeepPose: Human Pose Estimation via Deep Neural Networks

  • 1. DeepPose: Human Pose Estimation 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 • 人間は隠れている関節の位置も他の部位のようすやその対象人物の動きなどから推測することができる • つまり「全体的に見て推測する(holistic reasoning)」ことが重要 • Deep Neural Network (DNN) ならこの辺をうまくやってくれそう • パーツごとに検出して,あとでパーツ間の関係を考慮する手法は大量に提案されてきたが,あり得るパーツ間 の相互関係のうちの小さな部分集合を考慮に入れることしかできていない • DNNを用いると特徴量を設計しなくてよいしパーツ検出器もデザインしなくてよい上に関節間の相互関係な どのモデルさえ用意しなくてよい • DeepPoseでは複数のDNNを直列につなげる • まずおおまかに各関節の初期位置を推定するDNNを使い,推定された各関節位置のまわりの画像を元画像か ら取ってきなおして,その関節まわりの高解像度なパッチを次のDNNに入力する 図:Toshev, A. et al., “DeepPose: Human Pose Estimation via Deep Neural Networks” より
  • 4. 図: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” より
  • 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 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データセット より
  • 7. 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” より
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. • 検証実験のためのデータセットとしては以下の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つ見つけれ ばラベルは一意に決まる ので姿勢のバリエーショ ンが減る
  • 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データセットに対してはまず顔検出を行い,その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日を要した • それでももっと大量のデータがあればより良い結果が出るだろう
  • 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-based refinement • ステージを重ねることでどのくらい精度が上がっていくのか? • initial stage→stage 2の間のゲインがとても大きい • stageが上がると逆にコンテキストの情報が使えない(周囲の情報から推測する,ということが難しい) ため精度向上にも限界がある scaletranslation
  • 16. 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が回帰でも使えることが分かった • 姿勢推定に適したアーキテクチャがあるはずなので,探したい