Realtime Multi-Person 2D Pose Estimation using Part Affinity Field

1 Summary

写完笔记之后最后填,概述文章的内容,以后查阅笔记的时候先看这一段。注:写文章summary切记需要通过自己的思考,用自己的语言描述。忌讳直接Ctrl + c原文。

2 Research Objective(s)

bottom-up approaches to estimate the keypoints of skeleton

3 Problem Statement

  1. unknow number of people that can occur at any position or scale
  2. interactions between people induce complex spatial interference
  3. runtime complexity tends to grow with the number of people in the image

4 Method(s)

输入: color image of size w × h w \times h w×h
输出: anatomical keypoints for each person
中间过程:feed forward network predicts a set of 2D confidence maps S S S of body part locations(2b) and a set of 2D vector fields L L L of part affinities, which encode the degree of association between parts (身体部分的locations 和 所有的同类,比如都是elbow)。

其中confidence map S S S J J J个(图中所有key point的个数, S j ∈ R w × h S_j \in \mathbb{R}^{w \times h} SjRw×h代表第 j j j个key point对应的location); L L L C C C个, L c ∈ R w × h × 2 \bold{L}_c \in \mathbb{R}^{w \times h \times 2} LcRw×h×2代表第 c c c个body parts(例如:手臂)的image location的2D vector(position and orientation)
在这里插入图片描述

Q1: 这里的image location可不可以理解为像素?

4.2.1. Simultaneous Detection and Association

The network is split into two branches:

  • the top branch----> predicts the confidence maps,一个关键点对应网络生成的一个feature map,如果有J个关键点,则共有J张feature map;
  • the bottom branch ----> predicts the affinity fields,用于度量两个关键点之间的紧密度(有连接关系的则说明比较紧密,注意,这里每个paf都用二维的向量表示(横纵坐标))
    在这里插入图片描述
    在上图中, F \bold{F} F是VFF-19的前10层经过微调后输出的feature map; S t = ρ t ( F ) \bold{S}^t=\rho^t(\bold{F}) St=ρt(F) 代表 t t t时刻的confidence maps; L t = ϕ ( F ) \bold{L}^t=\phi(\bold{F}) Lt=ϕ(F) 代表 t t t时刻的part affinity fields; ρ t ( ) , ϕ t ( ) \rho^t(), \phi^t() ρt(),ϕt()代表stage t t t 中的CNN 函数;
    然后concate一下 feature map F \bold{F} F, detection confidence maps S t − 1 \bold{S}^{t-1} St1, part affinity fields L t − 1 \bold{L}^{t-1} Lt1
    在这里插入图片描述
    然后loss函数可以表示为:
    在这里插入图片描述
    在上述公式中 S j ∗ \bold{S}^*_j Sj 是 groundtruth part confidence map , L c ∗ \bold{L}^*_c Lcgroundtruth part affinity vector field, W \bold{W} W is a binary mask with W ( p ) = 0 \bold{W(p)} = 0 W(p)=0 when the annotation is missing at an image location P \bold{P} P

The mask is used to avoid penalizing the true positive predictions during training.
整个训练过程的loss可以表示为:

Q2: how to compute the gt part confidence map and gt part affinity vector field (position and orientation)
在这里插入图片描述

4.2.2 Confidence Maps for Part Detection

this part introduce how to calculate the S ∗ \bold{S}^* S

S j , k ∗ \bold{S}_{j,k}^* Sj,k means 第 k k k个人的第 j j j部分的location
S j , k ∗ \bold{S}_{j,k}^* Sj,k 被表示为:
在这里插入图片描述
对于一副图中的多个key points(红蓝两种点)可能有下图(a)中的灰色的链接方式,接下来把正确的连接方式用黑色线表示,错误的连接方式用绿色线表示,如图(b),然后再施加PAFs(下图©中的黄色箭头)
在这里插入图片描述
S j , k ∗ \bold{S}_{j,k}^* Sj,k 选择所有的人中最“清晰”的点
在这里插入图片描述
至于为什么选max而不是mean,作者专门作图研究过。

4.2.3 Part Affinity Fields for Part Association

这个问题主要是解决,哪些 ket points 属于同一个人。一般的思路是取两个key points 的中间点作为连接对象,但是这种情况不适用于 crowd people的情况,造成这样的原因是:

  1. midpoints仅仅收集了position,并没有收集orientation信息
  2. 拿一条手臂来说,整个手臂被抽象成了一个点,那么这块region的区域携带的信息就被浪费掉了

所以作者用 part affinity fields 来保存 position and orientation信息,也就是 how to calculate the L c ∗ \bold{L}^*_c Lc ,如下图:
在这里插入图片描述
假设 x j 1 , k \bold{x}_{j1,k} xj1,k x j 2 , k \bold{x}_{j2,k} xj2,k分别代表第 k k k个person 的 手臂 c c c中的两个点( j 1 , j 2 j_1, j_2 j1,j2),那么,如果点 P P P在手臂上,那么 L c , k ∗ ( p ) \bold{L}^*_{c,k}(\bold{p}) Lc,k(p) is j 1 j_1 j1 j 2 j_2 j2的unit vector,对于其他点来说,这个vector就是0. 下面是 L c , k ∗ ( p ) \bold{L}^*_{c,k}(\bold{p}) Lc,k(p) 的表达式:
在这里插入图片描述
根据向量分解的关系,可以给点 p \bold{p} p施加一些限制:
在这里插入图片描述
那么,两个key point中间的所有part affinity field 可以表示为:
在这里插入图片描述
其中, n c ( p ) n_c(\bold{p}) nc(p)是这幅图中 k k k个人的手臂在 p p p 点所有不为0向量的均值(人话:通过平均 p p p点的向量,就可以表示这两个关键点的连接方式,就好比在正常状态下:不管在什么场景中,人的手腕和elbow之间的向量是都是固定的,所以这个玩意要是遇到一个骨折的,绝逼识别失败。)

为了证明PAF这个玩意是有效地,作者计算了候选点之间的 line integral(人话:作者计算了预选肢体的PAF的中点,alignment of the predicted PAF with the candidate limb that would be formed by connecting the detected body parts)

特别的,计算了两个候选部分的locations d j 1 \bold{d}_{j1} dj1, d j 2 \bold{d}_{j2} dj2,作者对这两个关键点连接部分进行采样,
其中:

  • d j 2 − d j 1 ∣ ∣ d j 2 − d j 1 ∣ ∣ \frac{\bold{d}_{j2}-\bold{d}_{j1}}{||\bold{d}_{j2}-\bold{d}_{j1}||} dj2dj1dj2dj1求得了两个点之间的单位向量
  • p ( u ) = ( 1 − u ) d j 1 + u d j 2 \bold{p}(u)=(1-u)\bold{d}_{j1}+u\bold{d}_{j2} p(u)=(1u)dj1+udj2 则是表明采样点是 d j 1 \bold{d}_{j1} dj1 d j 2 \bold{d}_{j2} dj2之间的任意一个点
  • 这俩货相乘,在信号处理领域,则是衡量二者的相似性
    在这里插入图片描述
4.2.4. Multi-Person Parsing using PAFs

由于finding the optimal pares是一个NP难问题,因此,作者用了greedy relaxation来寻找高质量的matches。作者推测:能用这个方法的原因是,pair-wise association scores是需要考虑全局信息的,(因为这个玩意是PAF network从大的感知野中的出来的)

第一步,先从多人中检测出候选key point D J = d j m D_J={\bold{d}^m_j} DJ=djm其中, j ∈ { 1... J } j \in \{1...J\} j{1...J}, m ∈ { 1... N j } m \in \{1...N_j\} m{1...Nj} N j N_j Nj候选连接部分 j j j的总数(人话,假设 j j j是头,那么 N j N_j Nj就代表所有可以与这个头相连的key points,可以是自己的nect,也可以是别人的neck), d j m \bold{d}_j^m djm是第 j j j个部分的 m m m个候选点。通俗一点说就是,头部的第m个候选点可以表示为: d 头 m \bold{d}_头^m dm。下面的任务是,找到这个part的连接点。

定义一个变量 z j 1 j 2 m n ∈ { 0 , 1 } z_{j_1j_2}^{mn}\in \{0, 1\} zj1j2mn{0,1}代表 d j 1 m \bold{d}_{j1}^m dj1m d j 2 n \bold{d}_{j2}^n dj2n是否相连,最后的目标是找出所有相连的点,也就是尽量可能的表达出 Z Z Z所有连接的可能性。以下图中右屁股和neck,构造了一个图,点就是候选点 D j 1 D_{j1} Dj1 D j 2 D_{j2} Dj2以及各种可能连接的边,目标构建二分图,保证没有图中的任意两条边都不共享一个节点,因为共享一个节点的话,就说明有个点连错了,我们的目标是find matching with maximum weight for the 已选择的边
在这里插入图片描述
在这里插入图片描述

单单公式太抽象了,具体一点,上图中2个人,从左到右分别编号为 a , b a,b a,b J 1 J1 J1代表橙色点, J 2 J2 J2代表蓝色点, J 3 J3 J3代表绿色点,那么在©图中(也就是作者采用的tree structure)。
对象 a a a橙色的点就可以表示为 j 1 a j_1^a j1a,蓝色的点就可以表示为 j 2 a j_2^a j2a,绿色的点就可以表示为 j 3 a j_3^a j3a
对象 b b b橙色的点就可以表示为 j 1 b j_1^b j1b,蓝色的点就可以表示为 j 2 b j_2^b j2b,绿色的点就可以表示为 j 3 c j_3^c j3c
所以:

  • D J 1 = { d 3 a , d 3 b } D_{J1}=\{ \bold{d}_3^a, \bold{d}_3^b\} DJ1={d3a,d3b},其中 N j 1 = 2 N_{j1}=2 Nj1=2代表 j 1 j_1 j1的候选点的个数;同样的, D J 3 = { d 1 a , d 1 b , d 2 a , d 2 b } D_{J3}=\{ \bold{d}_1^a, \bold{d}_1^b, \bold{d}_2^a, \bold{d}_2^b\} DJ3={d1a,d1b,d2a,d2b},其中 N j 3 = 4 N_{j3}=4 Nj3=4代表 j 3 j_3 j3的候选点的个数。
  • d 1 a \bold{d}_1^a d1a代表第 a a a个人的红色点(肩膀 j 1 j_1 j1)的坐标
  • z j 1 j 2 a b = 0 z_{j_1j_2}^{ab}=0 zj1j2ab=0代表: j 1 a j^a_1 j1a j 2 b j^b_2 j2b不相连;图中, z j 2 j 3 a a = 1 z_{j_2j_3}^{aa}=1 zj2j3aa=1代表: j 2 a j^a_2 j2a j 3 a j^a_3 j3a相连。

然后最后的目标函数是,find a matching with maxium weight for the chosen edges:
在这里插入图片描述
在这里插入图片描述
限制条件很好理解,就是所有的pair只能一一对应,就是说 j 1 m j_1^m j1m这个节点只能与 j 2 n j_2^n j2n中的一个节点匹配,同理对于 j 2 j_2 j2也是一样的

5 Evaluation

6 Conclusion

7 Notes(optional)

8 References(optional)

列出相关性高的文献,以便之后可以继续track下去。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值