PoseAug:为3D人体姿态估计设计的可微姿态增强框架.

精确的3D姿态标注往往需要一些复杂的仪器配合,这就导致了公开的3D数据集大都是室内场景,而受室内和场地限制,收集到的动作姿态是有局限的。虽然近年提出了很多2D3D数据混合训练的方法来提升数据多样性,也确实收效明显,但始终是把数据增强和模型训练作为两个独立的步骤在进行。本文通过将数据增强和模型训练关联起来,提出了一套可微的数据增强框架来生成训练数据,并用判别器来评估生成数据的合理性。

本文提出的数据增强器主要对数据进行三个方面的变换:骨骼角度(BA, Bone Angel)、骨骼长度(BL, Bone Length)、旋转和变形(RT, Rotation and Translation)。

本文针对的是2D3D成对标注信息的网络,对3D数据进行增强。首先把3D坐标$X \in R^{3 \times J}$转换成骨骼向量$B \in R^{3 \times (J-1)}$:

\[B = H(X)\]

骨骼向量$B$可以被进一步拆分为骨骼方向向量\(\hat{B} \in R^{3 \times (J-1)}\)与骨骼长度向量\(\|B\| \in R^{1 \times (J-1)}\),来分别表示骨骼角度和身体的尺寸。

既然是随机生成新姿态的数据增强器,那么必然会有一个添加随机扰动的地方,本文采用的方式是在原有坐标的基础上,拼接上一个高斯噪声向量,然后将拼接得到的向量通过一个多层感知机变换为输入特征,该输入特征会被用来回归三个操作参数:

\[\begin{aligned} \hat{B}'& = \hat{B} + \gamma_{ba}\\ ||B'|| &= ||B|| \times (1+)\gamma_{bl} \\ X' &= R[H^{-1}(B')]+t \end{aligned}\]

以上实现的数据增强器是没有任何的人类身体结构先验知识的,只会简单粗暴地对关节进行三种变换,如何在不牺牲生成数据的多样性的前提下,保证生成姿态的合理性,是需要着重解决的问题。本文提出针对part-aware Kinematic Chain Space(KCS)训练判别器来避免把不符合人体结构的姿态数据送去训练。

KCS是将关节点的坐标矩阵转换为一个骨骼矩阵,矩阵的对角元素能表示每个骨骼的长度,其他元素表示骨骼之间的夹角。本文在KCS的基础上,对不同关节进行拆分,分为五个组,即左右胳膊,左右腿,躯干(left/right leg, left/right arm, torso),对每个组进行分别监督,这样有助于维护生成姿态的多样性和合理性。除了3D判别器以外,本文还用了一个2D判别器,来监督生成的2D姿态的大小、视角、位置等。

要让每次生成的姿态具有一定的难度(学习价值),又不能太难以至于损害训练过程,可以用Pose estimation loss的大小来衡量姿态难度,让生成姿态的损失跟增强前的原始姿态损失限制在一定范围内,这样就达到了限制生成难度的目的,具体公式如下:

\[L_{fb} = |1.0 - \exp(L_p(X')-\beta L_p(X))|\]

其中$\beta$控制难度等级,随着训练的进行逐渐增大。同时为了避免训练塌陷,还给BABL的参数加入了正则化的L2 loss

\[L_{reg}(\gamma \in \{\gamma_{ba},\gamma_{bl}\}) = \begin{cases} 0, &\overline{\gamma} < threshold \\ ||\gamma||^2, & otherwise \end{cases}\]

2D3D判别器都使用了LS-GAN Loss