全球计算机视觉顶会 cvpr 2018 (conference on computer vision and pattern recognition,即ieee国际计算机视觉与模式识别会议)将于6月18日至22日在美国盐湖城举行。作为大会钻石赞助商,旷视科技研究院也将在孙剑博士的带领下重磅出席此次盛会。

论文链接:https://arxiv.org/abs/1711.07319
github:https://github.com/chenyilun95/tf-cpn.git
导语
人体姿态估计是计算机视觉领域的基本研究方向之一,多人姿态估计(multi-person pose estimation)是该方向上的一个经典难题;在传统算法遭遇瓶颈之时,虽然卷积神经网络的再次崛起和快速迭代为解决这一问题带来了新工具,多人姿态估计依然面临着一些百啃不动的“硬骨头”。为此,旷视科技提出级联金字塔网络(cascaded pyramid network/cpn),可优化解决关键点难以识别的问题,结果证明非常奏效。cpn 的这一技术突破将促进人体姿态估计相关应用领域的发展,比如游戏动画、安防(异常行为检测等)、体育(裁判辅助等)、自动驾驶等。
设计思想
多人姿态估计旨在识别和定位图像之中所有人体的关键点,对于很多视觉应用比如人体动作识别和人机交互来说,这是一个基本的研究课题。
最近,由于深度神经网络的快速发展,多人姿态估计获得显著提升。比如 mask r-cnn 首先预测人体边界框,接着据此压缩特征图以获取人体关键点。尽管成果不断,但面临的挑战并未减少,比如在关键点重叠,关键点不可见以及背景拥挤的情况下很难实现定位;究其原因主要有两方面:1)上述“困难”点无法只根据其外观特征被简单识别,比如躯干点;2)上述“困难”点在训练期间并没有被明确处理。
为此,本文提出一种全新的网络架构——级联金字塔网络(cascaded pyramid network/cpn),它分为两个阶段:globalnet 和 refinenet。globalnet 基于特征金字塔网络学习一个好的特征表征。并且,金字塔特征表征可以提供充足的语境信息,这对于推断遮挡和不可见的关键点来说必不可少。在金字塔特征的基础上,refinenet 显式地处理“困难”点。
这是一种 top-down pipeline,先通过检测器检测出图像之中的人,再把每个人抠出来并做单人姿态估计,最后把结果整合到原图上。cpn 这种两阶段架构设计的想法其实也不复杂,甚至可以说是相当朴素直观,来源于人是怎么识别人体关键点,即由特征金字塔网络 globalnet先识别出简单关键点,再由(借助 online hard keypoint mining loss 的)refinenet 整合来自前者的特征表征以识别余下的困难关键点。这样从易到难,层层推进,最终克服了关键点难以识别的问题。
此外,本文还探索了不同因素(人体检测器和数据预处理等)对多人姿态估计的影响。比如,通过实验发现检测平均精度(detection map)在达到一定阈值(det map41.1)之后对关键点平均精度(keypoint map)的影响有限。再比如使用large batch,可以把 cpn 的 map 提升 0.4-0.7 个百分点,这说明除了物体检测之外,large batch 同样适用于关键点识别。这些细节对于研究如何进一步提升 cpn 的准确度和鲁棒性非常有价值。
网络架构
类似于 mask r-cnn,cpn pipeline 也是自顶而下的:首先通过人体检测器根据图像生成一个边界框集合;接着通过单人关键点估计器预测每个人关键点的详细定位。采用基于 fpn 的当前最优物体检测器作为人体检测器,并用 mask r-cnn roialign 替代 fpn roipooling。在 stacked hourglass 等网络的启发下,本文提出 cpn,其架构如图 1 所示。
图 1:级联金字塔网络(cpn)。l2 loss* 表示带有在线困难关键点挖掘的 l2 loss。
--globalnet
cpn 的网络架构基于 resnet。把不同卷积特征 conv2∼5 的最后残差块分别表示为 c_2 , c_3 , ..., c_5,并在其上应用 3 × 3 卷积滤波器生成关键点的热力图。如图 2 所示,浅层特征比如c_2 , c_3 在定位上有着较高的空间分辨率,但是在识别上语义信息较少。另一方面,由于卷积(和池化),深度特征层比如 c_4,c_5 语义信息较多,但空间分辨率较低。因此经常引入 u 型结构同时保留特征层的空间分辨率和语义信息。
图 2:不同特征的输出热力图。绿点表示关键点的 groundtruth 位置。
最近,fpn 通过深度监督信息进一步完善了 u 型结构,本文的关键点估计应用了相似的特征金字塔结构。稍微不同于 fpn,在上采样的过程中,作者在逐像素加和之前使用 1 × 1 卷积核,而这一结构正是 globalnet。
如图 2 所示,基于 resnet backbone,globalnet 可有效定位简单的可见关键点(比如眼睛),却无法精确定位困难的隐藏关键点(臀部)。对臀部这类关键点的定位通常需要更多的语境信息和处理,而不是相邻的外观特征。很多情况下,单一 globalnet 无法直接识别这些“困难”点。
--refinenet
globalnet 生成特征金字塔表征来识别“容易”点,refinenet 则显式处理“困难”关键点。为提升信息传输的效率,保证信息完整性,refinenet 在不同层之间传输信息,并通过像 hypernet 一样的上采样和连接把这些信息整合起来。不同于 stacked hourglass 的优化策略,refinenet 接收了来自所有金字塔层的特征信息,而不是类似 hourglass 模块之间仅通过最后一个上采样特征进行信息传递。此外还把更多的 bottleneck 模块来处理更深的特征,其较小的空间尺度可实现效率和性能的良好权衡。
随着训练的进行,网络会倾向于关注占比较多的“简单”点,其重要性不及“困难”点,比如遮挡等情况,因此网络对两者的关注应该取得一个平衡。为此,refinenet 根据训练损失在线地显式选择困难关键点(称之为在线困难关键点挖掘/ ohkm),并只从已选择的关键点反向传播梯度。
实验
整个 cpn pipeline 按照自顶而下的方式估计多人姿态。首先通过当前最优的人体框检测器生成人体 proposals;对于每个 proposal,假定其裁剪区域之内只包含一个人体,然后再由姿态估计网络给出最后的预测。本节将从实验数据的角度展示 cpn 的性能。
cpn 评估选用的数据集是 ms coco test-dev 和 test-challenge。表 10 是 cpn 在 coco test-dev 上的最终结果。在没有额外训练数据的情况下,cpn 单一模型的 ap 值为 72.1,cpn 多模型融合(带有不同的 groundtruth 热力图)的 ap 值为 73.0。表 9 给出了 cpn 与其他方法在 coco test-challenge 2017 上的对比结果,72.1 的 ap 值为该数据集的当前最优结果。表 11 是 cpn 和 cpn+(集成模型)在 coco minival 上的表现,它为 coco minival 与 coco test-dev / test-challenge 之间的差距提供了一个参考。图 3 是一些 cpn 结果示例。
表 9:coco test-challenge 2017 上的最终结果对比。
表 10:coco test-dev 上的最终结果对比。
表 11:coco minival , test-dev 以及 test-challenge 上的相应结果。


图 3:cpn 结果示例。
结论
按照 top-down pipeline,本文提出一种全新的级联金字塔网络 cpn 以解决“困难”关键点问题。具体而言,cpn 包含一个基于特征金字塔结构的 globalnet 和一个把所有金字塔特征连接为语境信息的 refinenet 。此外,refinenet 中还引入在线困难关键点挖掘以显式处理“困难”点。该算法在 coco keypoint 基准上取得了当前最优结果,相较于 coco 2016 keypoint 挑战赛关进有 19% 的提升。