题目: Stacked Hourglass Networks for Human Pose Estimation - 2016 作者: Alejandro Newell, Kaiyu Yang, and Jia Deng 团队: University of Michigan, Ann Arbor
[Projects - Home]
[Train - Code-Torch]
[Demo - Code-Torch]
[PreTrainedModel]
<h2>keywords</h2>
- 人体姿态估计 Human Pose Estimation 给定单张RGB图像,输出人体某些关键点的精确像素位置.
- 全卷积网络 Stacked Hourglass Networks
- 多尺度特征 Features processed across all scales
- 特征用于捕捉人体的空间关系 Capture spatial relationships associated with body
- 中间监督 Intermediate supervision
图 - Stacked Hourglass Networks由多个 stacked hourglass 模块组成,通过重复进行bottom-up, top-down推断以估计人体姿态.
<h2>沙漏设计 Hourglass Design</h2>
动机:捕捉不同尺度下图片所包含的信息.
局部信息,对于比如脸部、手部等等特征很有必要,而最终的姿态估计需要对整体人体一致理解. 不同尺度下,可能包含了很多有用信息,比如人体的方位、肢体的动作、相邻关节点的关系等等.
Hourglass设计:
图 - 单个hourglass模块示例. 图中个方框分别对应一个residual模块. 整个hourglass中,特征数是一致的.
hourglass设置:
首先Conv层和Max Pooling层用于将特征缩放到很小的分辨率;
每一个Max Pooling(降采样)处,网络进行分叉,并对原来pre-pooled分辨率的特征进行卷积;
得到最低分辨率特征后,网络开始进行upsampling,并逐渐结合不同尺度的特征信息. 这里对较低分辨率采用的是最近邻上采样(nearest neighbor upsampling)方式,将两个不同的特征集进行逐元素相加.
整个hourglass是对称的,获取低分辨率特征过程中每有一个网络层,则在上采样的过程中相应低就会有一个对应网络层.
得到hourglass网络模块输出后,再采用两个连续的 1×1 Conv层进行处理,得到最终的网络输出.
Stacked Hourglass Networks输出heatmaps的集合,每一个heatmap表征了关节点在每个像素点存在的概率.
<h2>Residual模块 Residual Module</h2>
Hourglass网络中使用的Residual模块.
Residual模块提取较高层次的特征,同时保留原有层次的信息.
- 未使用大于3×3的Filters
- 限制每层的参数总数,以减少总的内存消耗
输入256×256尺寸的图片需要较多的GPU显存,hourglass网络的最大分辨率,也就是最终的输出分辨率,为 64×64.
Stacked Hourglass Networks网络开始是步长为2,filters为7×7的Conv层,其后是residual模块和一串Max Pooling层,将分辨率由256降到64. 其后是两个residual和hourglass模块. 整个hourglass中的所有residual模块输出特征数都是256.
<h2>中间监督 Intermediate Supervision</h2>
Hourglass网络输出heatmaps集合(蓝色方框部分),与真值进行误差计算. 其中利用1×1的Conv层对heatmaps进行处理以保证中间特征的通道数一致. 每一个Hourglass网络都添加Loss层.
<h2>训练 Training</h2>
MPII Human Pose Dataset 数据处理:
- 采用MPII提供的scale和center标注信息,以目标人为中心,裁剪图片
- Resized to 256x256
- Rotation (+/- 30 degrees)
- Scaling (.75-1.25)
未进行平移处理,因为图像中目标人的位置是很重要的信息.
Training:
- Torch7
- rmsprop with a learning rate of 2.5e-4
- drop the learning rate once by a factor of 5 after validation accuracy plateaus
- 3 days on a 12GB NVIDIA TitanX GPU
- Batch normalization
- Mean Squared Error (MSE) loss 计算估计的heatmap和参考heatmap的误差
- single forward pass of the network takes 75 ms
Testing:
- 原始图片和其翻转图片,输入到网络,取输出heatmaps的平均值
- 最终输出的各heatmap的最大值位置作为关节点位置
<h2>Results</h2>
<h2>Related</h2>