Pose flow: Efficient Online Pose Tracking 论文解读

paper title:Pose flow: Efficient online pose tracking
paper link:https://arxiv.org/pdf/1802.00977.pdf
project:https://www.mvig.org/research/alphapose.html
oral or demo video:https://www.youtube.com/watch?v=RHNdbEY5xn4
github:https://github.com/MVIG-SJTU/AlphaPose
conf & anthor:BMVC 18, Xiu, Y. et al.
arXiv submit v1: 2018.02

主要内容
这篇文章是AlphaPose项目的文章之一,主要提出通过Pose Flow(PF)实现在线pose追踪的方法。文章中的姿态估计方面主要基于RMPE,追踪方面主要包括两块内容:Pose Flow builder和Pose Flow NMS。PF builder是通过帧内以及帧间pose距离,使用动态规划构建Pose Flow;PF NMS通过合并PF得到最终的追踪结果。

网络结构
(1) 姿态估计
在人体姿态估计方面使用的是two-stage的方法,基本与RMPE中的一致,关于这部分的内容不再赘述。

(2) 姿态追踪
(2.1)帧内,帧间pose距离计算
为了实现追踪,需要计算帧内、帧间的pose的距离,对相似度进行衡量。
(a)帧内pose距离
帧内pose距离基本上与RMPE论文中的一致。具体来说,对于第i和Pose PiP_i,kijk_i^jcijc_i^j分别表示第j个关键点的位置和置信度。对于PiP_iPjP_j分别计算它们之间两个距离:
(1)一定空间范围内的对应关键点的置信度距离:
Dc(Pi,Pjσ1)=ntanh(cin/σ1)tanh(cjn/σ1) D_c(P_i,P_j|\sigma_1) = \sum_ntanh(c_i^n/\sigma_1)*tanh(c_j^n/\sigma_1)
PjP_j位于以PiP_i为中心的矩形框内的时候按照上式计算置信度距离,否则直接为0;j矩形框的大小设置为PiP_i的bbox长宽各自的十分之一;tanh(·)是对置信度做一个非线性变换;
(2)对应关键点的位置距离:
Dk(Pi,Pjσ2)=nexp((kinkjn)2/σ2) D_k(P_i,P_j|\sigma_2) = \sum_nexp((k_i^n-k_j^n)^2/\sigma_2)
最后,PiP_iPjP_j的距离为:
Dintra(Pi,Pjλ)=Dc(Pi,Pjσ1)+λDk(Pi,Pjσ2) D_{intra}(P_i,P_j|\lambda) = D_c(P_i,P_j|\sigma_1) + \lambda D_k(P_i,P_j|\sigma_2)
λ\lambda调节置信度距离和位置距离的权重。参数σ1,σ2,λ\sigma_1,\sigma_2,\lambda都是在验证集上最大化mAP优化得到的。

(b)帧间pose距离
对于不同两帧中的两个posePiP_iPjP_j,PinP_i^nPjnP_j^n为第n个关节点,在各关节点上分别做一个boundingbox,大小为人体boundingbox长款尺寸的十分之一,然后分别计算deep matching特征,得到finf_i^nfjnf_j^n。然后根据特征的匹配程度可以计算不同帧间pose的距离:
Dinter(Pi,Pj)=nfjnfin D_{inter}(P_i,P_j) = \sum_n\frac{f_j^n}{f_i^n}

(2.2) Pose Flow Builder
在完成对每一帧进行人体检测和姿态估计之后,构建Pose Flow的过程就是将不同帧中属于同一个人的Pose连接起来的操作。上面已经计算了帧间pose的距离DinterD_{inter},那么直接将当前帧中的pose与下一帧中的距离最小的连接起来就是一种解决方案,但是这种贪心算法因为识别误差或误检等原因效果不好。另一方面,如果在空间和时间域上使用graph-cut模型,会因为计算量过大无法实现在线追踪。所以文章提出了一种构建pose flow的方法。PifP_i^f为第f帧中的第i个pose,那么根据上面的帧间距离的计算方法,可以找到PifP_i^f在第f+1帧中的所有的候选的可连接的pose集合:
SET(Pif)={PDinter(P,Pif)<η} SET(P_i^f) = \{P|D_{inter}(P,P_i^f)<\eta\}
其中:

  • PP表示第f+1帧中的所有pose的集合;
  • η\eta是距离阈值,文章中通过交叉验证设置为1/25;
    如下图所示,为从t帧到t+T帧检测到的pose(下图及后续相关图片仅为示意,不代表PF过程中的实际结果):
    Pose flow: Efficient Online Pose Tracking 论文解读
    对图中第t帧的最上面pose将其后续帧的所有候选可连接pose全部连接起来得到:
    Pose flow: Efficient Online Pose Tracking 论文解读
    如果对t帧的所有pose(这里只展示了场景中groundtruth的某一个人的检测到的所有pose,实际中还会有其他可能的许多pose)与后续帧中的候选可连接的pose连接起来将得到:
    Pose flow: Efficient Online Pose Tracking 论文解读
    对于这样的一个连接结果,t帧中的一个pose会有很多条“连接”到达后面的帧,这里最大化一个目标函数来寻找一条最佳的连接(最佳的最终“路径”):
    F(t,T)=maxi=tt+Ts(Qi) F(t,T)=max\sum_{i=t}^{t+T}s(Q_i)
    其中:
  • Q0=pitQ_0=p_i^t,也就是初始第t帧的第i个pose;
  • QiSET(Qi1)Q_i\in SET(Q_{i-1}),即QiQ_i是上一帧的所有pose的候选可连接pose的集合任意一个pose;
  • s(Qi)=sbox(Qi)+mean(spose(Qi))+max(spose(Qi))s(Q_i)=s_{box}(Q_i)+mean(s_{pose}(Q_i))+max(s_{pose}(Q_i)),其中sbox(Qi)s_{box}(Q_i)表示pose的boundingbox的置信度分数,mean(spose(Qi))mean(s_{pose}(Q_i))max(spose(Qi))max(s_{pose}(Q_i))分别表示pose中的关节点的平均置信度分数和最大的置信度分数。

最大化这个目标函数FF就是要找到一条最佳的“追踪路径”,可以使用动态规划求解。求解之后就得到了从开始的第t帧中的各个pose开始的连接路径,如下图所示,分别用不同的颜色表示不同的连接路径,至此就完成了Pose Flow的构建。
Pose flow: Efficient Online Pose Tracking 论文解读

(2.3) Pose Flow NMS
构建完PF之后,需要对相似的PF进行合并,相当于是一个NMS的过程。现有两个Pose Flow PFaPF_aPFbPF_b,他们在时间轴上重叠(在同一帧上都有一个pose,不是必须是同一个pose)的sub PF分别为{PFa1,...,PFaN}\{PF_a^1,...,PF_a^N\}{PFb1,...,PFbN}\{PF_b^1,...,PF_b^N\},那么他们之间的距离可以表示为:
DPF(PFa,PFb)=median[{Dintra(PFa1,PFb1),...,Dintra(PFaN,PFbN)}]; D_{PF}(PF_a,PF_b)=median[\{D_{intra}(PF_a^1,PF_b^1),...,D_{intra}(PF_a^N,PF_b^N)\}];
其中:

  • Dintra()D_intra()是前面说的帧间pose距离度量函数;
  • median[]median[]表示取中位数;
    有了上面的PF之间的距离度量方法之后,我们可以对所有的PF进行NMS操作,首先选择具有最大的归一化的置信度的PF,然后将其他PF根据DPFD_{PF}分到一些不同的group中,然后对同一个group中的PF进行合并,合并后新的PF中第t帧中的i个关节点的位置XitX_i^t和置信度sits_i^t分别为:
    X^it=kxi,ktsi,ktsi,kt \hat{X}_i^t = \frac{\sum_{k}{x_{i,k}^t*s_{i,k}^t}}{\sum{s_{i,k}^t}}
    s^it=ksi,kt1(si,kt) \hat{s}_i^t = \frac{\sum_{k}s_{i,k}^t}{\sum1({s_{i,k}^t})}
    其中:
  • kk表示group在t帧时的第k个pose;
  • 如果关节点不在图像中,则置信度si,kt=0s_{i,k}^t=0
  • 1(si,kt)1({s_{i,k}^t})表示当输入不为0时结果为1,否则为0;
    经过合并之后,将得到下面的结果:
    Pose flow: Efficient Online Pose Tracking 论文解读

论文结果
Pose Track 数据集上的实验结果(PoseTrack dataset , PoseTrack paper) [下图结果图片来自原论文]:
Pose flow: Efficient Online Pose Tracking 论文解读

  • MOTA: Multiple Object Tracking Accuracy
  • MOTP: Multiple Object Tracking Precision
  • MT: Mostly Tracked, A track is considered mostly
    tracked if it has been recovered in at least 80% of its length;
  • ML: Mostly Lost,if more than 80% are not tracked;
  • FM: the number of times a groundtruth trajectory is fragmented;
  • IDs: identity switches;

evaluation metrix in PoseTrack paper