论文阅读理解 - Learning Feature Pyramids for Human Pose Estimation
Learning Feature Pyramids for Human Pose Estimation
在 Inference 时,Pyramids 类方法被广泛用于处理 scale 变化.
- 提出 Pyramid Residual Module(PRMs) —— 金字塔残差模块,来增强 DCNNs 的尺度不变性(invariance in scales);
- Hourglass 网络,conv-deconv 结构;
- 提出新的权重初始化方法,对 multi-branch 网络权重进行初始化.
-
目标:
增强 DCNNs 对于尺度变化的鲁棒性;
-
方法:
PRMs,学习卷积 filter,建立特征金字塔;
给定输入 features,PRMs 采用 multi-branch 网络基于不同采样率进行下采样,以获得不同尺度的特征;
然后,对不同尺度的特征学习卷积 filters;
再对 filtered 特征 下采样到相同分辨率,并相加不同尺度特征.
1. Stacked Hourglass Network
Hourglass 网络以 feed-forward 方式学习每个 scale 的信息.
首先,对 feature maps 下采样,bottom-up 处理;
然后,对 feature maps 上采样, top-down 处理;并结合 bottom layers 的更高分辨率特征;如 Figure 2(b).
重复多次 bottom-up 和 top-down,构建 stacked hourglass 网络,在每个 stack 的末尾添加中间监督.
Figure 1. single “hourglass” 模块例示. 每一个 box 对应一个 residual 模块.
Residual Unit:
采用 residual unit 来构建 hourglass 网络 block. 但其只能捕捉一个尺度的视觉特征和语义.
Stacked Hourglass Network 训练的中间监督处理:
Figure 1.1 中间监督处理. 网络输出 heatmaps(蓝色框) ,其后添加训练 loss. 采用 卷积将 heatmaps 来匹配 intermediate 特征的 channels 数.
2 Pyramid Residual Modules(PRMs)
Figure 2. 框架. (a) 网络结构,有 个 stacks hourglass 网络. (b) 每个 hourglass stack 的细节. 每个 hourglass 的末尾产生 joint 位置的 scoremaps,并使用 squared-error loss.
PRM 学习输入 features 的不同分辨率的 filters.
记 和 分别为输入和第 层的 filter.
PRM 表示为:
其中, 为 feature pyramids,特征金字塔,其形式为:
- - pyramid 层的数量;
- - 第 层 pyramid 层的变换;
- - 参数
变换的输出相加,再采用 fliter 卷积.
PRM 例示如 Figure 3. 每个 设计为 bottleneck 结构,以降低计算和空间复杂度. 例如, Figure 3 中,采用 卷积来降低特征维度;然后采用 卷积对下采样的输入特征集计算新特征;最后,将所有的新特征上采样到相同维度,并相加在一起.
Figure 3. PRMs 结构. 虚线表示恒等映射(identity mapping). (a) PRM-A, 将输入 feature maps 从不同金字塔层独立分离;(b) PRM-B,对于所有的金字塔层采用共享输入;PRM-C 采用 concatenation 取代 addition 来组合从金字塔层得到的特征,类似于 inception 模型;(c) PRM-D,利用 dilated 卷积,类似于 ASPP-net,而不是采用 pooling 来构建金字塔. 虚线梯形表示跳过下采样和上采样.
2.1 生成输入特征的金字塔
DCNNs一般应用 max-pooling 和 average-pooling 来降低 feature maps 的分辨率,编码其平移不变性.
但,pooling 采用至少为 2 的整数因子,会导致 feature maps 的分辨率降低很快,很粗糙;不能很好的生成金字塔.
因此,这里采用 fractional max-pooling 来逼近传统图像金字塔的平滑和下采样处理,以得到不同分辨率 feature maps.
第 层金字塔的下采样率计算:
这里 表示相对于输入 features 的分辨率.
例如,当 ,输出与其输入分辨率相同.
当 ,输出 map 的分辨率是其输入的一半.
实验中,设置 ,金字塔的最小尺度得到的 map 分辨率是其输入的一半.
2.2 讨论
PRM 可以用于 CNN 结构的基础模块,如 stacked hourglass networks-姿态估计, Wide Residual Nets-图像分类,ResNeXt-图像分类.
-
Pyramid 结构的变形:
如 Figure 3(a-b),采用 max-pooling,convolution 和 upsampling 学习特征金字塔;
如 Figure 3(c),PRM-D,采用 dilated convolution 来计算特征金字塔;
如 Figure 3(b),PRM-C,金字塔不同层次特征除了采用相加(summation)处理,还可以采用 concatenation;
Figure 3(b),PRM-B 具有相当的表现,但参数相对较少,计算复杂度较低. 【提供的[Code-Torch] 应该是基于 PRM-B 模型.】
-
权重共享:
传统方法,如 HOG,对不同层次的图像金字塔学习,以生成特征金字塔. 处理过程对应于共享金字塔 不同层次的权重 .
权重共享有效的减少了参数量.
-
复杂度
stacked hourglass network 的 residual unit 的输入和输出是 256-d,在residual unit 降低到 128-d.
这里采用该 residual unit 对原始尺度分支处理.
由于小分辨率的特征包含相对较少的信息,故这里对小尺度分支采用小的特征 channel.
例如,给定 PRM,有 5 个分支,对于小尺度分支有 28 个 feature channel.
参数和 GFLOPs 的复杂度大约只增加了 10%.
3 网络训练和推断
3.1 训练
-
采用 score maps 来表示关节点位置:
记 groundtruth 位置为
为图像中第 个关节点的位置.
groundtruth score map 是均值 和方差 的 Gaussian 分布:
-关节点位置;
- 单位矩阵 identity matrix .
每个 hourglass network 预测 个关节点的 score maps,
-
Loss 函数:
每个 hourglass network stack 的末尾添加 squared error loss:
- 样本数
3.2 推断
-
最后一个 hourglass stack 预测的 score maps,取 scoremap 的最大值位置,作为关节点位置 .
3.3 网络初始化方法
主要是提出 multi-branch 网络初始化方法.
对于深度网络的训练,初始化很重要,尤其是像素级的 dense prediction. 在 dense prediction 中,由于全卷积网络需要较多的显存消耗,只能采用小 minibatch.
3.4 Output Variance Accumulation 输出方差的累积问题
恒等映射 Identity mapping 会导致随着网络的加深,响应的变化逐渐增加,使得优化难度增大.
当两个 residual units 的输出相加时,这里采用 batch_normalization 和 ReLU 后接 的卷积来代替恒等映射. 如 Figure 6.
4 实现和结果
4.1 实现细节
输入图片根据标注的人体位置和 scale ,从 resized 图片中裁剪尺寸 .
-
LSP test 集:
直接采用图像中心作为人体位置,根据图片尺寸估计人体 scale;
-
训练数据增广:
scaling,rotation,flipping,color noise等;
采用 Torch 训练
网络优化方法为 RMSProp,4 Titan X GPUs,mini-batch size 为 16,每张 GPU 4 张图片,200 epoches.
初始化学习率 ,在 150 epoch 和 170 epoch 各减少 .
Testing 对 6-scale 图像 Pyramids 并 flipping 进行.
4.2 Results
网络初始化方法对比:
MPII 和 LSP 数据集上不同方法对比: