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 模型
- 空间 transformer 模块来编码每帧中 2D 关节之间的局部关系。空间自关注层考虑二维关节的位置信息,并返回该帧的潜在特征表示。
- 时间 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\}
{xi∈R1×(J⋅2)∣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}
Y∈Rf×C
最后通过 MLP 计算维度均值得到 3D 姿态:
y
∈
R
1
×
(
J
⋅
3
)
\mathbf{y} \in \mathbb{R}^{1 \times(J \cdot 3)}
y∈R1×(J⋅3)
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}
ESPos∈RJ×c
输入:
x
i
∈
R
1
×
(
J
⋅
2
)
\mathbf{x}_{i} \in \mathbb{R}^{1 \times(J \cdot 2)}
xi∈R1×(J⋅2)
embedding 后的输入为:
z
L
i
∈
R
J
×
c
z_{L}^{i} \in \mathbb{R}^{J \times c}
zLi∈RJ×c
Temporal Transformer Module
时间 transformer 的目标是是跨帧序列建模依赖关系。
将
z
L
i
∈
R
J
×
c
z_{L}^{i} \in \mathbb{R}^{J \times c}
zLi∈RJ×c转换为一个 vector:
Z
i
∈
R
1
×
(
J
⋅
c
)
\mathbf{Z}^{i} \in \mathbb{R}^{1 \times(J \cdot c)}
Zi∈R1×(J⋅c)
再把 f 帧的 vector concat 起来:
Z
0
∈
R
f
×
(
J
⋅
c
)
Z_{0} \in \mathbb{R}^{f \times(J \cdot c)}
Z0∈Rf×(J⋅c)
加入一个时间位置的 embedding:
E
T
P
o
s
∈
R
f
×
(
J
⋅
c
)
E_{T P o s} \in \mathbb{R}^{f \times(J \cdot c)}
ETPos∈Rf×(J⋅c)
最后的输出为:
Y
∈
R
f
×
(
J
⋅
c
)
Y \in \mathbb{R}^{f \times(J \cdot c)}
Y∈Rf×(J⋅c)
Regression Head
对帧维度应用加权平均操作(使用学习到权重)来获得最终的 3Dpose
loss
standard MPJPE
实验
心得体会
transformer or GNN?
transformer 可以视为一种特殊的图卷积,作者给出的理由是,transformer 结构中的 encoder 本质上是一个全连接的图,边权重是使用多头自我注意机制计算出来的。除此之外,transformer 还包含对节点特征的归一化,跨注意头输出的前馈聚合器,以及使其能够有效扩展堆叠层的 residual connection,这些机制有利于缓解过渡平滑效应,这是 GNN 的致命问题。 相比之下 transformer 更有优势。例如,节点之间的相关性是由自我注意机制决定的,而不是通过邻接矩阵预定义的公式化的计算。这使得 transformer 灵活性,以适应每个输入姿势中关节的相对重要性。
过渡平滑的理解:多次图卷积后,同一连通分量内所有节点的特征都趋于一致了