(poseformer)3D Human Pose Estimation with Spatial and Temporal Transformers 论文笔记

motivation

对于只使用 CNN 建立相邻帧的联系具有局限性,基于 CNN 处理序列信息的模型依赖于 空洞卷积 来得到全局的依赖关系, 其固有的时间连通性有限,而递归网络主要局限于简单的序列关联。
CNN-based 的模型对视频序列帧间的建模是具有局限性的,而 transformer-based 的模型的 self-attention 机制,可以清楚地捕捉长输入序列的全局相关性。

直接使用 transformer 从 2D 升维到 3D,即将给定序列中每个帧的整个 2D 姿势视为 token,但是这样忽略了关节间的空间关系,一个改进的思路是将每一个 2D 关节坐标作为 token 作为输入。但是这样在帧数多的时候,token 会越来越来(243 帧 x 17 = 4131,而 transformer 会计算个个 token 间的 attention,所以会导致模型计算十分复杂。(ViT model uses 576 patches (input size = 384 × 384, patch size = 16 × 16))

创新点

  • 提出了一个有效的时空 transformer 模型
  1. 空间 transformer 模块来编码每帧中 2D 关节之间的局部关系。空间自关注层考虑二维关节的位置信息,并返回该帧的潜在特征表示。
  2. 时间 transformer 模块分析每个空间特征表示之间的全局依赖关系,并生成精确的三维姿势估计。

模型细节

![[Pasted image 20220629205751.png]]
Temporal transformer baseline
每帧的输入: { x i ∈ R 1 × ( J ⋅ 2 ) ∣ i = 1 , 2 , … f } \left\{\mathbf{x}^{i} \in \mathbb{R}^{1 \times(J \cdot 2)} \mid i=1,2, \ldots f\right\} {xiR1×(J2)i=1,2,f}
embedding: Z 0 = [ x 1 E ; x 2 E ; … ; x f E ] + E pos  Z_{0}=\left[\mathbf{x}^{1} E ; \mathbf{x}^{2} E ; \ldots ; \mathbf{x}^{f} E\right]+E_{\text {pos }} Z0=[x1E;x2E;;xfE]+Epos 
输出:   Y ∈ R f × C \ Y \in \mathbb{R}^{f \times C}  YRf×C
最后通过 MLP 计算维度均值得到 3D 姿态: y ∈ R 1 × ( J ⋅ 3 ) \mathbf{y} \in \mathbb{R}^{1 \times(J \cdot 3)} yR1×(J3)

PoseFormer

baseline 主要关注输入序列中帧之间的全局依赖性。然而,局部关节坐标之间的运动学信息没有很强的表示,因为简单的线性投影层无法学习注意信息。
![[Pasted image 20220629212806.png]]
为了有效学习局部和全局的关系,分别对空间和时间信息使用两个分离的 transformer,PoseFormer 包含 3 个模块 spatial transformer module, temporal transformer module, and regression head module.

Spatial Transformer Module

空间 transformer 的目标是从单帧中提取高维度的特征嵌入,将每个关节视作一个 patch,在所有 patch 中进行特征提取(spatial patch embedding)。 E S P o s ∈ R J × c E_{S P o s} \in \mathbb{R}^{J \times c} ESPosRJ×c
输入: x i ∈ R 1 × ( J ⋅ 2 ) \mathbf{x}_{i} \in \mathbb{R}^{1 \times(J \cdot 2)} xiR1×(J2)
embedding 后的输入为: z L i ∈ R J × c z_{L}^{i} \in \mathbb{R}^{J \times c} zLiRJ×c

Temporal Transformer Module

时间 transformer 的目标是是跨帧序列建模依赖关系。
z L i ∈ R J × c z_{L}^{i} \in \mathbb{R}^{J \times c} zLiRJ×c转换为一个 vector: Z i ∈ R 1 × ( J ⋅ c ) \mathbf{Z}^{i} \in \mathbb{R}^{1 \times(J \cdot c)} ZiR1×(Jc)
再把 f 帧的 vector concat 起来: Z 0 ∈ R f × ( J ⋅ c ) Z_{0} \in \mathbb{R}^{f \times(J \cdot c)} Z0Rf×(Jc)
加入一个时间位置的 embedding: E T P o s ∈ R f × ( J ⋅ c ) E_{T P o s} \in \mathbb{R}^{f \times(J \cdot c)} ETPosRf×(Jc)
最后的输出为: Y ∈ R f × ( J ⋅ c ) Y \in \mathbb{R}^{f \times(J \cdot c)} YRf×(Jc)

Regression Head

对帧维度应用加权平均操作(使用学习到权重)来获得最终的 3Dpose

loss

standard MPJPE

实验

心得体会

transformer or GNN?

transformer 可以视为一种特殊的图卷积,作者给出的理由是,transformer 结构中的 encoder 本质上是一个全连接的图,边权重是使用多头自我注意机制计算出来的。除此之外,transformer 还包含对节点特征的归一化,跨注意头输出的前馈聚合器,以及使其能够有效扩展堆叠层的 residual connection,这些机制有利于缓解过渡平滑效应,这是 GNN 的致命问题。 相比之下 transformer 更有优势。例如,节点之间的相关性是由自我注意机制决定的,而不是通过邻接矩阵预定义的公式化的计算。这使得 transformer 灵活性,以适应每个输入姿势中关节的相对重要性。

过渡平滑的理解:多次图卷积后,同一连通分量内所有节点的特征都趋于一致了

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值