论文重要信息摘选与理解:3D Human Pose Estimation with Spatio-Temporal Criss-cross Attention
龟速更新ing…
STCFormer
Abstract
- 近期,transformer在3D HPE中运用取得了很多成就,但joint-to-joint affinity matrix的计算量会随着关节数目的增加呈二次方增长。因此,对整个视频的处理需要引入时空相关。
- 作者提出一种STC模型块,该模型有两个分区,分别进行空间和时间注意力。最后通过串联两个分区的输出来同时建模(一帧中的关节点)和(同一轨迹中的关节点)之间的联系。
- 作者还提出了一种结构增强位置嵌入:包含两部分,一为相邻关节点附近的时空卷积以捕获局部结构,二为划分关节点归属的局部感知嵌入。
Introduction
- 针对3D HPE任务,典型的单目解决方法为2D-to-3D提升方法:第一阶段提取2d skeleton,第二阶段进行2d到3d的提升。第二阶段是一个缺乏深度先验信息的ill-posed problem,且存在歧义问题。
- 为解决上述问题,多数工作聚焦于整合视频序列中的时间线索。
- transformer在建模3D HPE的时空关系上表现卓越。
- (a)所示是一种直接使用transformer的方法,但计算开销太大:joint-to-joint affinity matrix的计算量随帧数的增加呈二次方相关增长。
- (b)所示是多数transformer的实施方法:先空间注意力进行帧级编码,再时间注意力进行聚合。这种策略基本上挖掘了帧级特征之间的相关性,但很少探索不同帧之间的关节点之间的关系。
- (c)所示为作者提出的时空交叉注意力架构:将输入特征均分为两个分区,上分区采用多头自注意力捕获帧内的关节点之间的联系,下分区采用多头自注意力捕获帧间同一关节点的变化关系(即,轨迹),融合后经MLP整合输出。
- 以 T , S T,S T,S分别表示帧数,关节点数,则(c)方法的计算量为 O ( T 2 S ) + O ( T S 2 ) \mathcal{O}(T^2S)+\mathcal{O}(TS^2) O(T2S)+O(TS2)这块一下子不太明白怎么推出来的。That is much lower than O ( T 2 S 2 ) \mathcal{O}(T^2S^2) O(T2S2) of fully spatio-temporal attention.
-
同一身体部位的关节点,要么高度相关,要么不相关但包含一些运动模式。前述两种分别称为“静态部分”,“动态部分”。新的结构增强型位置嵌入便据此设计。
- 下述为我首次读论文到这里的一些初步粗浅理解,可能有误,仅供参考:
- 所谓“静态部分”,可以举例人体脊柱区域:Hip,Spine,Chest三点,位置成一种高度相关性(因为人的脊柱不能有大幅且多种运动,这三个关节点相对位置关系比较固定)
- 所谓“动态部分”,可以举例腿部关节区域:LeftHip,LeftKnee,LeftFoot三点,组成整条腿,可以有伸直,弯曲等状态,算是不同的“运动模式”。
-
新的结构增强型位置嵌入,对应前述两种不同的“part”,分别对应两个嵌入函数:
- 部分感知嵌入:通过表示关节点属于人体的哪部分区域,进而描述“静态部分”。
- 时空卷积:以一个局部窗口,捕获目标关节点及其周围相邻关节点的“动态结构”。
Related Work
Monocular 3D human pose estimation
- 单目3D人体姿态估计任务的目的是:利用输入的单视图2D数据,即图像或2D坐标,在3D空间中重新定位人体关节点。
- 早期工作开发各种图形化或限制性的方法来explore the dependencies of human skeleton and perspective relationships across spaces
- 一些深度神经网络被引入处理该任务后,大致分为单阶段,双阶段两个方向:
- 单阶段方法直接从输入图像中回归三维姿态,需要大量的图像-姿态配对数据和强大的计算资源
- 两阶段方法首先利用现有的2D姿态检测器估计2D关节坐标,然后通过全连接网络、网格卷积网络、循环神经网络或图卷积网络将2D坐标提升到3D空间。该类方法减轻了对图像-姿态对的要求,但缺乏深度信息(诚然,我认为单阶段方法也有这个问题),仍然有严重的深度模糊问题(且是ill-posed problem)。
3D pose estimation from video sequence
- 为克服深度模糊的限制,研究者利用来自相邻帧的时间上下文,以改进3D坐标回归。
- 如:Pavllo等人的时序全卷积网络TCN,Liu等人引入注意力机制来扩展TCN,Chen等人将姿态估计分解为骨骼长度和骨骼方向预测,一些工作利用时空图卷积网络同时建模跨关节点的空间和时间相关性。
Transformer-based methods
-
PoseFormer中设计了含多个空间transformer编码器和时间transformer编码器的级联架构。
-
MHFormer提出使用空间Transformer编码器为姿势生成多个假设表示,然后使用不同的时间Transformer块建模多级全局相关性。
-
StridedFormer和CrossFormer分别通过整合一维时间卷积和一维空间卷积引入了局部性。
-
近期,运动模式的联合不一致性在两篇文章中被强调,文章作者还鼓励同时建模空间和时间信息。
- “Boosting monocular 3d human pose estimation with part aware attention”:对具有相似运动模式的关节进行分组,并计算intra-part temporal correlation。
- “Mixste: Seq2seq mixed spatio-temporal encoder for 3d human pose estimation in video.”:使用多个分离的空间变换块和时间变换块来迭代地建模空间和时间相关性。
-
前述方法主要在网络的不同阶段分别对空间信息和时间信息进行建模。鉴于关节运动是一种空间和时间共存的状态,这种分离可能导致对运动模式的学习不足。故作者设计STC模块以一个双通道设计,并行地建模空间和时间依赖关系,然后通过MLP混合。
Spatio-Temporal Criss-cross Transformer
Overall Architecture
图b即为图a中STC块的详细内部结构,下面对关键部分进行一一剖析解读。
1. Joint-based embedding 流程介绍
- 输入二维骨架序列 P 2 D ∈ R T × N × 2 P_{2D} \in \mathbb{R}^{T \times N\times 2} P2D∈RT×N×2, T , N T,N T,N分别表示帧数,每一帧的身体关节点数。
- 采用GELU作为激活函数的FC层,将每一个二维坐标独立地映射到更高维度: P 2 D p r o j e c t ∈ R T × N × C P_{2Dproject} \in \mathbb{R}^{T \times N\times C} P2Dproject∈RT×N×C
- 注意,对于一帧 N × 2 N \times 2 N×2的数据,没有将其映射为一条单个向量,而是对每个坐标点分别映射,得到 N × C N \times C N×C的结果。这样一定程度上保证了空间区分度,但计算开销上相对于前者多。不过后续的STC块设计大幅减少了计算成本。
2. STC blocks 大致介绍
- 此block实际上是基于transformer block的改变:
- MSA替换为了STC
- 普通的嵌入编码替换为了Structure-enhanced Positional Embedding
3. Regression head
- 是一个线性回归头,通过最小化预测于GT的均方误差MSE以优化网络。 L = ∣ ∣ P ^ 3 D − P 3 D ∣ ∣ 2 \mathcal{L} = || \hat{P}_{3D} - P_{3D} ||^{2} L=∣∣P^3D−P3D∣∣2
Spatio-Temporal Criss-cross Attention
- 作者的设计思路受group contextualization strategy启发:该策略将通道分成若干个并行的组,并分别对其进行不同的特征上下文操作
- 具体操作步骤为:
- 输入embedding X ∈ R T × N × C X \in \mathbb{R}^{T \times N \times C} X∈RT×N×C先映射生成 Q , K , V ∈ R T × N × C Q,K,V \in \mathbb{R}^{T \times N \times C} Q,K,V∈RT×N×C三组数据。
- 将三组数据分别沿Channel通道对半等分,则得到六组数据,归类为{ Q T , K T , V T Q_{T},K_{T},V_{T} QT,KT,VT},{ Q S , K S , V S Q_{S},K_{S},V_{S} QS,KS,VS}两大类。
- 接下来分别对两大类数据,进行独立的多头自注意力计算(计算细节需要看代码,论文未介绍。比如输入输出的数据维度),得到时间相关性和空间相关性。
- 时间相关性:同一关节点在不同帧间运动关系(轨迹)
- 空间相关性:同一帧中节点之间的联系。由于身体骨架的一些先验性信息,这些关节点肯定有一些内在联系的
- 两种相关性的计算结果沿着Channel通道拼接
- STC的感受野就像一个纵横交错的空间和时间轴,堆叠多个STC块可以近似完全的时空注意力。
Structure-enhanced Positional Embedding
- transformer的一个重要因素是位置嵌入,它能蕴含每个token绝对或相对位置的信息。本文作者在深入研究关节点的局部结构后,提出了结构增强的位置嵌入。
(a)为不同关节点运动轨迹的系数矩阵(coefficient matrix),我个人对这张图如何计算的表示疑惑。
根据(a)图系数矩阵的分布情况并结合人体的动态链式结构,作者进行了五部分划分。
- 关节点运动轨迹高度相关的部分,作者将其认为“静态部分”,也即 g 0 , g 3 , g 4 g_{0}, g_{3}, g_{4} g0,g3,g4;
- 关节点之间有相对运动的部分,关节的轨迹并不相关,故作者将其认为“动态部分”,也即 g 1 , g 2 g_{1}, g_{2} g1,g2。
- 针对“静态部分”,设计“部分位置嵌入”,可以表示关节点具体属于哪个部分(上述五部分之一):同一部分的关节点赋有相同的嵌入向量。
- 针对“动态部分”,设计“时空卷积”,来对周遭关节点进行局部结构提取,具体实现为:
- 给定 V ∈ R T × N × C 2 V \in \mathbb{R}^{T \times N \times \frac{C}{2}} V∈RT×N×2C,将 V V V视为二维的特征图(时间和空间维度)。
- 对周遭关节点使用3*3的二维卷积: S P E 2 ( V ) = c o n v 2 d ( V ) SPE_{2}(V) = conv2d(V) SPE2(V)=conv2d(V)
- 实际使用时,在所有关节点上同时使用部分位置嵌入和时空卷积,忽略了静态动态判断。这种“二重化”使得能够应对处理各种运动模式的部分。
- transformer在最开始只进行一次位置嵌入,而STCFormer在每个STC块的最后才进行嵌入。每个块的最后都嵌入吗?