Stacked Hourglass Networks for Human Pose Estimation 文献阅读
论文内容概述
本文第一作者为Alejandro Newell,提出了用一种多层堆叠(multiple stacked)Hourglass模块组成的神经网络进行人体姿态估计( Human Pose Estimation),发表在ECCV2016上。Hourglass的本意为沙漏,形象地契合了该网络的结构。如图1所示,每个Hourglass模块包含自底向上(bottom-up)和自顶向下(top-down)两个图像尺度变换过程,可以获得多尺度(scale)的图像信息。同时网络引入了中间监督,整合了Inception、Resnet等广受好评的卷积结构作特征提取,在MPII和FLIC数据集上取得了当时的SOTA效果。
相关工作
早期使用传统的图像处理方法,例如概率模型,进行姿态识别。之后学者开始使用卷积神经网络进行识别,例如尝试用并行的多个网络对图像不同尺度信息作提取,用图模型(graphic model)联合神经网络作图片信息提取。有学者尝试用卷积神经网络进行身体部位分割和多人身体部位标注等其它的具有挑战性的任务。
有学者也开始采用下采样和上采样结合的方式进行姿态检测,与本文不用,该研究的上下采样信息并没有联合,网络结构也不对称。有学者使用conv-deconv结构和encoder-decoder模型。相比之下,本文作者没有采用反卷积和解码器,只用了最简单的邻近上采样,并使用了堆叠结构。
类别 | 文献 |
---|---|
传统方法 | Learning to parse images of articulated bodies. |
图模型联合神经网络 | Joint training of a convolutional network and a graphical model for human pose estimation. |
并行尺度检测 | Convolutional pose machines. |
多阶段检测 | Human pose estimation with iterative error feedback. |
网络结构不对称的上下采样 | Holistically-nested edge detection. |
卷积反卷积、编解码器 | Learning deconvolution network for semantic segmentation. |
上表的每一类只截取了一份文献作为样例。毫无疑问,本文的网络结构是建立在前人设计的网络结构基础上的。
网络结构介绍
Hourglass Design
设计这样网络结构的目的是为了提取图片不同尺度的信息。例如肘关节在较低尺度就可以捕捉,而人的朝向在较高尺度体现出来。并且高尺度信息可以辅助低尺度信息提取,例如如果知道双肩的位置,那么两个手肘的信息与之相关,更容易获得。
为了提取不同尺度的信息,作者在自底向上处理(降低分辨率)时,每通过一个卷积块,下降一定的分辨率,即用一个分支(branch)将该尺度信息提取出来,然后在上采样(upsampling,提升分辨率)环节,当分辨率与之前的分支同时,将网络合并作信息整合,形成了如上图的Hourglass结构。论文中描述该结构为对称的( symmetric),因为每个尺度既对应一次下采样又对应一次上采样。
这样的结构让我联想到课堂上讲述物体检测时神经网络的设计,会在不同的卷积层提取出不同大小的图片,也是在尝试提取不同尺度的信息。
Residual Module
作者在设计Hourglass结构中每个下采样/上采样卷积块时,引入了残差模块和 3 × 3 3\times3 3×3, 1 × 1 1\times1 1×1卷积核进行信息提取,不使用 5 × 5 5\times5 5×5大小的大卷积核,始终保持卷积块的输入输出通道数为256。
Stacked Hourglass with Intermediate Supervision
整体网络结构中将Hourglass进行堆叠,Hourglass的输出是下一个Hourglass的输入,这样使图像的信息进行反复提取校正,关键之处在于中间监督(Intermediate Supervision)。
Hourglass模块之间的连接关系如上图所示。每一个Hourglass模块提取出的混合特征经过1个1x1全卷积网络后,分成上下两个分支,上部分支继续经过1x1卷积后,进入下一个沙漏网络。下部分支先经过1x1卷积后,生成热力图(图中蓝色块,相当于一次prediction),最后与上部分支合并,一起作为下一个沙漏网络的输入。
每个Hourglass模块的热力图prediction在训练时都对应一个Loss,都参与到总Loss计算中。这和传统神经网络只在最后的输出层和真值比较获得Loss很不相同。作者后续的实验证明这样中间监督的设计对提升网络性能很有帮助。
网络训练设置
网络数据集采用的是FLIC 和MPII Human Pose。一个很奇怪的地方是,数据集的有些图片中包含了多个人,但是只对其中一个人的姿态有标注信息。作者将网络训练为识别最中间的人的姿势,并根据数据标注,将数据图像的人平移到图片中间再做识别,以解决这个问题。作者使用了图像旋转和缩放作数据增强,但弃用了平移数据增强,因为会和上面提到的单人识别问题时平移人像产生矛盾。
作者选择的优化器是rmsprop,算法如上图,经验上,rmsprop被证明有效且实用的深度学习网络优化算法,本次文献阅读不作展开。学习率为 2.5 ∗ 1 0 − 4 2.5*10^{-4} 2.5∗10−4,并根据验证集准确率动态调低学习率。作者用一块12 GB NVIDIA TitanX GPU训练了3天。损失函数为均方误差损失函数(Mean Squared Error)。热力图真值生成方法:将标签上身体部位的坐标点作为中心,生成一个2维高斯分布的热力图。若关节被严重阻挡或在图上不存在,高斯分布全0。
结果与讨论
实验结果
上图为网络在两个数据集上,以PCK(Percentage of Correct Key points,正确估计出的关键点比例)为性能指标的实验结果。相比作者列出的其他研究,Hourglass网络在每个身体部位上都取得了最好成绩。作者称Hourglass获得了state of the art的结果。
中间监督和堆叠Hourglass探讨
除此之外,作者通过实验研究了两个问题:中间监督对网络性能的影响、参数相同时堆叠级数更多的Hourglass模块对网络性能的影响。如上图所示,作者研究了右边的五种网络结构,右上角为正常的网络,圆圈代表一次中间监督,与下面的非堆叠的,没有中间监督的其它网络结构做对比。实验证明右上角的网络(堆叠的,有中间监督的)性能最优。
作者甚至观察到堆叠的Hourglass结构中,前级的Hourglass所犯错误会被后级Hourglass改正,如上图所示,左边为前级结构获得的姿态识别,右边为最终识别结果,可以看出错误得到了校正。
人数问题
在此任务中,网络只需要识别一个人的姿态信息,并会被一张图片出现的多个人干扰。作者发现给出人的位置标注并对图片作平移后,网络可以很好的选择识别目标。对于多人出现的遮挡问题,网络也取得了很好的识别准确率。对于一张图片要对多人作姿态检测的问题,作者认为这超出了本文范围,可以作为未来探讨目标。
遮挡&截断问题
有时图片中人的身体部位会被遮挡,有时一张图片不能完整显示一个人的身体部位,出现截断。数据集对部位出现遮挡但可以猜出位置的图片也会给出一个位置标注,实验证明Hourglass网络对于遮挡的身体部位也有一定的检测能力。
对于截断或严重遮挡的身体部位,没有位置标注信息可用,但网络有时依旧可能标出一个理论上合理的位置。对于这种理论上的合理,作者是不希望出现的,因为这种位置没有实际参考,是无意义的。作者换了一个思路说明网络对于截断图片的判断。他用网络生成的热力图的最大值或均值判断在图片的哪个位置存在标注,作了POC曲线。曲线得到的AUC值较大。说明网络可以分辨图片是否出现截断。
文献总结
本文作者提出了一种带有堆叠Hourglass和中间监督的网络架构,用于对人体姿态进行检测。实验证明,该网络取得了相当好的效果,即使对多人干扰、身体部位遮挡、图片残缺等挑战情况也有一定效果。我认为这种多尺度信息提取合并可以对人的姿势信息有很强的提取作用,也是为什么物体检测任务往往也需要多尺度检测。同时堆叠结构使结果不断优化,保证了网络的性能。
毫无疑问,本文显示了卷积神经网络在机器视觉领域又一重大应用的可能性。