Contenu connexe
Similaire à Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition (20)
Plus de yukihiro domae (6)
Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition
- 2. 概要
• Spatial Temporal Graph Convolutional Networks(ST-GCN)と呼ばれる
動的スケルトンの新しいモデルを提案
• データから空間パターンと時間パターンの両方を自動的に学習
• 空間時間グラフの畳み込みを行う複数の層が構築
➡ 空間次元と時間次元の両方に沿って情報を統合することができる
• ST-GCNは,スケルトンベースのアクション認識のタスクにGCNを初めて適用
- 5. Convolutionの計算
• 𝑓𝑖𝑛(𝑣 𝑡𝑗) :入力特徴マップのノード𝑣 𝑡𝑗の特徴ベクトル(座標と関節の信頼スコア)
• 𝑙 𝑡𝑖(𝑣 𝑡𝑗) :空間的ノード𝑣 𝑡𝑗に対して該当するカーネルのインデックス番号(0~K-1)
• 𝑙 𝑆𝑇(𝑣 𝑞𝑗) :𝑙 𝑡𝑖 𝑣 𝑡𝑗 の後に時間的な割り当てを追加
𝑙 𝑆𝑇(𝑣 𝑞𝑗) = 𝑙 𝑡𝑖 𝑣 𝑡𝑗 + (𝑞 − 𝑡 +
Γ
2
) × 𝐾
• 𝑤(𝑙 𝑡𝑖(𝑣 𝑡𝑗)) :ンデックス番号に合わせて重みを出力する関数
• 𝐵(𝑣 𝑡𝑖) :注目ノードに対する隣接ノードの集合
𝐵 𝑣 𝑡𝑖 = {𝑣 𝑡𝑗|𝑑(𝑣 𝑡𝑗, 𝑣 𝑡𝑖) ≤ K , |𝑞 − 𝑡| ≤
Γ
2
}
• Γ :時間的カーネルサイズ
• K :空間的カーネルサイズ
• 𝑍𝑡𝑖(𝑣 𝑡𝑗) :正規化項(重みのインデックスが同じものどうしで行う)
𝑍𝑡𝑖 𝑣 𝑡𝑗 = | 𝑣 𝑡𝑘 | 𝑙 𝑡𝑖 𝑣 𝑡𝑘 = 𝑙 𝑡𝑖 𝑣 𝑡𝑗 |
𝑓𝑜𝑢𝑡(𝑣 𝑡𝑖) =
𝑣 𝑡𝑗∈𝐵(𝑣 𝑡𝑖)
1
𝑍𝑡𝑖 𝑣 𝑡𝑗
𝑓𝑖𝑛(𝑣 𝑡𝑗) ∙ 𝑤(𝑙 𝑆𝑇(𝑣 𝑞𝑗))
𝑡 :注目時刻
𝑖 :注目ノード
𝑞 :隣接時刻
𝑗 :隣接ノード
- 6. Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition
• 𝑙 𝑡𝑖(𝑣 𝑡𝑗) :ノード𝑣 𝑡𝑗に対して該当するカーネルのインデックス番号(0~K-1)
➡ つまり𝑤(𝑙 𝑡𝑖(𝑣 𝑡𝑗))はインデックス番号が𝑙 𝑡𝑖(𝑣 𝑡𝑗)の重みを取り出す
どうやってインデックス番号を割り当てられているのか
• いくつか方法がある
• (B)すべて同じ重み(K=1)
• (C)エッジの距離が0(緑)か1(青)かで分ける(K=2)
• (D)スケルトン全体の重心に対して,注目ノードより距離が短いものと長いもので分ける
𝑓𝑜𝑢𝑡(𝑣 𝑡𝑖) =
𝑣 𝑡𝑗∈𝐵(𝑣 𝑡𝑖)
1
𝑍𝑡𝑖 𝑣 𝑡𝑗
𝑓𝑖𝑛(𝑣 𝑡𝑗) ∙ 𝑤(𝑙 𝑡𝑖(𝑣 𝑡𝑗))
- 7. Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition
学習可能なエッジ重み
• 人がアクションを実行しているとき,隣接する関節ノードが連動する
• 連動に関係のあるノードとないノードがある
• 連動しているノード間のエッジに重要度に合わせて重みづけをする
- 8. Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition
• ST-GCNの実装(スペクトルアプローチで行う)
(B)の割り当ての場合
• 𝒇 𝒐𝒖𝒕 = 𝜦−
𝟏
𝟐(𝑨 + 𝑰) ⊗ 𝑴𝜦−
𝟏
𝟐 𝒇𝒊𝒏 𝑾
• 𝛬𝑖𝑖 = 𝑗(𝛬𝑖𝑗 + 𝐼 𝑖𝑗)
• 𝑨 :隣接行列
• 𝑰 :単位行列
(C)(D)の割り当ての場合
• 𝒇 𝒐𝒖𝒕 = 𝑗 𝜦𝑗
−
𝟏
𝟐
𝑨𝑗 ⊗ 𝑴𝜦𝑗
−
𝟏
𝟐
𝒇𝒊𝒏 𝑾𝑗
• 𝛬𝑗
𝑖𝑖
= 𝑘(𝛬𝑗
𝑖𝑘
) + 𝛼
• 𝑨𝑗の空の行を避けるために,α= 0.001を設定
• ⊗は要素積
- 11. Convolutionの計算
• 注目ノード:𝑣 𝑡𝑖
• 𝑡:注目時刻
• 𝑖:注目位置
𝑓𝑜𝑢𝑡(𝑣 𝑡𝑖) =
𝑣 𝑡𝑗∈𝐵(𝑣 𝑡𝑖)
1
𝑍𝑡𝑖 𝑣 𝑡𝑗
𝑓𝑖𝑛(𝑣 𝑡𝑗) ∙ 𝑤(𝑙 𝑆𝑇(𝑣 𝑞𝑗))
隣接ノードの求めかた
• 隣接ノードの集合:𝐵(𝑣 𝑡𝑖)
• 𝐵 𝑣 𝑡𝑖 = {𝑣 𝑡𝑗|𝑑(𝑣 𝑡𝑗, 𝑣 𝑡𝑖) ≤ 𝐾 , |𝑞 − 𝑡| ≤
𝛤
2
}
• 𝑑 𝑣 𝑡𝑗, 𝑣 𝑡𝑖 ≤ 𝐾
(注目ノード𝑣 𝑡𝑖と隣接ノード𝑣 𝑡𝑗の距離がK以下)
• |𝑞 − 𝑡| ≤
𝛤
2
(現在の時刻tと時間隣接ノードの時刻qの差が
𝛤
2
以下)
• 𝐾と𝛤はカーネルの最大サイズ
• 最も短いエッジの距離
- 12. 隣接ノードの求めかた
• 隣接ノードの集合:𝐵(𝑣 𝑡𝑖)
• 𝐵 𝑣 𝑡𝑖 = {𝑣 𝑡𝑗|𝑑(𝑣 𝑡𝑗, 𝑣 𝑡𝑖) ≤ 𝐾 , |𝑞 − 𝑡| ≤
𝛤
2
}
• 𝑑 𝑣 𝑡𝑗, 𝑣 𝑡𝑖 ≤ 𝐾
(注目ノード𝑣 𝑡𝑖と隣接ノード𝑣 𝑡𝑗の距離がK以下)
• |𝑞 − 𝑡| ≤
𝛤
2
(現在の時刻𝑡と時間隣接ノードの時刻𝑞の差が
𝛤
2
以下)
• 𝐾と𝛤はカーネルの最大サイズ
• 2つのノードの最短のエッジの距離
𝑓𝑜𝑢𝑡(𝑣 𝑡𝑖) =
𝑣 𝑡𝑗∈𝐵(𝑣 𝑡𝑖)
1
𝑍𝑡𝑖 𝑣 𝑡𝑗
𝑓𝑖𝑛(𝑣 𝑡𝑗) ∙ 𝑤(𝑙 𝑆𝑇(𝑣 𝑞𝑗))
𝛤
2
𝛤
2
K
- 14. 重み割り当ての式
𝑙 𝑆𝑇(𝑣 𝑞𝑗) = 𝑙 𝑡𝑖 𝑣 𝑡𝑗 + (𝑞 − 𝑡 +
𝛤
2
) × 𝐾
• 𝑙 𝑡𝑖 𝑣𝑡𝑗 は単一フレームの場合のラベルマップ
• 前ページの割り当ての決定方法がここに当たる
• 𝑙 𝑡𝑖 𝑣 𝑡𝑗 が0~𝐾 − 1までとすると, 𝑞 = 𝑡以外の時は𝐾以降の重みを参照
• 以下のように重みが入っていることになる
• [注目ノードと同じフレームの重み][𝑞 = 𝑡以外の時は𝐾以降の重み]
𝑓𝑜𝑢𝑡(𝑣 𝑡𝑖) =
𝑣 𝑡𝑗∈𝐵(𝑣 𝑡𝑖)
1
𝑍𝑡𝑖 𝑣 𝑡𝑗
𝑓𝑖𝑛(𝑣 𝑡𝑗) ∙ 𝑤(𝑙 𝑆𝑇(𝑣 𝑞𝑗))
- 15. 重み・正規化項
重み
𝑤 𝑙 𝑆𝑇 𝑣 𝑡𝑗
• インデックス番号に合わせて重みを出力する関数
正規化項
𝑍𝑡𝑖(𝑣 𝑡𝑗)
• 重みのインデックスが同じものどうしで行う
𝑍𝑡𝑖 𝑣 𝑡𝑗 = | 𝑣 𝑡𝑘 | 𝑙 𝑡𝑖 𝑣 𝑡𝑘 = 𝑙 𝑡𝑖 𝑣 𝑡𝑗 |
• 結局,隣接ノード数で割ることと同じ
𝑓𝑜𝑢𝑡(𝑣 𝑡𝑖) =
𝑣 𝑡𝑗∈𝐵(𝑣 𝑡𝑖)
1
𝑍𝑡𝑖 𝑣 𝑡𝑗
𝑓𝑖𝑛(𝑣 𝑡𝑗) ∙ 𝑤(𝑙 𝑆𝑇(𝑣 𝑞𝑗))
- 18. (C)(D)の割り当ての場合
• 𝒇 𝒐𝒖𝒕 = 𝑗 𝜦𝑗
−
𝟏
𝟐
𝑨𝑗 𝜦𝑗
−
𝟏
𝟐
𝒇𝒊𝒏 𝑾𝑗
• 隣接行列𝑨 + 𝑰はいくつかの行列𝑨𝑗に分解され、 𝑨 + 𝑰 = 𝑗(𝑨𝑗)となる
➡ 例:(B)の場合,𝑨0 = 𝑰および𝑨1 = 𝑨
• 𝜦𝒋
𝒊𝒊
= 𝑘(𝜦𝒋
𝒊𝒌
) + 𝛼
• 𝑨𝑗の空の行を避けるために,α= 0.001を設定
- 19. 学習可能なエッジ重み
• (B)の割り当ての場合
𝒇 𝒐𝒖𝒕 = 𝜦−
𝟏
𝟐(𝑨 + 𝑰) ⊗ 𝑴𝜦−
𝟏
𝟐 𝒇𝒊𝒏 𝑾
• (C)(D)の割り当ての場合
𝒇 𝒐𝒖𝒕 =
𝑗
𝜦𝑗
−
𝟏
𝟐
𝑨𝑗 ⊗ 𝑴𝜦𝑗
−
𝟏
𝟐
𝒇𝒊𝒏 𝑾𝑗
• ⊗は2つの行列間の要素的な積を表す
• マスクMはオール1マトリックスとして初期化
- 21. 実験
• Deepmind Kineticsの人間行動データセット
• YouTubeから取得した約30万のビデオクリップ
• 毎日の活動、スポーツシーン、インタラクションを伴う複雑なアクションなど,
400種類のヒューマンアクションクラスをカバー
• このデータセットに対して,OpenPoseツールボックスを使用して,
ビデオクリップのすべてのフレームで18個の関節の位置を推定
• top1およびtop5分類精度による認識性能を評価
Notes de l'éditeur
- グローバルプーリングは最終層の層のそれぞれのチェンネルごとに平均をとったものになる
- グローバルプーリングは最終層の層のそれぞれのチェンネルごとに平均をとったものになる
- グローバルプーリングは最終層の層のそれぞれのチェンネルごとに平均をとったものになる
- グローバルプーリングは最終層の層のそれぞれのチェンネルごとに平均をとったものになる
- グローバルプーリングは最終層の層のそれぞれのチェンネルごとに平均をとったものになる
- グローバルプーリングは最終層の層のそれぞれのチェンネルごとに平均をとったものになる
- グローバルプーリングは最終層の層のそれぞれのチェンネルごとに平均をとったものになる
- グローバルプーリングは最終層の層のそれぞれのチェンネルごとに平均をとったものになる