Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields解读

摘要

我们的方法,能够有效的检测一个图像中的多人。通过Part Affinity Fields来学习身体的各部分及关联性,利用全局纹理信息,自下而上的方法,达到实时性和高精度。通过两个分支来学习到部位的位置和关联性。

引言

一张图中的多人pose的难点:

1. 不知道一幅图有多少人,他们会存在不同的位置和不同的scale。

2. 人与人之间存在接触、遮挡、切断等复杂的空间干扰。

3. 多人时,会存在时间复杂度的问题

注:提到多人Pose的难点,这些是很多问题,都存在的问题。检测也是相同的问题,proposal过多,也会造成时间复杂度,不过一阶段能部分解决这问题,那么它会不会也是这么解决的呢?

自顶向下的单人pose估计,当人的检测器失败后,无法做下一步了,另外时间复杂度会随着人数的增加而增加。因此自底向上的方法能够解耦这样问题

注:这个问题很普遍,但凡涉及pipeline的问题,都会有这个问题,比如人脸Landmark,是先检测人脸,还是直接回归landmark,3D box是先回归2D box还是直接回归3D box。

并不是多个pipeline不好,而是端到端的方法,是否能够训练的好。难点不在于到底是选择自上而下,还是自下而上,而是哪种你能够达到你的性能。很多问题端到端的训练刚开始并不能得到好的效果,以新颖性出现,后面逐步发展成成熟的方向。

这个就是告诉我们,不能把我们所理解到的经验,当成绝对的经验,轻易否定别人的想法。要深入理解其它的利与弊,跟上时代的发展。

看着没什么感觉,你仔细想想工作中的讨论,是不是很多人说,这个不可能,那个怎么不可能呢。

发论文时,会强调它的优点,实际上,它们也是有自己难点,这些要在看论文中,作重点关注的,而不是只关注其网络长什么样子,不然会被他牵着走,缺少深入思考。

自底向上的方法,不直接使用身体其它部位和其它人的全局的信息。实际上,早期的论文,并不有有效的解决这些问题。比如Pishchulin等人,并没有解决全连接图的NP问题,导致平均处理时间,以小时为阶了。Insafutdinov使用ResNet和pairwise scores极大的解决了时间问题,但还是需要数分钟。等等

注:作者提到了自底向上的问题,毕竟这不是他开创的。所以能看到作者主要解决这个问题。当然我们要注意它自己也有它的问题,这个是要发paper必备的思维方式。这个也是我们了解一个领域的方式。

在这篇论文中,作者开创PAFs方法,通过编码肢体的位置和方向信息的2D vector fields,来解决多人pose的问题。我们证明了,通过自底向上,也能够达到实时性和高质量的结果。

方法

图1

用S表示每个关节点的confidence maps,L表示2D vector fields。如上图所示,就很容易明白它们是什么意思了。从b图可以看出,同一个类别出现在同一个map中,左右是不同的类别。

Simultaneous Detection and Association

图2

其中F为由VGG-19前10层组成的feature maps集合,然后进入多阶段的网络。第二阶段时,可以看到这个F与第一阶段的S、L集合,F集合都会concat在一起,送往到下一个阶段。同时为了更好的学习S和F,每个阶段会都有loss。

为了解决有些数据集并没有对所有人,都有复杂的label,我们使用加权的方式,即:

其中p为图像中的位置,W为二值mask,*表示ground truth。这个W避免训练时惩罚正样本。所以这里的W是针对不同数据集,预先设计好的。

注:网络结构很好理解,不用说了,这个数据集到底有什么特点呢,有点好奇,后面会注意看下,想想能不能不同数据集一起训练的方法

Confidence Maps for Part Detection

为了计算f_S,我们先产生对应S*的ground truth。理想的情况下,针对一个部位,如果是单人,只有一个单峰在confidence map中,多人,则有多个峰值。

针对每一个body part,通过以下式子,得到confidence map ground truth:

如果存在多个body part,那么就会有叠加,选取值最大的那个。采用最大值,而不是平均,是为了保证每个峰的精度。

注:这种方法,很多论文中都有,比如[1]

在测试时,通过non-maximum suppression进行处理。

注:NMS,不仅仅针对bbox,很多地方也用到了,比如fast角点检测中,大家可以查下相关博客就能够明白了。non-maximum suppression的中文是非极大值抑制,字面的意思是,把非极大值给抑制住,实际操作就是在一定范围的邻域内的,只保留一个最大值,比如有两个峰值是挨着的,那么只取一个就可以,取那个最大值的那个。

Part Affinity Fields for Part Association

怎么样才能在不确定有多少人中,建立full-body pose呢?我们需要每对body part建立关联的测度量,让它们属于一个人。一种可能的方法是每个part建立一个中心点,然后用这个中心点之间,建立关联。但这样在拥挤的人群中,容易产生错误的连结。

图3

而导致错误的连结,是由于:

1. 针对肢体,只有位置编码,并有方向编码

2. 一个区域,只有一个肢体的中心单点

注:在这里,第1点很容易理解,那么第2点又是如何理解的呢?一个节点难度不应该只有一个中心单点吗,那么如果不是中心单点,那么应该怎么做,才能够解决连结问题。难道是想利用每个节点的所有图像纹理信息吗?如果是我,应该怎么做呢?

从图1(c)中,很明显,如果除中心点外,其它的点,距离最近,置信度会更高,同时用上所有人体上的像素点。

为了解决这些问题,作者提出了PAFs,既有位置,也有方向。从单节点去思考起,

图4

如果身体上的像素点,属于limb c,那么这个点的向量值为v,否则为0。图中k为person序号,j为节点序号,v为单位向量。

注:这个符合我们之前的猜想,那么就有一个问题,如果p为身体上的每个像素点,都要标注就麻烦了。个人觉得给个大概范围就可以了,那么如何定义了,直接在两个节点之间取个矩形框就可以了,是不是的,看下作者有什么更好的妙招吗?。

注:这个式子的含义很明显了,将p与x的组成的向量,在v和v_\perp上的投影的长度值了限制,就是把我所表示的意思,数学化了

如果出现多人,那么就求个平均值

上式中的n_c(p)是点p穿过多人时,非零向量的的个数,这个值与人数有关。即在不同人的节点覆盖的地方,采用平均值。

注:为什么要采用平均值呢,为什么不像position那样采用最大值呢?位置采用非极大值抑制,实际上,如果不同人的两个点完全重合,从原理上,应该会出现问题?那如何解呢,要是我,我会公用这个点,这个点即可以是这个人的,也可以是那个人的,那么用NMS也不会有什么问题,只需要控制邻域半径即可。

从后面的失败例子来看,一个结点,只能给一个人使用,那么就会被NMS给抑制住了。

那么方向呢?取平均值,意味着,重叠的地方,方向因叠加而减小方向性,有了信息损失,那么得不偿失呀,这是不是一个改进点呢?我们接着往下看

在测试阶段,通过沿着不同的候选结点之间,计算PAF的线积分,得到结点之间的联系性

其中,两个d为两个候选结点,将方向单位化。而p为两个结点连线上的点

注:这个方法,解决了我上面的疑问,继续有覆盖,或被一分为二,那么通过积分,得到更可靠的关系。是不是解决了所有的情况呢,如果被一分为二,同时遮挡的很多,且丢失一个结点的情况下,可能会存在连不上的情况,但也说不定,说不定可以通过训练学习到这种特点,而从方法设计上,让它更容易学习到这种特性。

Multi-Person Parsing using PAFs

通过在confidence maps上做NMS,得到了候选结点集合。这里面涉及K维的NP-Hard问题,针对这个问题,采用了配对的方式,得到高质量的匹配关系,同时也隐含着全局的信息,更大的感受野。

图5

注:为了解决NP-Hard问题,作者采用d的形式,为什么可以呢,由于人体骨架结点,都是有父结点的,所以完全可以在分类的基础上,做二对搜索,即d。如果采用了这种方法,间接的将两都联系起来了,同一个人的能量越高,不同人的能量越低,这样就非常有效利用了全局信息,不同人之间,在图像层面距离会比较远,那么就有了更大的感受野,所以在网络设计上,应该会有所考量。

如果存在有些结点被遮挡了,会导致二对搜索匹配错误的情况

 

其中,D为不同类型结点的集合,m,n为两个不同类型结点的集合的序号,E_m_n为两者之间线积分能量,Z是待优化的变量,指是权重,这里作者使用匈牙利算法。

注:匈牙利算法是解决最大匹配问题的最经典的方法,配制对不多的情况,效率会非常高。这种算法的应用,很多地方用到过。比如在检测+跟踪的方法中,会用到,见论文[2,3,4]。给定一个阈值,输出的是配对结果,即上式中的z为0或1。

作者是如何解决NP问题的呢,首先,通过人体的树形骨架来简化NP问题,其次,每两个结点之间做匹配,这样就拆成很多子问题来解决,这样得到最佳的时间复杂度。为什么它能够得到全局最优解呢,是因为树形结点关系,显示的包括还PAFs中了,另外,非连结的结点的关系,隐含在CNN的模型训练当中了。这能很好的融合,是因为CNN使用很大的感受野进行训练的。

有了两两结点之间的关系,我们就可以得到整体的优化方程

结果

我们使用两个多人数据集,进行评测我们的方法。一个是MPII,另一个是COCO2016关键点挑战赛数据集。这两个数据集,包含了不同的有挑战的场景,比如拥挤、尺度、遮挡和关联。

Results on the MPII Multi-Person Dataset

使用tookit工具包,基于PCKh阈值来计算mAP。在MPII中,没有使用scale search技巧进行测试,也已经是最好的性能了,如果使用3个scale search,那么性能会提高到75.6%

注:scale search是将图像做多个尺度后,得到模型的heap和PAFs进行平均。

Results on the COCO Keypoints Challenge
 

作者说明,他们的方法,在小尺度上效果没别人的好,原因是基於单个人,可以把人resize到相同尺度,能够有效降低误识别。但他们的是在一个图中,无法做到这样,所以在小尺度上,相对会差些。如果针对单人,使用rescale的CPM,在他们的结果上,进行refine,会有2.6%的提升。

大多数的假阳,来自于定位的不精确,并不是背景。这表示,要捕获更多的空间信息,要比纹理的识别,更有改进的空间。

失败的例子

(a)是人倒过来了,少有的pose

(b)是少了头部结点,因为没有头部纹理信息了

(c)是存在同一类别结点重叠情况,被NMS给抑制了

(d)由于遮挡丢失了结点信息,在二匹配阶段造成错误,同时也有同一类别结点重叠的情况

参考论文

[1] Liu W, Liao S, Ren W, et al. High-level semantic feature detection: A new perspective for pedestrian detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 5187-5196.

[2] Bewley A, Ge Z, Ott L, et al. Simple online and realtime tracking[C]//2016 IEEE International Conference on Image Processing (ICIP). IEEE, 2016: 3464-3468.

[3]Wojke N, Bewley A, Paulus D. Simple online and realtime tracking with a deep association metric[C]//2017 IEEE international conference on image processing (ICIP). IEEE, 2017: 3645-3649.

[4]Zervos M. Real time multi-object tracking using multiple cameras[R]. 2012.

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章