介绍

我们提出Convolutional Pose MachinesCPM)用于结构化预测(如铰接式姿态预测)

通过卷积架构的顺序组合学习隐性空间模型。对图像和多关键点之间的长距离依赖性的隐式学习,学习与推理之间紧密结合。序列化的,并将其与卷积架构所提供的优势相结合。能够直接用上一阶段网络输出的信念图belief map)来产生越来越精细的关键点估计。

设计和训练这种架构的系统方法,以学习图像特征和图像相关的空间模型,用于结构化预测任务,而不需要任何图模型风格的推理。

方法

我们表示第p个标志的像素位置(我们称其为一个关键点), YpZY_p\in \mathcal{Z} 其中 Z\mathcal{Z} 是图像中的所有坐标 (u,v)(u,v)

我们的目标是预测图像中所有 PP 个关键点的位置 Y=(Y1,...,YP)Y=(Y_1,...,Y_P)

pose machine 由一连串的多类别预测器组成 gt()g_t(\cdot) ,训练他们以预测每个关键点在不同层次中的位置。对于每个阶段 t{1...T}t \in \{1...T\} 分类器 gtg_t 预测关键点在每个位置的置信度 Yp=z,zZY_p=z, \forall z \in \mathcal{Z} ,第一阶段的分类器会产生以下的置信度(公式 1):

g1(xz){b1p(Tp=z)}p0...Pg_1(x_z) \to \{b^p_1(T_p=z)\}_{p\in {0...P}}

其中 $ b^p_1(Y_p=z) $ 是分类器在第一阶段 t=1t=1 分配给图像位置 zz 的第 pp 个关键点所预测的分数。

我们把在图像的每个位置 z=(u,v)Tz = (u,v)^T 评估的部分 pp 的所有信念表示为 btpRw×h\text{b}^p_t \in R^{w \times h} ,其中 wwhh 分别是图像的宽度和高度(公式 2):

btp[u,v]=btp(Yp=z)\text{b}^p_t[u,v] = b^p_t(Y_p=z)

所有部分的置信图的集合表示为 btRw×h×(P+1)\text{b}_t \in \mathbb{R}^{w \times h \times (P+1)} 加一是留给“背景”。

在随后的阶段,分类器根据(公式 1)的图像的数据特征与(公式 2)来自每个 YpY_p 周围邻居的前级分类器的上下文信息,预测为每个关键点 Yp=zYp = z,zZ\forall z\in \mathcal{Z} 分配位置的置信度(公式 3):

gt(x,ψt(z,bt1)){btp(Yp=z)}p{0...P+1}g_t(\text{x}^\prime ,\psi_t(z,\text{b}_{t-1}))\to \{b^p_t(Y_p=z)\}_{p\in \{0...P+1\}}

其中 ψt>1\psi_{t>1} 是一个从置信度 bt1b_{t-1}

CPM

使用局部图像证据的关键点定位

第一阶段,CPM根据原始信息提取证据。上图展示了使用深度卷积网络从局部图像证据中检测零件的网络结构。

证据是局部的,该网络第一阶段的感受域被限制在输出像素位置周围的一个小块。

我们的网络由一个由五个卷积层和两个1×1卷积层组成,从而形成一个全卷积的结构。

在实践中,为了达到一定的精度,我们将输入的剪裁图像规范化为368×368大小(详见第4.2节),而上图所示网络的感受域为160×160像素。

该网络从每个160×160图像斑块的局部图像证据回归到一个 P+1P+1 大小的输出向量,该向量代表该图像位置上每个关键点的置信度。

用学习到的空间背景特征进行顺序预测

虽然外观一致的地标(如头部和肩部)的检测率很高,但由于其配置和外观的巨大差异,人体骨骼运动链中较低的关键点的准确率往往低得多。

围绕着一个关键点位置的置信图,尽管存在噪音,但是信息量非常大。如上图,当检测具有挑战性的关键点(例如右肘)时,右肩的热力图具有尖峰(右肩检测的比较好),这可以作为右肘检测的强有力信息。

利用“各个关键点以一致的几何配置出现”这一事实,后续阶段的预测器可以使用图像上位置周围区域的置信图生成空间上下文信息,来提高预测结果。

在我们的CPM中,我们没有一个明确的函数来计算上下文特征,取而代之的是,我们将 φ\varphi 定义为在前一阶段置信图上进行预测时所具有的感受野。

第二阶段网络的输出层实现一个足够大的再感知域,以学习各部分之间潜在的复杂和长距离的相关性。

我们选择使用多个卷积层来在8倍降采样的置信图上得到更大的感受野。

从阶段t>=2t>=2开始共享对应的卷积层参数。

CPM训练

为了解决梯度消失,在每个阶段的输出上都计算损失。
关键点 ppground truth置信图写为 bp(Yp=z)b^p_*(Y_p=z) 由每个人体关键点p所在位置处高斯撒点生成。每个阶段的损失函数如下(公式 4):

ft=p=1P+1zZbtp(z)bp(z)22f_t = \sum^{P+1}_{p=1}\sum_{z\in \mathcal{Z}}||b^p_t(z)-b^p_*(z)||^2_2

整体损失函数自然为(公式 5):

F=t=1Tft\mathcal{F} = \sum^T_{t=1}f_t