Realtime Multi-Person 2D Pose Estimation Using Part Affinity Fields

Realtime Multi-Person 2D Pose Estimation Using Part Affinity Fields

1.文章概要

文章实现了图片中的多人姿态检测,与已有的方法相比,最大的优势在于检测的速度对人物的数量不敏感,在保持检测精度的情况下大幅提升了速度。
怎样快速的理解本文的内容,我尝试着讲下面一个故事:

有一张照片上有很多人在摆pose,老师正要给小朋友们讲这些人都在摆什么姿势。突然,一个叫VGG19的熊孩子把照片给撕得七零八碎。为了恢复出照片上的姿势信息,于是老师找来一些好朋友帮忙。

首先来帮忙的是分别叫CNN_S和CNN_L的两个闺蜜。CNN_S负责从碎片中把身体关节部位(头、肩、胳膊肘等)识别出来,并且按照关节部位将所有人的同一关节点坐标记录一个热图中。CNN_L擅长识别肢体部分(大臂、小臂…),同样,她也要把所有的人同一肢体记录到一张图像中。需要提醒的是:CNN_L只是判断出碎片里是否有肢体,无法判断肢体两端是胳膊肘还是膝盖,

下面的任务就是如何把肢体两端的关节点连接起来,并且最终拼接成人骨架结构,以表示当前人的姿势。

这个任务就交给了帕森(Parsing)大叔,大叔先拿了两张位置相连的关节热图(例如肩膀和胳膊肘的热图),根据CNN_L提供的肢体图,找到两张热图中最可能的关节对应关系。这个关节点的连线就带表了一个肢体。然后大叔重复按照此方法把身体的其他肢体都逐一找到,最后把这些找到的肢体按照位置关系进行拼接,就实现了图中所有人物姿势的还原。

好了,故事结束,希望这个故事能够对文章的理解产生一点帮助。下面介绍一下本文的亮点。

2.文章亮点

目前,已经有了许多关于检测的工作。许多的检测方式都是先想办法检测出身体的部位的关节点,然后再连接这些部位点得到人的姿态骨架。
本文的工作差不多也是这个套路,但是为了快速的把点连到一起,提出了Part Affinity Fields这个概念来实现快速的关节点连接。
在这里插入图片描述上图展示了文章进行多人姿态检测的效果,下栏的子图展示了文章的亮点–Part Affinity Fields(部分亲和字段<求更好的翻译>)。Part Affinity Fields的关键作用就是可以实现一段躯干(limb)两端(part)的快速匹配。

个人理解: Part Affinity Fields就是一个向量,该向量代表了身体的一段躯干(如白花花的大腿…)

好了,文章的亮点介绍完了,下面介绍文章的主要内容。我认为,这篇文章主要工作就是要用CNN在图片中检测两个东东:

  1. Part(关节点 或 身体部位) — Part Confidence Maps
    例子:头、肩膀、胳膊肘……
  2. Part Affinity(肢体段)检测 — Par Affinity Fields
    例子:大臂(不包含肩膀和胳膊肘)

3.姿势识别流程

在这里插入图片描述

处理过程:图片->10 layers of VGG-19 -> two branch of CNN –> part confidenceSt & part affinity fields Lt -> parsing -> pose

在这里插入图片描述
好了,下面进入文章的核心:two branch CNN Networks

4.网络详解

本文使用了反复迭代的CNN网络进行检测,每个CNN网络都有两个分支,即闺蜜CNN_S和CNN_L,如下图所示:
在这里插入图片描述
如图所示,本文所介绍的网络是一个不断迭代的网络连接。第1阶段和后续阶段的网络在形态上有所区别。每个阶段的两个网络分支分别用于计算部位置信图(Part Confidence Maps, 即关节点)和部位亲和域(Part Affinity Fields, 即肢体躯干)。

从图中还可以看出,网络的第1个阶段接收的输入是特征F,经过网络的处理后分别得到S1和L1。从第2阶段开始,阶段tt网络的输入包括三部分: St−1,Lt−1,F。每个阶段网络的输入为:
在这里插入图片描述
这样反复迭代,直到网络变得收敛。下图展示了CNN的两个分支计算的结果。

在这里插入图片描述
左边大图是待处理的原图,右边是处理后的结果。
其中,右上一栏图代表了检测到的关节点(Part),这就是St,江湖人称关节点置信图(Part Affinity Fields)。实际操作时,一个部位对应了一张置信图,请注意图中高亮像素。
右下一栏代表了一段躯干(图中是麒麟臂,也可以理解那条白花花的大腿),即Lt,文中给他取的名字叫Part Affinity Fields。同样,有多少个躯干就有多少个PAFs。

4.1 网络收敛性判断

为了判断网络是否收敛,文中定义了网络的损失函数:
在这里插入图片描述
W(P)是干啥的呢?因为数据的标注可能不完全,有些关节点没有被正确的标注上,就会导致上面公式中的Sj∗(p)和Lc∗(p)的值为0,从而导致损失函数的值特别大。这种情况下,令W(p)=0,从而避免这种情况的出现。

那么,为了计算损失函数,首先得计算Sj∗(p)和Lc∗(p)。即身体部位(part)和连接向量(affinity)的Groudtruth。

下面就开始介绍如何计算这俩哥们。

4.2 计算S∗j(p)

Sj∗(p)实际上就是求出一张图像上身体 j 部位分布置信图(也称热点图)(请注意:左右两边图像是不同部位的热点图)
在这里插入图片描述
一个部位置信计算符合高斯分布,一张图像上有多个部位,所以是个多峰的高斯分布。(一个波峰就代表了一个胳膊肘就好) 。
在这里插入图片描述

4.3 计算L∗c(P)在这里插入图片描述

如上图所示,如果在图像中确定某人(k)一段手臂(标记为c),那么这幅图中任意位置p的 Lc∗§为:在这里插入图片描述

4.4 如何评估评估两点相连的可能性

前面说过,Part Affinity Fields的关键作用是用于判断两个部位是否相连,那他是怎么实现的呢?请看下面的公式:
在这里插入图片描述
dj1 和 dj2 分别是两个部位的位置(姑且认为是膝盖与踝关节坐标),如何判断这两点连起来就是一个躯干(白花花的小腿)?

解决方案就是计算从 dj1 与 dj2 连线上的线性积分。其中,p(u) 就是从 dj1 到 dj2 连线上的任意一点。
可见,如果 dj1→dj2 方向与L∗c(p)的方向一致,E的值就会很大,说明该位置是一个躯干的可能性就非常大。

5. 关节拼接

上一节讲了熊孩子把照片撕成了许多碎片,CNN_S和CNN_L阿姨费了老大劲从这些碎片中所有的身体部位(头、胳膊肘)和躯干(白花花的小腿)给找了出来。但是怎样将这些身体部位和躯干给正确的拼接起来呢?这时就要祭出我们的帕森(Parsing)大叔了( Section 2.4),事情的经过是这样的:
在这里插入图片描述
如上图所示,(a)被熊孩子撕掉的另一张照片,CNN阿姨在碎片中找到了肩膀( j1 )、胳膊肘( j2 )、手腕( j3 )的碎片,并将这些部位分别放到了3张照片里。帕森大叔任务就是要确保把图中每个人不同部位给正确的联结起来。他做了一下尝试:

5.1 拼接方法尝试

5.1.1 如图(b)所示,帕森大叔遍历了每张图片中的所有部位点,生成了一张全连接图。显然,要在这样的一张全连接图中把小明和小红的身体骨架给找出来是很难的,因为这是一个NP问题。此路不通!
5.1.2 如图©所示,根据不同部位的空间关系,帕森大叔把全连接进行了精简,仅保留有连接可能的边,(例如:胳膊肘肯定跟肩膀连接但必定不跟屁股相连。)这是一个K维匹配问题,仍然是NP-hard。放弃!
5.1.3 如图(d)所示,换个思路,从部位点出发把人的骨架搭起来是行不通,那就从躯干开始。例如,大臂的两端一定是肩膀和胳膊肘,那么就先把所有的肩膀和胳膊肘的连接图中进行搜索,因为有了PAFs的信息支撑,那么就可以很快把小明和小红的大臂分别找出来。然后,再分别找出小臂、小腿等其他躯干,再将这些躯干组合到一起形成人物姿势,问题就大大的被简化。

5.2 拼接过程

第一步,找出图中所有的小腿。下面的公式告诉我们该如何找小腿。
在这里插入图片描述
在这里插入图片描述
用zmnj1j2=1 来表示把膝盖(j1j1)置信图中点 m 和脚( j2 )置信图点 n 连接起来的一个可能肢体搭配,Emn 计算这样一个搭配的积分结果(依赖于 Lt )。zmnj1j2=0 表示点 m和 n 不构成一个搭配。遍历所有的搭配,计算积分和。最终选择积分和最大的搭配组合代表原始图像中的所有小腿。
第二步,按照第一步的方法,分别去找出大臂、小臂、腰腹…
第三步,两个相邻的躯干必定有共享关节点,通过关节点再把所有的躯干结合起来,就可以得到所有人的身体骨架啦!

再者,第一步和第二步中,不管一张图片有多少个人,先一股脑的把各个躯干给连起来,最后拼接起来就可以简单得到所有人的姿态,这就是自底向上(bottom-up)的实现过程。

:由于本人还不是老司机,所以本博里的一些图片和公式都直接来自于原文。
:本博大量的内容来自于这个链接,因为该作者简单形象的描述了这个网络结构,便于理解;但苦于转载有点麻烦,所以直接复制下来以便以后阅读。这里着重强调,并给出其链接!链接在这里

### 回答1: 实时多人二维姿态估计使用的是部件关联场技术。该技术利用深度学习网络对图像中的人体关键点进行检测和定位,并通过学习人体部位之间的关联性来提高姿态估计的准确性。在实时性方面,该技术利用高效的网络结构和并行计算技术,能够在处理多人图像时保持较高的处理速度和较低的延迟。 ### 回答2: 实时的多人2D姿态估计是指在照片或视频中同时检测多个人的姿态并实时反馈结果。这个任务主要是依赖计算机视觉领域的人体关键点检测技术。而Part Affinity Fields(PAF)是现在最常用的一种检测方法。 PAF可以理解为是人体姿态中的“骨架”,它在这里指的是需要将骨骼节点间的关系一同考虑进去来提高精度的设计。每个PAF都对应着一对关联的节点,例如手臂这一关节对应的PAF就是肩膀和手腕两个关键点中间的向量场。PAF能够将关键点之间的联系编码为一个向量场,并将它们的图像位置和方向作为通道特征,这样就可以通过深度卷积网络获得节点的连接信息。 对于多人2D姿态估计任务,PAF可以自动推断出人体的椭圆形状,使得不同人的节点互相不干扰,能够高效地分离不同人体之间的关键点信息,保证检测精度。 总体而言,实时的多人2D姿态估计技术是计算机视觉研究领域中一个非常重要的方向。通过Part Affinity Fields技术,可以实现对人体姿态的快速准确检测和分析,并具有广泛的应用前景,比如拍摄跳舞类视频、体育比赛等。未来,该领域还将会不断提高研究和开发技术,提高其在实际场景中的使用效果,为人们的生产和生活提供更多更好的便利。 ### 回答3: 在计算机视觉领域,人体姿态估计一直是一个十分重要的研究方向。现在,研究者们正在致力于开发实时多人二维姿态估计方法,本文将介绍一种方法——part affinity fields。 Part affinity fields是指身体部位之间存在的空间关系矩阵。多人姿态估计就是先将图像中的每一个像素与人体相关的身体部件联系起来,然后再利用network output将这些点连接起来形成人体姿态。part affinity fields的基本思想是采用CNN对每一个像素做预测,以定位人体骨架上的每一个连接点。 主要步骤: 1.生成部件置信图:对于输入的图像,通过CNN估计每个像素是否为其中每个身体部位的一部分,这个图叫做部件置信图(Part Confidence Maps),可以通过训练数据集来检测出身体部位的位置。 2.生成连接部件映射图:对于预测出来的部件置信图,我们可以通过预测到的部件之间的关系来学习生成连接映射图(Part Affinity Fields),即学习两个不同身体部件之间的关系(connectivity),这个关系是一个形状为“c&times;2&times;h&times;w”的4维张量。在测试阶段,对于输入图像中的每个像素,都会有其对应到一个连接部件映射图的位置。 3.生成姿态结果:最后,我们将生成的部件置信图和连接部件映射图进行联合,把已确定的部件通过连接映射图装配起来并组合成人体的姿态结果。 这种方法最大的好处就是实现了实时多人姿态估计,不需要预设一个特定数量的人数。同时,在处理不同人的关键点时,以前的方法通常是对每个人都单独进行估计,而这个方法则对所有人的关键点一起进行估计,能够更好地处理人际交互。 总之,通过深度学习和部件置信图与连接映射图等技术手段的利用,Part Affinity Fields在解决实时多人二维姿态估计时具有很大的潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值