论文阅读理解 - Learning Feature Pyramids for Human Pose Estimation
该论文提出了一种增强DCNNs对尺度变化鲁棒性的方法,通过Pyramids Residual Module(PRMs)和小时glass网络(Hourglass Network)结合,用于人体姿态估计任务。PRMs用于学习输入特征的不同分辨率滤波器,增强网络的尺度不变性;小时glass网络通过堆叠处理不同尺度的特征,进一步提升姿态估计的精度。实验结果表明,该方法在MPII和LSP数据集上表现优异,验证了其有效性。
Learning Feature Pyramids for Human Pose Estimation
在推理过程中,Pyramids类方法被广泛应用于处理尺度变化问题。该方法通过提出金字塔残差模块(PRMs)——Pyramid Residual Module,以增强DCNN在尺度上的不变性(invariance in scales)。此外,该方法还采用Hourglass网络,结合conv-deconv结构,并提出了一种新的权重初始化方法,用于对multi-branch网络进行权重初始化。
- 目标:
增强 DCNNs 对于尺度变化的鲁棒性;
- 方法:
PRMs,学习卷积 filter,建立特征金字塔;
给定输入 features,PRM采用多分支网络基于不同采样率进行下采样操作,以获取不同尺度的特征;
然后,对不同尺度的特征学习卷积 filters;
再对 filtered 特征 下采样到相同分辨率,并相加不同尺度特征.
1. Stacked Hourglass Network
Hourglass 网络以 feed-forward 方式学习每个 scale 的信息.
首先,对 feature maps 下采样,bottom-up 处理;
然后,对 feature maps 进行上采样处理,采用自顶向下的方式;并结合底层特征的高分辨率信息;如图 2(b)所示。
反复进行bottom-up和top-down操作,设计一个stacked hourglass网络,在每个stack的末端引入中间监督。

Figure 1. single “hourglass” 模块例示. 每一个 box 对应一个 residual 模块.
Residual Unit:

基于残差单元构建了该网络的模块结构,然而,该方法仅能提取单一尺度的视觉特征和语义信息。
Stacked Hourglass Network 训练的中间监督处理:

Figure 1.1 中间监督模块的处理流程。网络输出的heatmaps(以蓝色框表示)随后与训练损失进行结合。通过1×1卷积操作,将提取的heatmaps与中间特征的通道数进行对应。
2 Pyramid Residual Modules(PRMs)

Figure 2展示了所提出的框架结构。框架分为两个主要部分:(a)展示了网络架构,包含 n 个堆叠的 hourglass 网络;(b)详细描述了每个 hourglass 网络的结构。在每层 hourglass 网络的末端,均生成了对应 joint 位置的 scoremap,并采用 squared error loss 作为损失函数进行优化。
PRM 学习输入 features 的不同分辨率的 filters.
记 \mathbf{x}^{(l)} 和 \mathbf{W}^{(l)} 分别为输入和第 l 层的 filter.
PRM 表示为:
\mathbf{x}^{(l+1)} = \mathbf{x}^{(l)} + \mathcal{P}(\mathbf{x}^{(l)}; \mathbf{W}^{(l)})
其中,符号 \mathcal{P}(\mathbf{x}^{(l)}; \mathbf{W}^{(l)}) 表示 feature pyramids,特征金字塔,其形式为:
\mathcal{P}(\mathbf{x}^{(l)}; \mathbf{W}^{(l)}) = g \left( \sum_{c=1}^{C} f_c(\mathbf{x}^{(l)}; \mathbf{w}_{f_c}^{(l)}), \mathbf{w}_{g}^{(l)} \right) + f_0(\mathbf{x}^{(l)}; \mathbf{w}_{f_0}^{(l)})
-
C - pyramid 层的数量;
-
f_c(\cdot) - 第 c 层 pyramid 层的变换;
-
\mathbf{W}^{(l)} = \{\mathbf{w}_{f_c}^{(l)}, \mathbf{w}_{g}^{(l)} \}_{c=0}^{C} - 参数
变换的输出相加,再采用 fliter g(\cdot) 卷积.
如图3所示,PRM采用瓶颈结构设计,旨在降低计算复杂度和空间复杂度。例如,在图3中,通过卷积操作降低特征维度;随后,通过3×3卷积对下采样后的特征集提取新特征;最后,将所有新特征上采样至相同维度并进行叠加。

Figure 3展示了PRMs的结构示意图。图中虚线部分表示恒等映射。具体来说,(a)图中的PRM-A方法通过将输入的特征图从不同层级独立分离来构建金字塔结构;(b)图中的PRM-B方法则采用了共享输入的方式;(c)图中的PRM-C方法通过使用concatenation操作取代简单的加法,类似于inception模型的结构;(d)图中的PRM-D方法则采用了dilated卷积的方式,类似于ASPP-Net,而避免了传统的池化操作来构建金字塔结构。
2.1 生成输入特征的金字塔
通常采用 max-pooling 和 average-pooling 方法来减少 feature maps 的分辨率,以实现平移不变性。
然而,池化操作若采用整数因子至少为2,会导致feature maps的分辨率迅速下降,变得粗糙,难以有效生成金字塔结构。
在此基础上,我们应用 fractional max-pooling 来模拟传统图像金字塔的平滑化处理和降采样处理,以获得多分辨率特征图。
第 层金字塔的下采样率计算:
s_c = 2 ^{-M \frac{c}{C}}, c = 0,...,C, M \geq 1
这里 s_c \in [2^{-M}, 1] 表示相对于输入 features 的分辨率.
例如,当 c=0,输出与其输入分辨率相同.
当 M=1, c=C,输出 map 的分辨率是其输入的一半.
实验中,设置 M=1, C=4,金字塔的最小尺度得到的 map 分辨率是其输入的一半.
2.2 讨论
PRM 可以作为 CNN 结构的关键组件,应用于人体姿态估计任务、图像分类任务以及深度图像分类任务。
- Pyramid 结构的变形:
从图3(a-b)可以看出,通过max-pooling、卷积操作和上采样构建特征金字塔。
如 Figure 3(c),PRM-D,采用 dilated convolution 来计算特征金字塔;
如图3(b)所示,PRM-C方法中,金字塔层次特征除了通过累加(summation)处理,还可以通过连接(concatenation)实现。
提供的[Code-Torch] 应该是基于 PRM-B 模型.
提供的[Code-Torch] 应该是基于 PRM-B 模型.
Figure 3b,PRM-B表现出色,但参数数量较少,计算复杂度不高.
提供的[Code-Torch] 应该是基于 PRM-B 模型.
- 权重共享:
现有方法,如HOG,对不同层级的图像金字塔结构进行学习,以构建特征金字塔。处理过程对应于共享的金字塔结构,使用不同层级的权重参数W_fc^(l)进行操作。
权重共享有效的减少了参数量.
- 复杂度
经残差单元的降维处理,该网络的残差单元的输入和输出维度从256-d降至128-d。
这里采用该 residual unit 对原始尺度分支处理.
由于低分辨率的特征包含较少的信息量,因此在本研究中,我们仅在小尺度分支区域采用少量特征通道。
例如,给定 PRM,有 5 个分支,对于小尺度分支有 28 个 feature channel.
参数和 GFLOPs 的复杂度大约只增加了 10%.
3 网络训练和推断
3.1 训练
- 采用 score maps 来表示关节点位置:
记 groundtruth 位置为 \mathbf{z} = \{ \mathbf{z} _{k=1}^{K} \}
\mathbf{z} _k = (x_k, y_k) 为图像中第 k 个关节点的位置.
groundtruth score map \mathbf{S} _k 被定义为基于均值 \mathbf{z}_k 和方差 \Sigma 的 Gaussian 分布。
\mathbf{S}_k(\mathbf{p}) \sim \mathcal{N} (\mathbf{z}_k, \Sigma)
\mathbf{p} \in R^2 -关节点位置;
- 单位矩阵 identity matrix \mathbf{I} .
该网络估计 K 个关键点的热图,S^ = { S^k }{k=1}^{K}
- Loss 函数:
每个 hourglass network stack 的末尾添加 squared error loss:
\mathcal{L} = \frac{1}{2} \sum_{n=1}^{N} \sum _{k=1}^{K} ||\mathbf{S}_k - \hat{\mathbf{S}}_k||^2
N - 样本数
3.2 推断
最后的 hourglass stack 模型生成的 scoremaps 中,选取最大值位置作为关键点位置 \hat{\mathbf{z}}_k。
\hat{\mathbf{z}}_k = arg max _{\mathbf{p}} \hat{\mathbf{S}}_k(\mathbf{p}), k=1,...,K
3.3 网络初始化方法
主要是提出 multi-branch 网络初始化方法.
初始化在深度网络的训练中扮演着关键角色,尤其是在像素级的 dense prediction任务中表现尤为突出。在 dense prediction任务中,全卷积网络因显存消耗较高,因而不得不采用较小的minibatch进行处理。
3.4 Output Variance Accumulation 输出方差的累积问题
恒等映射(Identity mapping)将导致随着网络深度的增加,响应的变化趋于加剧,从而显著增加优化难度。

当两个残差单元的输出进行相加时,此处采用批归一化和ReLU之后接的卷积来替代恒等映射,如图6所示。

4 实现和结果
4.1 实现细节
-
输入图片根据标注的人体位置和 scale ,从 resized 图片中裁剪尺寸 256×256.
-
LSP test 集:
直接采用图像中心作为人体位置,根据图片尺寸估计人体 scale;
- 训练数据增广:
scaling,rotation,flipping,color noise等;
- 采用 Torch 训练
采用的优化方法是 RMSProp,使用了 4 张 Titan X GPU 卡,每批处理 16 个样本,每张 GPU 赋予 4 张图片,经过 200 轮训练。
-
初始化学习率 7 × 10^{-4},在 150 epoch 和 170 epoch 各减少 10×.
-
Testing 对 6-scale 图像 Pyramids 并 flipping 进行.
4.2 Results
网络初始化方法对比:

MPII 和 LSP 数据集上不同方法对比:


