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 ,和分别表示第j个关键点的位置和置信度。对于和分别计算它们之间两个距离:
(1)一定空间范围内的对应关键点的置信度距离:
当位于以为中心的矩形框内的时候按照上式计算置信度距离,否则直接为0;j矩形框的大小设置为的bbox长宽各自的十分之一;tanh(·)是对置信度做一个非线性变换;
(2)对应关键点的位置距离:
最后,和的距离为:
调节置信度距离和位置距离的权重。参数都是在验证集上最大化mAP优化得到的。
(b)帧间pose距离
对于不同两帧中的两个pose和,和为第n个关节点,在各关节点上分别做一个boundingbox,大小为人体boundingbox长款尺寸的十分之一,然后分别计算deep matching特征,得到和。然后根据特征的匹配程度可以计算不同帧间pose的距离:
(2.2) Pose Flow Builder
在完成对每一帧进行人体检测和姿态估计之后,构建Pose Flow的过程就是将不同帧中属于同一个人的Pose连接起来的操作。上面已经计算了帧间pose的距离,那么直接将当前帧中的pose与下一帧中的距离最小的连接起来就是一种解决方案,但是这种贪心算法因为识别误差或误检等原因效果不好。另一方面,如果在空间和时间域上使用graph-cut模型,会因为计算量过大无法实现在线追踪。所以文章提出了一种构建pose flow的方法。为第f帧中的第i个pose,那么根据上面的帧间距离的计算方法,可以找到在第f+1帧中的所有的候选的可连接的pose集合:
其中:
- 表示第f+1帧中的所有pose的集合;
-
是距离阈值,文章中通过交叉验证设置为1/25;
如下图所示,为从t帧到t+T帧检测到的pose(下图及后续相关图片仅为示意,不代表PF过程中的实际结果):
对图中第t帧的最上面pose将其后续帧的所有候选可连接pose全部连接起来得到:
如果对t帧的所有pose(这里只展示了场景中groundtruth的某一个人的检测到的所有pose,实际中还会有其他可能的许多pose)与后续帧中的候选可连接的pose连接起来将得到:
对于这样的一个连接结果,t帧中的一个pose会有很多条“连接”到达后面的帧,这里最大化一个目标函数来寻找一条最佳的连接(最佳的最终“路径”):
其中: - ,也就是初始第t帧的第i个pose;
- ,即是上一帧的所有pose的候选可连接pose的集合任意一个pose;
- ,其中表示pose的boundingbox的置信度分数,和分别表示pose中的关节点的平均置信度分数和最大的置信度分数。
最大化这个目标函数就是要找到一条最佳的“追踪路径”,可以使用动态规划求解。求解之后就得到了从开始的第t帧中的各个pose开始的连接路径,如下图所示,分别用不同的颜色表示不同的连接路径,至此就完成了Pose Flow的构建。
(2.3) Pose Flow NMS
构建完PF之后,需要对相似的PF进行合并,相当于是一个NMS的过程。现有两个Pose Flow 和,他们在时间轴上重叠(在同一帧上都有一个pose,不是必须是同一个pose)的sub PF分别为和,那么他们之间的距离可以表示为:
其中:
- 是前面说的帧间pose距离度量函数;
-
表示取中位数;
有了上面的PF之间的距离度量方法之后,我们可以对所有的PF进行NMS操作,首先选择具有最大的归一化的置信度的PF,然后将其他PF根据分到一些不同的group中,然后对同一个group中的PF进行合并,合并后新的PF中第t帧中的i个关节点的位置和置信度分别为:
其中: - 表示group在t帧时的第k个pose;
- 如果关节点不在图像中,则置信度;
-
表示当输入不为0时结果为1,否则为0;
经过合并之后,将得到下面的结果:
论文结果:
Pose Track 数据集上的实验结果(PoseTrack dataset , PoseTrack paper) [下图结果图片来自原论文]:
-
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;