【CV-Pose estimation】CPN阅读笔记

原论文链接:Cascaded Pyramid Network for Multi-Person Pose Estimation

motivation

多人姿态估计通过识别和定位图像中所有人的关键点实现,这是很多视觉应用(比如人类行为识别、人机交互)的基础研究课题。

本论文介绍的CPN模型是旷视提出,取得COCO2017 Keypoints Challenge的冠军(COCO2017前五名只有3% AP的差距,Face++ 72.1mAP,亚军71.4 mAP,COCO2016 baseline 60.5mAP),主要解决的是多人姿态估计问题。

深度学习在多人姿态估计还是具有很大挑战性,比如遮挡的关键点、复杂的背景信息等。深度学习之难以解决姿态估计,主要原因有两点:1)这些难的关键点不能简单地根据其外貌特征来识别。2)这些难的关键点在训练过程中没有被明确地解决。

论文提出级联金字塔网络(Cascaded Pyramid Network ,简称CPN),包含两个阶段:GlobalNet和RefineNet。GlobalNet是特征金字塔网络,可以定位简单的关键点,如眼睛和手,虽然无法识别被遮挡的关键点,但是可以提供上下文信息,用于推断被遮挡的关键点。RefineNet通过整合GlobalNet所有级别的特征来处理比较难识别的关键点。为了解决多人姿态估计,论文采用自上往下的方法,首先生成人体边界框,之后通过CPN实现关键点检测。

论文主要有以下贡献:

1、提供新颖而有效的级联金字塔网络CPN,包括GlobalNet和RefineNet两部分。

2、通过自上往下的方法,论文比较影响多人姿态估计的各种因素。

3、论文的算法在COCO2017多人姿态估计中取得state-of-art水平。

Architecture



多人姿态估计包括人体检测和CPN模型。如上图所示只是CPN模型的结构。

Human Detector 论文采用FPN实现人体检测,且用Mask RCNN的ROIAlign代替FPN的ROIPooling。为了训练检测器,COCO数据集的80个类别都用来训练,但是只有人体检测框用于多人骨架提取。

在COCO2017的workshop中,作者声称用MegDet实现人体检测并分割图像,单独的人体图像在CPN实现人体关键点检测,但是论文宣称通过Mask R-CNN,FPN实现人体的分割。这样来看作者实际模型应该包括很多tricks。

Cascaded Pyramid Network (CPN)

论文首先宣称对于Stacked hourglass,堆叠两个hourglasses和堆叠8个hourglasses性能一致。论文受hourglasses和另一篇论文《Towards Accurate Multi-person Pose Estimation in the Wild》启发,设计包含GlobalNet和RefineNet的CPN模型。

论文中的GlobalNet,骨架网络是ResNet,采用U形结构整合以保持空间分辨率和特征的语义信息。FPN的另外一个改进是在像素求和之前使用1x1卷积内核(第一个改进是用Mask RCNN的ROIAlign代替FPN的ROIPooling)。

论文基于ResNet的GlobalNet骨干可以有效地定位眼睛这样的关键点,对于正面站立的人,无法精确定位臀部的位置。像臀部这样的关键点的定位通常需要更多的上下文信息。因此,GlobalNet难以实现'hard'的关键点检测。

CPN中通过RefineNet实现'hard'关键点检测。为了提高效率和保持信息传输的完整性,我们的RefineNet各层次特征图首先堆叠不同的bottleneck模块,然后仿照HyperNet思路,通过上采样和融合,集成不同层次的信息。

在网络训练过程中,倾向于关注大多数容易的关键点,不重视'hard'关键点。因此RefineNet根据选择的关键点,基于训练损失和反向传播损失,在线选择'hard'关键点。

Experiment

Dataset and Evaluation Metric

模型仅在COCO训练数据集(包括57K图像和150K人体),在COCO验证集(5K图像)测试。test-dev和test-challenge具有20K图像。姿态估计评价指标是OKS(单位mAP,OKS-object keypoints similarity定义不同人姿态的相似性)

Cropping Strategy

模型调整每个人体检测框固定高宽像素256x192。

Data Augmentation Strategy

为了提高模型的泛化能力,论文对裁剪后的图像进行随机翻转,随机旋转 (-40◦ ∼ +40◦) 和随机缩放(0.7 ∼ 1.3)

Training Details

人体姿态估计模型一般使用SGD算法训练,学习率5e-4,每10 epochs除以2。论文使用weight decay of 1e-5和BN。论文模型初始化使用ImageNet预训练好的模型。

Testing Details

为了最小化预测的方差,模型的预测的热点图进行二位高斯滤波。和Stacked hourglass发那方法相同,还预测翻转图像的姿态,之后对两个热点图求平均值得到最终的预测热点图。

在从最高响应到第二高响应的方向上的四分之一偏移被用来获得最终位置关键点。论文同时使用Rescoring策略。人体边界框的得分和所有关键点的平均得分的乘积被认为是人体实例的最终姿态得分。

Conclusion

论文的模型其实也很简单,论文没有介绍很多tricks,也为在除COCO之外的数据集训练。模型整体有Stacked hourglass+FPN+top-down pipeline的影子。因为打比赛的缘故,模型都不太关注速率的影响,实时性应该不高。'hard'关键点感觉像手动选择,应该有更多优化空间。


返回CV-Pose estimation目录

返回CV总目录

编辑于 2017-12-11 20:18