配合OpenPose、AlphaPose等网络先提取2D骨骼点,再使用RepNet估计3D骨骼点,并进行姿态估计,目前SOTA。
Abstract
本文解决了从单张图像进行3D人体姿势估计的问题。在很长一段时间内,通过最小化重投影误差来对人体骨骼进行参数化及拟合观察,如今研究人员直接使用神经网络从观测中推断出3D姿态。但是,这些方法大多数都忽略了重投影约束需要最小化且其对过拟合敏感的事实。我们通过忽略2D到3D对应来解决过拟合问题。这有效地避免了简单地存储训练数据,并允许进行弱监督训练。所提出的重新投影网络(RepNet)的一部分使用对抗训练方法来学习从2D姿势分布到3D姿势分布的映射。网络的另一部分估计相机参数,使定义的网络层执行3D姿势向2D的重新投影的估计,从而产生重新投影损失函数。
1 Introduction
从单眼图像估计人的姿势是计算机视觉中非常活跃的研究领域,具有许多应用,例如电影、医学、监视或人机交互。最近的研究能够从单眼图像中以高质量推断3D人体姿势[27、8、21、23、28、32、24、20、19、31]。 但是,最近的大多数方法都使用经过严格训练的神经网络,从输入到输出数据都经过严格分配,例如 [27、8、21、23、28、32、24、19]。这会在相似数据上产生令人惊讶的令人印象深刻的结果,但是一般在推广到未知动作和不同摄像机位置时是有问题的。本文提出了一种使用经过弱监督的对抗学习方法训练的神经网络来克服此问题的方法。我们通过训练鉴别器网络(在生成对抗网络GAN[9]中广泛使用)以学习3D人的姿势分布,来放松训练数据中每个图像都具有特定3D姿势的假设。第二个神经网络从判别器网络学习从检测到的2D关键点的分布(由[25]获得)到有效3D人体姿势的3D关键点的分布的映射。从生成对抗网络的角度来看,这可以看作是生成器网络。为了迫使生成器网络生成与2D观测值匹配的3D姿态,我们建议添加第三个神经网络,该网络根据输入数据预测相机参数。推断的摄像机参数用于将估计的3D姿势重新投影回2D,从而使该框架的名称为:Reprojection Network(RepNet),如图2。另外,为了进一步加强运动学约束,我们建议采用一种易于计算和实现的描述符,以描述受Wandt等人的运动学链空间KCS(kinematic chain space)启发的关键点长度和角度[41]。
与其他工作相比,我们提出的方法在强力解决了特定数据集的过度拟合。我们的实验进一步证实了这一说法,该网络甚至可以推断出不在训练集中的人体姿势和摄像头位置。即使存在强烈的变形或异常的相机姿势,我们的网络也能取得良好的效果,如图1的攀岩图像所示。这导致我们得出的结论是,鉴别器网络并不是从训练集中记住所有姿势,而是学习到了人类能做出的姿势的有意义表达。正如我们将要展示的那样,将KCS包含在鉴别器网络中,对鉴别器的质量起着重要作用。
我们在三个数据集Human3.6M[13]、MPI-INF-3DHP[21]和Leeds Sports Pose[16]上评估我们的方法。在所有数据集上,我们的方法均达到了最好的结果,甚至优于大多数监督方法。此外,我们提出的网络可以在标准硬件上在0.1毫秒内预测人体姿势,当与最新的2D关节检测器(例如OpenPose[5])结合使用时,可以构建一个实时姿态估计系统。我们将开放源码。总结我们的贡献:
- 3D人体姿势的对抗训练方法
- 基于2D重新投影的估计神经网络(RepNet)
- 没有2D-3D对应镜头数据集和未知摄像机下的弱监督训练
- 同时进行3D骨骼关键点估计和相机姿势估计
- 运动链表示网络层,包括有骨骼长度和关节角度信息
- 一个姿势回归网络,可以很好地推广到未知的人类姿势和相机
2 Related Work
与我们的工作最相关的方法可以大致分为两类。第一组由基于优化的方法组成,其中将3D人体模型变形以使其满足重投影误差。第二组包含尝试直接从图像或检测到的关键点直接估算3D姿势的最新方法。
2.1 Reprojection Error Optimization
早期从单幅图像进行人体姿态估计的工作可追溯到1985年的Lee和Chen [18]。他们使用已知的骨长和二元决策树来重构人体姿态。一些作者[15、11、6]建议在大型姿态数据库中搜索3D姿态,以便最好地解释2D观察结果。为了从这些数据库压缩知识,一种广泛使用的方法是使用主成分分析(PCA)或另一种词典学习方法来学习3D人体姿势的完整字典。通常,对通过主成分分析获得的最佳线性碱基组合进行优化[7、43、49、50]。为了限制优化,提出了一些先验条件,例如关节角度限制[1],物理合理性[46]或人体测量学正则化[30、33、42]。其他作品在视频序列[40、2、41、46]中执行时间相干性,或使用其他传感器[37、39、38]。
2.2 Direct Inference using Neural Networks
最近,许多研究人员致力于使用深度神经网络从图像数据或2D检测直接回归3D姿态。几项工作试图构建一个从图像数据中提取3D姿势的端到端系统[27、8、21、23、28、32、19、17、26、29、36、45]。Moreno Noguer [24]学习了从2D到3D距离矩阵的映射。Martinez[20]在2D关节检测上训练了一个深度神经网络,以直接推断3D人体姿势。他们训练了他们的网络,以在基准数据集Human3.6M [13]上实现出色的性能。但是,与Human3.6M训练集中的姿势相比,该网络的参数要多得多,这可能表明该训练集的简单记忆。尽管我们提出的姿势估计网络具有相似数量的参数,但我们的实验表明,我们的对抗训练方法可以避免过度拟合。Hossain等[31]通过使用递归神经网络扩展了[20]的方法,但几乎没有考虑弱监督的特殊情况。Kanazawa泽等[17]提出了一种方法,也可以在没有2D到3D监督的情况下进行训练。与我们的方法相反,他们使用完整的图像信息来训练端到端模型,以重建人体的体积网格。Yang等[45]训练一个多源鉴别器网络来建立一个端到端模型。
3 Method
所提出方法背后的基本思想是,通过学习从输入分布(2D姿势)到输出分布(3D姿势)的映射,使3D姿势从2D观测值回归出来。
在标准的生成对抗网络(GAN)训练中[9],生成器网络学习从输入分布到输出分布的映射,该映射由另一个称为鉴别器网络的神经网络评估。鉴别器经过训练,可以区分数据库中的真实样本和生成器网络中创建的样本。在训练生成器创建被鉴别器预测为真的样本时,鉴别器参数是固定的。生成器和鉴别器是经过交替训练的,因此彼此竞争,直到它们都收敛到最小。
3.1 Pose and Camera Estimation
姿势和摄像机估计网络分为两个分支,一个用于姿势回归,另一个用于估计摄像机参数。接下来,X∈R{3×n}表示3D人体姿势,其中每一列都包含人体节点的xyz坐标。在神经网络中,此矩阵被写为3n维向量。相应地,如果要重建n个节点,则姿势和相机估计网络的输入为2n维矢量,包含图像中检测到节点的坐标。
姿势估计部分由两个连续的残差模块组成,其中每个块具有两个有1000个紧密连接神经元的隐藏层。对于激活功能,我们使用leaky ReLU[12],因其在我们的实验中产生了最好的结果。最后一层输出一个3n维向量,该向量包含3D姿势,并且可以reshape为X。摄像机估
计分支与姿态估计分值具有相似的结构,输出是包含摄像机参数的6维向量。在这里,我们使用只需六个变量定义的弱透视相机模型。取得相机矩阵将输出矢量整形为K∈R{2×3}。
3.2 Reprojection Layer
重投影层采用3D生成器网络的输出姿态X和摄像机估计网络的摄像机K。 然后可以通过以下方式将投影重新投影到2D坐标空间中:W’ = KX。W’在下文中称为2D重投影,这允许定义重投影损失函数: L_{rep}(X, K) = ||W-KX||_F ,其中W是输入的2D姿态观察矩阵,其结构与W’相同。||*||F表示Frobenius范数。请注意,重投影层是仅执行重投影且没有任何可训练的参数的单层。
为了处理遮挡,可以将未检测到的节点所对应在W和X中的列设置为零。这意味着它们将不会对损失函数的值产生影响。根据critic network,姿势生成器网络将使丢失的关节产生幻觉。实际上,产生二维节点检测结果的堆叠式沙漏网络[25]不能预测脊柱关节。因此,在所有实验中,我们将W和X中的相应列设置为零。
3.3. Critic Network
图2中的完整网络与critic network交替训练。critic network最后一层的损失是Wasserstein损失函数[3]。critic network的明显选择是结构类似于姿势回归网络的全连接网络。但是,这样的网络难以检测人体姿势的属性,例如运动链、对称性和关节角度限制。因此,我们遵循Wandt等人[41]的想法,并将他们的运动链空间(KCS)添加到我们的模型中。我们开发了一个KCS层,其中包含一个连续的全连接网络,该网络与全连接路径并行添加。critic network中的这两个路径在输出层之前合并,如图3。
KCS矩阵表示包含关节角度和骨骼长度的人体姿势,并且只能通过两个矩阵乘法来计算。定义内容见上图。因为Ψ中的每个条目都是两个骨骼向量的内积,所以KCS矩阵在其对数上具有骨骼长度,而在其他项上具有(比例)角度表示。与欧几里得距离矩阵[24]相比,KCS矩阵很容易通过两个矩阵乘法计算,这很适合作为附加层。通过给鉴别器网络一个附加的特征矩阵,它不需要自己学习关节长度计算和角度约束。实际上,在我们的实验中,如果没有KCS矩阵,就不可能在身体的左侧和右侧之间实现可接受的对称性。第4.1节显示了添加额外的KCS层如何使3D重建受益。在我们的实验中,在KCS层之后添加卷积层或完全连接的层之间没有区别。接下来,我们将在KCS层之后使用两个完全连接的层,每个层包含100个神经元。结合并行的全连接网络,即图3中的critic结构。
3.4 Camera
由于图2中的相机估算子网络可以产生任何6维向量,因此我们需要强制网络产生描述弱透视相机的矩阵。如果3D姿势和2D姿势以其根关节为中心,则根据等式1相机矩阵K将X投影到W’。弱透视投影矩阵K具有性质 KK^{T} = S^{2}I_2 其中s是投影的比例,I2是2×2不变矩阵。由于标度s是未知的,我们推导了一种计算有效的方法来计算s。标度s等于K的最大奇异值(或ℓ2-范数,这两个奇异值相等)。由于 KK^{T} 的轨迹是奇异值平方的总和,有 s = sqrt{smash[b]{trace(KK^T)/2}} ,损失函数可以被定义为 L_{cam} = ||frac{2}{trace(KK^T)}KK^T-I_2||_F ,其中,||*||F表示Frobenius范数。注意,仅需一次矩阵乘法即可计算二次标度。
3.5 Data Preprocessing
摄像机估计网络推断弱透视摄像机的参数。这意味着相机矩阵包含旋转分量和缩放分量。为了避免相机和3D姿势旋转之间的歧义,应删除3D姿势中的所有旋转和缩放分量。这是通过将每个3D姿势与模板姿势对齐来完成的。为此,我们通过procrustes对齐计算相应肩部和髋部节点的理想旋转度和比例。生成的变换将应用于所有关节。
根据图像中人的大小,二维节点检测可以具有任意比例。为了去除比例分量,我们将每个2D姿态矢量除以其标准偏差。请注意,使用这种缩放技术,同一个人可以根据相机和3D姿势而具有不同大小的2D姿势表示。但是,所有可能的2D姿势的值都受到限制。其余的比例变化由相机比例组件补偿。与[20]不同,我们不需要知道训练集的均值和标准差,这样可以轻松地将我们的方法转移到2D姿势的不同领域。
3.6 Training
我们实施了[10]的改进的Wasserstein GAN训练程序。根据我们的经验,与使用二进制交叉熵或类似损失函数的传统Wasserstein GAN[3]和标准GAN训练[9]相比,这种方法可以实现更好更快的收敛。我们使用0.001的初始学习速率,每10个周期以指数衰减。
4 Experiments
在不针对特定训练集时,网络效果能达到当前比较好的水平;在针对特定训练集训练后,网络能达到sota。
2D节点生成器的误差是错误率的主要原因。
4.6 计算时间
当前的2D骨骼节点检测器在普通机器上能达到100ms/图,我们的网络对每张图额外增加0.05ms,可以说是毫无影响。
5 Conclusion
本文介绍了RepNet:一种用于3D人体姿势估计神经网络的弱监督训练方法,该方法可从单个图像中的2D关节检测推断出3D姿势。我们建议使用额外的相机估计网络和新颖的重投影层,将估计的3D姿态投影回2D。通过利用神经网络研究中的最新技术,例如改进的Wasserstein GAN [10]和运动链空间[41],我们能够开发一种不需要2D到3D对应的弱监督训练程序。这不仅优于以前的弱监督方法,而且避免了网络对有限数量的训练数据的过度拟合。即使与大多数监督方法相比,我们仍在基准数据集Human3.6M上实现了最先进的性能。使用在Human3.6M 上训练的网络从MPI-INF-3DHP数据集的未知数据预测3D姿态,显示出比所有其他方法都有改进。我们还对LSP数据集进行了主观评估,即使在姿势和视角不常见的图像上也能获得良好的重建效果。