论文:Deep High-Resolution Representation Learning for Human Pose Estimation - CVPR2019

作者:Ke Sun1, Bin Xiao, Dong Liu, Jingdong Wang

团队:University of Science and Technology of China, Microsoft Research Asia

源码:Github - deep-high-resolution-net.pytorch

主页:Projects - Deep High-Resolution Representation Learning

1. 概述

在人体姿态估计问题中,学习可靠的高质量分辨率的特征图(heatmaps),是比较重要的. 现有很多方法往往是根据由高分辨率到低分辨率的网络(high-to-low resolution network)产生的低分辨率特征图,来重构高分辨率的特征图表示. 如:

[1] - Hourglass 网络结构:

image

image

[2] - Cascaded pyramid networks 网络结构:

image

image

[3] - SimpleBaseline 网络结构(低分辨率到高分辨率的处理采用的是 transposed conv.):

image

image

[4] 结合 dilated convolutions 的网络结构(注: reg. = regular convolution, dilated = dilated convolution, trans. = transposed convolution, strided = strided convolution, concat. = concatenation):

image

image

上面这些方法中,

  • [1] 中,高分辨率到低分辨率的处理与低分辨率到高分辨率的处理过程是对称的.
  • [2], [3] 和 [4] 中,高分辨率到低分辨率的处理,可以看作是分类网络的一部分(如 ResNet 和 VGGNet),比较重(heavy); 而低分辨率到高分辨率的处理是比较轻量的(light).
  • [1] 和 [2] 中,高分辨率到低分辨率处理和低分辨率到高分辨率处理的相同分辨率层间的跳跃链接(skip-connections)(虚线连接),主要用于融合低层特征和高层特征.
  • [2] 中,右边的部分,refinenet,通过卷积操作,融合了低层特征和高层特征.

而,论文提出的方法是,首先采用高分辨率的子网络作为第一阶段;然后逐渐添加高分辨率到低分辨率的子网络,得到多个阶段的输出;最后,并行的连接多分辨率子网络的输出. 其进行了多次多尺度融合(multi-scale fusions),因此,使得每一个高分辨率到低分辨率的特征图表示,都可以一次又一次地从其它并行表示分支接收信息,从而得到信息更丰富的高分辨率表示. 最终,网络输出的关键点heatmap 更精确,空间分辨率精度更高.

论文提出的网络结构HRNet(High-Resolution Net),如图:

image

image

图1. HRNet 图示. 包含多个并行的高分辨率到低分辨率的子网络,实现跨多分辨率子网络的信息交换(即:多尺度融合). 图中水平方向和垂直方向分别表示网络的深度和特征图的尺度.

HRNet 能够在网络整个过程中保持特征的高分辨率表示.

HRNet 的优势之处:

[1] - HRNet 并行地连接各高分辨率到低分辨率子网络的输出,而不是被较多采用的串行连接. 因此,HRNet 能够一直保持高分辨率表示,而不是采用低分辨率到高分辨率的处理来重构高分辨率表示,故 HRNet 的 heatmap 具有更高的空间精确度.

[2] - 特征融合一般采用的是,底层特征表示与高层特征表示的聚合融合;而,HRNet 采用的重复性的多尺度融合,基于相同网络深度和相似特征层的低分辨率表示的辅助,来提升高分辨率的表示能力,以使得高分辨率的表示更有助于姿态估计.

2. HRNet

人体姿态估计,也叫做关键点检测,旨在检测 W×H×3 的图片 IK 个关键点或人体部分的位置(如,elbow, wrist 等). 一般是将问题转换为,估计 KW×H 的 heatmaps,{H1,H2,...,HK} 的问题,其中,heatmap Hk 表示第 k 个人体关键点的位置置信(location confidence).

HRNet 采用了流行的技术方案,采用 CNN 网络来预测人体关键点,其主要包括两个衰减特征分辨率的步长卷积(strided conv)网络:主干网络(main body)输出与输入特征图相同分辨率的特征图(feature maps);一个回归器,用于估计 heatmaps 中关键点的位置,并转换回原来的全分辨率. HRNet 关注于主干网络的设计, 如 Figure1.

2.1. 序列化的多分辨率子网络

序列化的多分辨率子网络(sequential multi-resolution subnetworks)

人体姿态估计网络,是采用序列地连接各高分辨率到低分辨率的子网络进行构建的,其中,每个 stage 的每个子网络都是包含多个卷积序列,且,在邻近的子网络间,会有下采样层,以将特征分辨率减半.

Nsr 为第 s 个 stage的子网络,r 为分辨率索引(特征图分辨率是第一个子网络分辨率的 12r1).

包含 S 个 stages 高分辨率到低分辨率的网络可以表示为(假设 S=4):

N11N22N33N44

2.2. 并行化多分辨率子网络

并行化多分辨率子网络(parallel multi-resolution subnetworks)

采用一个高分辨率的子网络作为第一个 stage,然后一个接一个的逐渐添加高分辨率到低分辨率的子网络,并并行地连接各个多分辨率子网络. 因此,后一个 stage 的并行子网络的分辨率特征包含了其前一 stage 的分辨率特征以及额外的低分辨率的特征.

例如,包含 4 个并行子网络的网络结构,如下:

image

image

2.3. 重复地多尺度融合

重复地多尺度融合(repeated multi-scale fusion)

HRNet 中引入 exchange units 来对并行子网络进行信息交换,使得每个子网络能够重复地接收其它并行子网络的信息.

exchange units 的信息交换机制,如图:

image

image

将三个 stage 划分为几个 exchange blocks(如,3 个),每个 block 由 3 个并行卷积组成.

图中,Csrb 表示第 s 个 stage 的第 b 个 block 的第 r 个分辨率的卷积unit;εsb 表示对应的 exchange unit.

exchange unit 如图 Figure3 所示:

image

image

图3. 从左到右分别表示了,exchange unit 聚合高分辨率、中分辨率、低分辨率的信息的过程.

Figure3 的公式化的说明如下(简单起见,简化了下标s 和上标b):

输入是 s 个响应图(response maps): {X1,X2,...,Xs}.

输出也是 s 个响应图:{Y1,Y2,...,Ys},其分辨率与其输入相同.

每个输出都是 s 个输入响应图的聚合: Yk=i=1sa(Xi,k).

跨多个 stages 的exchange unit 还有一个额外输出的响应图:Ys+1=a(Ys,s+1).

函数 a(Xi,k) 包含 Xi 从分辨率 i 到分辨率 k 的上采样或降采样处理.

这里,降采样通过 strided 3×3 卷积来实现的. 例如,一个步长为 2 的 strided 3×3 卷积能够实现 2x 的降采样;两个连续的步长为 2 的 strided 3×3 卷积能够实现 4x 降采样.

上采样则采用的是最近邻采样(nearest neighbor sampling),并在其后接 1×1 卷积以对其特征的通道数.

如果 i=k,则函数 a(,) 即为恒等映射:a(Xi,k)=Xi.

2.4. Heatmap 估计

Heatmap estimation.

只采用最后一个 exchange unit 输出的高分辨率特征表示,来回归 heatmaps. 其经验性的被证明比较有效.

loss 函数采用的是均方差误差(mean squared error),对预测的 heatmaps 和 groundtruth heatmaps 进行计算.

groundtruth heatmaps 是通过以关键点 groundtruth 坐标(x, y) 为中心,采用 1 pixel 标准差的 2D Gaussian 生成.

2.5. 网络实例化

网络实例化(Network instantiation)

关键点 heatmaps 估计网络的实例化,采用了 ResNet 的设计原则,将网络深度(depth) 分发到每个 stage,将网络通道数(channels) 分发到每个分辨率.

HRNet 的主干网络,包含有 4 个并行子网络的 4 个stages,其分辨率逐渐衰减一半,对应的,网络宽度(width)(通道数) 增加 2 倍.

第一个 stage 包含 4 个残差单元(residual units),与 ResNet50 相同,每个残差单元是由宽度为 64 的 bottleneck 组成,其后接一个 3×3 卷积,以将特征图宽度降低到 C.

第 2,3,4 个 stages 中分别包含 1,4,3 个 exchange blocks.

每个 exchange block 包含 4 个残差单元,每个参差单元在每个分别率都包含 2 个 3×3 卷积和一个跨分辨率的 exchange unit. 也就是说,总共包含 8 个 exchange units,共进行了 8 个多尺度融合.

实现中,采用了一个小网络 HRNet-W32 和一个大网络 HRNet-W48. 其中,32 和 48 分别表示在最后三个 stages 中高分辨率子网络的宽度(C). HRNet-32 的其它三个并行子网络的宽度分别是 64,128,256. HRNet-48 的其它三个并行子网络的宽度分别为 96, 192, 384.

3. Experiments

3.1. COCO Keypoints Detection

数据集:COCO 数据集包含超过 200000 张图片,250000 个标注的人体实例,每个人体包含 17 个关键点. 模型训练采用的 COCO train2017 数据集共有 57K 张图片,150K 人体实例. 在 val2017 和 test-dev2017 数据集上验证模型,其分别包含 5000 张图片和 20K 张图片.

评价度量: COCO 提供的标注评价度量标注是基于 Object Keypoint Similarity(OKS):

OKS=iexp(di22s2ki2)δ(vi>0)iδ(vi>0)

其中,di 是检测的关键点与 groundtruth 关键点之间的欧氏距离;vi 是 groundtruth 关键点的可见性标志;s 是目标的尺度;ki 是控制衰减(falloff)的 per-keypoint 常数.

这里采用标准的精度(precision) 和召回分数(recall scores): AP50 (AP at OKS=0.50), AP75, AP(10 个位置的 AP 分数平均,OKS=0.50, 0.55, ..., 0.90, 0.95). APM (中型目标),APL(大目标),AR (at OKS=0.50, 0.55, ..., 0.90. 0.95).

http://cocodataset.org/#keypoints-eval

训练:保持人体检测框的长宽比为固定值:height:width=4:3,并从图片中裁剪人体框;并 resize 到固定尺寸,256×192384×288.

数据增强包括:随机旋转([-45, +45]); 随机尺度缩放([0.65, 1.35]); 翻转(flipping). 还采用了半身数据增强.

Adam optimizer. base learning rate 为 1e-3,在第 170 和 200 个 epochs 衰减为 1e-4 和 1e-5. 训练总共进行 210 个epochs.

测试: 采用 two-stage 的 top-down 框架,其中,与 Simple Baseline 使用相同的人体检测器. 最终的 heatmap 是原始图片和翻转图片的 heatmaps 的取平均. 每个关键点的位置是通过调整最高响应值位置到最高响应到第二高响应方向的四分之一偏移处.

Each keypoint location is predicted by adjusting the highest heatvalue location with a quarter offset in
the direction from the highest response to the second highest response.

val 数据集上的结果

image

image

test-dev 数据集上的结果:

image

image

3.2. MPII Human Pose Estimation

数据集:MPII 人体姿态数据集包含 25K 张图片,40K 个标注实例,其中 12K 用于测试.

训练:训练策略与 COCO 数据集上的训练一致,除了网络输入图片尺寸裁剪为 256×256,以便于对比.

测试:测试策略也基本与 COCO 数据集上的一致,除了采用提供的人体框,而不再进行人体框检测.

评价度量:采用标准方式,PCKh(head-normalized probability of correct keypoint) score. 如果关节点位置位于 groundtruth 位置的 αl 个像素位置内,即认为关节点估计正确. 其中,α 为常数,l 为 head 尺寸,其对应于 groundtruth 的头部边界框对角线长度的 60%. 一般采用 PCKh@0.5(α=0.5).

test 数据集的结果:

image

image

参数与计算量

image

image

3.3. Pose Tracking

image

image

3.4. Ablation Study

3.5. 姿态估计示例

image

image

3.6. 其它应用

image

image

[1] - High-Resolution Representation Learning for ImageNet Classification

[2] - High-Resolution Representation Learning for Object Detection

Last modification:April 23rd, 2019 at 09:14 pm