论文笔记(CPN):Cascaded Pyramid Network for Multi-Person Pose Estimation

该论文发表在2018年CVPR上,用于多人姿态估计的级联金字塔网络

arxiv论文地址:https://arxiv.org/abs/1711.07319

github代码:https://github.com/GengDavid/pytorch-cpnhttps://github.com/chenyilun95/tf-cpn

对于目前多人姿态估计中仍然存在的问题(遮挡点,不可见点和拥挤的背景,是的人体关键点检测存在的问题),作者将其原因归纳为两点:

1)作者认为,只通过表层特征不能识别这些“难点”,例如:躯干点;

2)在训练过程中没有明确解决这些“难点”的检测问题;

因此,在本文中,作者提出了一种新的网络结构,称为Cascaded Pyramid Network(CPN)级联金字塔网络,该网络可以有效缓解“hard” keypoints的检测问题,CPN网络分为两个阶段:GlobalNet和RefineNet。GlobalNet网络是一个特征金字塔网络,该网络用于定位简单的关键点,如眼睛和手等,但是对于遮挡点和不可见的点可能缺乏精确的定位;RefinNet网络该网络通过集合来自GolbalNet网络的多级别特征来明确解决“难点”的检测问题。

本文作者的工作有三大创新点:

  • 作者提出了一个新的有效的网络:CPN,该网络由GlobalNet和RefineNet网络构成;
  • 作者分析了在top-down结构中问题对于多人姿态估计产生影响的不同因素;
  • 作者的算法实现了在challenging COCO multi-persion keypoint benchmark数据集上的最好的结果,在test-dev dataset上达到73.0AP,在test challenge dataset 上达到72.1AP。

在本论文中,作者采用了top-down的路线:先在image上使用一个human detector得到人的bounding-boxes,然后再使用cpn网络尽心关键点的检测;本文重心在cpn网络实现的关键点检测。

Our Approach for Multi-person Keypoints Estimation

一. Human Detector

检测算法作者使用FPN和Mask RCNN网络,以得到每个人的bounding-boxes,然后使用bounding-boxes对原图进行裁剪,并将裁剪后的结果用于CPN网络的输入进行关键点检测。

二. cascaded Pyramid Network(CPN)

作者提出的网络结构如下,可以看到该网络由两个子模块构成:GlobalNet和RefineNet。

2.1 GlobalNet

该网络的基础网络采用resnet网络,以resnet50为例,使用在imagenet上预训练的resnet50网络,然后使用该网络提取特征,分别使用1/4,1/8,1/16,1/32四个级别的网路特征(conv2_x, conv3_x, conv4_x, conv5_x的输出),然后在GlobalNet中分别将四层特征的通道转换为相同的通道数,此时,得到了四层通道数相同的特征图,该四层特征用两个用途:

用途一:对该四层网络特征做如下操作:低层特征进行上采样,与上一层特征进行相加,即不同尺度特征进行融合,最终得到融合了低层特征的四层特征,最后对该四层特征分别进行通道转换(转换为与关键点数目相同的通道数)并都上采样到1/4大小,用于计算该阶段的L2 loss)(四层输出分别和四种不同的高斯分布的label进行损失计算)。

用途二:对于四层特征,在RefineNet中进行使用, 见2.2。

小结:通过GlobalNet网络,可以对简单的点进行有效的关键点检测,但是对于不可见的关键点的检测,效果仍然不佳,如下图:对于left eye(简单点)特征图上的激活区域的groundtruth中的位置和接近,说明在GlabalNet阶段,该网络对于这种简单点的检测已经达到了很不错的效果;但是看left hip(难检测的点),在特征图上,还几乎没有激活区域呢,说明在该阶段网络并不能有效检测到该类别点,所以作者又设计了后续的RefineNet网络,专门用于检测类似这种的难检测的点,在下图中,也可以看到,经过RefineNet之后,该网络已经可以有效检测到难检测点了。作者将检测点通过两个阶段的网络进行检测,这种想法很值得我们学习。

2.2 RefineNet

在GlobalNet中,得到了四层特征图,作者通过给每一层特征图设计了不同的数量的botleneck块,再分别经过不同倍率的上采样,然后经过concat操作后,达到了对不同尺度特征的结合,最后经过一个bottlenet块,再经过简单的变换,得到网络的最终的输出。

注意:L2 loss和L2 loss*的区别,在GlobalNet中,使用L2 loss,即GlobalNet网络的输出和label计算所有关键点的loss;在RefineNet中,使用L2 loss*,即网络输出和label计算所有关键点的loss,然后对loss进行从大到小排序,最后选择top-k个loss用于网络的反向传播。

三. Experiment & Discussion

Datasets:使用MS COCO trainval dataset(包含57k images and 150k person instances)和验证集:MS
COCO minival dataset (includes 5000 images);测试集:test-dev set (20K images) and test-challenge
set (20K images)。

Experiments:

(1):可以看到cpn网络可以取得AP:69.4的效果;

(2)该实验说明在refinenet阶段,每个层级的特征使用不同个数的boottleneck块,达到的检测效果;

(3)该实验说明,使用哪几层的特征可以达到良好的效果;

(4)  该实验说明在refineNet中计算loss后选取M个loss作为网络的训练,下表中可以看到不同的M值,该网络得到的不同的AP值;

(5)下表说明,在CPN网络中,采用不同的loss形式带来的检测效果,可以看到GlobalNet中采用L2 loss,RefineNet中采用L2 loss *,cpn网络可以达到最优的效果。

猜你喜欢

转载自blog.csdn.net/yangzhengzheng95/article/details/85288347