解读Facebook AI Research in CVPR2019: 《3D human pose estimation in video with temporal convolutions and semi-supervised training》
该文章创建了一个方法“将3D的姿态估计问题转化为2D关键点的检测问题“。然而,是否能将多个3D姿态完美映射成为同一个2D关键点一直以来都存在很大争议。
之前的方法通常是利用RNN网络对时间维度进行建模,例如:《Exploiting temporal information for 3d pose estimation》和《3d pose estimation based on joint interdependency》;
事实上,采用卷积网络同样可以达到对时间维度进行建模并且相较于传统的RNN网络效果也并不差,这其中就包括如:neural machine translation, language modeling, ** speech generation**, speech recognition等。而且,采用卷积网络的另一大优势是对于大量frames可以并行处理,这一点RNN网络无法做到。
基于以上结论, 该work提出了一个Temporal Convolutional Model, 该种结构接受2D keypoint sequences作为输入,最终输出3D pose extimation; 且该方法优势在于:
1. 兼容任意的2D Keypoint Detector;
2. 能够有效的解决large context(背景过大)问题 — 采用Dilated Convolutions
3. 就计算复杂度和参数量来说,比传统的RNN-based方法有同样量级的精度的同时更简单且更有效率
4. 采用“semi-supervised approach”, 可以更有效的处理训练集的标签稀少的情况 (和之前的semi-supervised方法不同,这里仅需要相机内参而不再需要实际的2D标注或者是带有相机外参的多视角图像),
之所以引进了新的半监督训练策略去利用未标记的视频,是因为对于需要大量标记的训练数据并收集用于3D人体姿态估计的标签的NN模型来说,低资源的设定情况尤其具有挑战性,这需要非常昂贵的动捕装置及相当长的信息记录采集工作
。
如下图 takes 2D key- point sequences (bottom) as input and generates 3D pose estimates as output (top), 中间结构为dilated temporal convolutions.
传统大多数的3D姿态估计都是基于特征工程和对骨骼于关节运动的假设【48,42,20,18】,最早基于CNN的方法主要是通过无需中间监督直接从RGB图像预测3D姿态的端到端的重建来进行3D姿态预测【28,53,51,54】
其中最成功的方法是从2D关键点的运动轨迹(2D keypoint trajectories)中进行学习, 本文也是基于此方法。
文章中提出的模型是一个全卷积结构且带有残差连接,其采用一个2D的姿态序列作为输入,通过时域卷积进行变换操作。之所以这样做是因为RNN无法并行处理时间序列,而卷积模型就可以并行处理所有batch的2D姿态信息和时间维度信息。
在卷积模型中输入输出之间的梯度路径都是一个固定长度,而不论序列本身长度的大小,这样可以有效的减少梯度消失/爆照的风险(相较于RNN)。此外,卷积结构对时间维度的感受野有精准的控制,这有利于3D姿态预测模型的时间依赖性。再者,采用扩张卷积对长时间的以来建模,同时保持了效率。类似的结构在音频生成/语义分割/机器翻译/上的取得了不错的结果。
上图即文中提到的全卷积3D姿态预测结构的一个实例:
上面整个架构,将每帧的J个关节点的坐标(x, y) 做concat后作为输入项, 传入时域卷积(kernel_size=W; channels=C),然后应用B个残差网络风格的残差块 , 来形成一个skip-connection(跳层连接);每个残差快执行1D卷积操作(kernel_size=W;Dilation factor: D=W^B), 接着进行1X1的2D卷积操作,并且除了最后一层,每一层的人1x1卷积操作后都要做一次BatchNorm,RELU和Dropout操作。 这样一来, 每个block都通过参数W,进行了感受野的指数倍放大,同时新增的参数量只是线性的增长。超参数W和D的设置目的是使得感受野对于任意输出帧都是一种树状结构。最后一层输出包含对输入全部帧的3D姿态, 同时考虑了future和past的时间信息。(通过因果卷积(只对过去的信息进行卷积)来试验以上结构在实时场景的效果)
引入半监督训练方法是为了在没有足够的3D ground-truth姿态数据的标签的时候尽可能提高预测准确率,因为实际3D姿态预测的标注非常困难。利用现有的2D姿态检测器和unlabeled视频,将back-projection loss加入到supervised loss中。
关于解决unlabeled数据的自动编码问题:encoder执行从2D关节坐标信息得到的3D姿态预测结果, 同时decoder(projection layer)把3D姿态反响映射回2D关节坐标, 然后对decoder输出的2D关节坐标与原始输入坐标的误差做重建损失计算
如上图所示, 带有一个3D姿态模型的半监督训练采用了一个预测的2D姿态作为输入,通过对人体3D运动轨迹做回归并且增加了一个soft-constraint来将unlabeled预测的骨骼长度的平均值对应匹配到labeled的数据中。并且所有的都放在一起做训练,其中的“WMPJPE”代表带权重的MPJPE
从上图可以看到,该方法包含一个监督部分和一个非监督部分(充当正则化),并且这两个对象是联合优化的:labeled数据占据一个batch的前半部分,unlabeled数据则占据一个batch的后半部分。然后,采用ground-truth 3D姿态作为训练目标去训练labeled数据来得到一个supervised loss; unlabeled数据则被用于训练autoencoder loss;用来约束把3D姿态投影回2D的过程,然后检查它的输入的连贯性。
根据透视投影的原理, 屏幕上的2D姿态都取决于运动轨迹(空间中人体root joint的全局位置)以及3D姿态(人体所有关节相对于root joint的位置)。这里,如果没有全局位置,物体则会永远被以一个固定的scale重新投影到屏幕中央。因此,对人体的3D运动轨迹做回归,可以使其正确的投影回2D。为此,本文又花了第二个网络来在camera space中回归全局的运动轨迹。后者再被投影回2D之前被添加到3D姿态。这两个网络拥有相同的结构但是不共享任何权重,因为,本文发现在进行多任务训练时两者会互相产生负面影响。因为随着目标物体逐渐远离camera的时候,想要回归得到精确地运动轨迹变得愈加困难,所以这里为运动轨迹引入了一个带权重的平均每个关节点位置误差损失函数(WMPJPE loss):
E = 1 y z ∣ ∣ f ( x ) − y ∣ ∣ E = \frac{1}{y_z}|| f(x) - y || E=yz1∣∣f(x)−y∣∣
即, 对每一个样本给定一个camera space的ground-truth深度 y z y_z yz的倒数作为权重。 因为对处于很远处的对象做回归得到精确地运动轨迹不是目标,因为这样对应到2D上的关节点会集中在一个很小的区域。
采用激励方式去预测大概的3D姿态要比单出的复制输入要更加合理。为此,如上图,文章发现: 对labeled batch中的目标对象,增加一个soft constraint来大概的匹配平均骨长度更加有效。这个操作在自监督的训练中作用很大。
上面提出的方法仅需要相机内参即可:focal length/focus/distorsion factor; 此方法不需要一个特定的网络结构,并且能够应用到任意一种采用2D关节点作为输入的3D姿态detector。实验中,采用了时域空洞卷积模型来讲2D姿态映射到3D。为了再讲3D姿态映射回2D,文章采用了一个简单地投影层(考虑线性参数:focal length/principle point以及非线性参数:tangential/radial), 观察到非线性项(镜头畸变)对于数据及Human3.6M的姿态预测矩阵影响很小,但我们还是把这写因素考虑进来,目的是为了增加模型的准确性,使其更加能经确定描述真实的相机投影过程。
共两种动捕数据集:
protocol 1 :毫米级的平均关节点位置误差 (MPJPE) 就是 预测关节位置和ground-truth关节位置的平均欧氏距离;
protocol 2 :通过平移/旋转/缩放(P-MPJPE)与ground-truth刚性对齐产生的误差;
protocol 3 :在半监督实验中,尽在scale(N-MPJPE)上讲ground-truth姿态和预测姿态对齐
之前的绝大多数工作都是从图片中提取人体ground-truth bounding box,然后在这个实际的边界框范围内应用stacked hourglass detector来预测2D关节点位置。本方法则不依赖任何特殊的2D关节检测器,因而探究了一些没有经过ground-truth边框标注的2D检测器,来让他们应用本实验方法:例如, 骨干网络是ResNet-101-FPN的Mask R-CNN,把它的参考实现用在Detectron,以及CPN(作为FPN的扩展)。CPN需要提供人体bounding box。