CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark

摘要

问题:拥挤场景中的pose估计

文章提出自己的方法,包含两个关键点:

  1. joint-candidate single person pose estimation (SPPE)
  2. global maximum joints association

该方法,对每个节点进行多峰预测,并利用图模型和全局关联,对拥挤场景中不可避免的干扰具有鲁棒性,推理效率高。

介绍

当前数据集MSCOCO,MPII,和AI Challenger 中拥挤场景较少,比如MSCOCO 中67.01%的场景中没有相互重叠的目标

当前的methods随拥挤程度上升,性能下降很快,如下图所示

文章提出了一种新的方法来解决群体中的姿态估计问题,使用全局的view来解决互相干扰的问题。

采用top-down方法

提出一个关节候选的(joint-cadinate)SPPE,还有一个全局最大(权重和)关节关联算法 global maximum joints association algorithm

  • 候选的(关节)列表包括目标关节以及对该目标关节造成干扰的关节
  • 关联算法利用这些候选关节点,构建一个person-joint 的链接图
  • 通过一个全局最大的关节关联(权重和)算法求解这个图中的关节关联问题

效果:在文章提出的数据集上比所有现有的方法高4.8mAP,然后在MSCOCO中提升0.8mAP

方法

SPPE 中 loss设计

目的是设计一种loss,既区别目标关节,也不把干扰关节完全抑制

对于i^{th}人,它的box区域为R_i,经过SPPEnetwork 后得到的热图为P_i

R_i中有两种关节,一种是目标关节(target joints),属于i^{th}目标的,另外一种是干扰关节(interference joints),属于其他目标的

我们的目标是增强热图P_i目标关节的响应,抑制干扰关节的响应。但是,我们并没有直接对其进行抑制,因为当前proposal的干扰节点可以作为其他proposal的目标节点。

因而,我们应该用全局(所有proposal结果)的方法,

Thus, we can leverage interference joints to estimate human poses with other human proposals in a global manner.

因此为了领用这两种候选joint,我们需要P_i中二者输出不同的响应强度

对于i^{th}人的k^{th}关节,SPPE的 相应热图为\text{T}_i^k,其目标设计为一个二维的高斯分布G(\textbf{p}_i^k|\sigma)

将干扰关节定义为一个集合\Omega_i^k,相应的热图定义为C_i^k,由一个高斯混合分布构成\sum_{p\in\Omega_i^k}G(\textbf{p}|\sigma)

那么i^{th}人的loss定义为

Loss_i=\frac{1}{K}\sum_{k=1}^K MSE[\textbf{P}_i^k,\textbf{T}_i^k+\mu \textbf{C}_i^k]

\mu是一个衰减因子在区间[0,1]

如前所述,干扰关节在指示其他人proposal的关节时是有用的。

因此,我们应该通过交叉验证从全局的角度来考虑它。

最后,\mu=0.5,和上述笔者的直觉匹配,即干扰关节的响应应该被抑制,但是不能过度。

传统的热图损失函数可以看作是我们的特例 \mu=0

Person-Joint Graph

检测到的joint数量比实际要多,这是由于冗余的人proposal 以及上述JC SPPE的loss设计

Person-Joint Graph 设计旨在重建最后的human pose 并且减少冗余的joints

Joint Node Building

如下图所示,高度重叠的proposal倾向于检测相同的实际关节

文章首先将,表示同一个实际关节的候选关节点,组合成一个graph node

由于高质量的关节预测,上述表征同一实际关节的候选关节总是彼此接近的。

因此可以通过以下方式进行分组:

给定两个候选节点,坐标分别为p_1^kp_2^k,定义一个控制偏差\delta^k,如果满足下面的条件,就把这两个候选点组合

||p_1^k-p_2^k||_2\leq\min\{u_1^k,u_2^k\}\delta^k

u_1^k,u_2^k是对应的热图相应值,使用min是为了满足,当这两个候选节点同时出现在对方应该出现的范围内(loss定义的范围)

通过把所有的joint组 用一个graph node表示,我们得到joint在graph上的node集合\mathcal{J}=\{v_i^k:\text{for}k\in\{1,\dots,K\},j\in\{1,\dots,N_k\}\}

Person Node Building

图像中M个人proposal在graph上的node定义为

\mathcal{H}=\{h_i:\forall i \in\{1,\dots,M\}\}

理想情况下,一个符合条件的person proposal可以紧密地包围一个person实例。

然而,在拥挤的场景中,这种条件并不总是满足的。person探测器会产生许多冗余的proposal,包括截断和松散的边界框。

文章将在下面的全局person-joint 匹配中把这些冗余的proposal去除

Person-Joint Edge

如果 v_j^k (从上面得到的joint node 其实是一个joint 的 group)中包含了 h_i 的候选joint,那v_j^k 和h_i 之间建立链接 e_{i,j}^k

e_{i,j}^k权重等于该候选节点在热图中的相应值w_{i,j}^k

由此得到一个edge集合 \mathcal{E}=\{e_{i,j}^k:\forall i,j,k\}

Person-Joint graph 可以写成\mathcal{G}= ((\mathcal{H},\mathcal{J}),\mathcal{E})

Globally Optimizing Association

优化目标定义为:

\max_d\mathcal{G}=\max_d\sum_{i,j,k}w_{i,j}^k\cdot d^k_{i,j}

s.t. \sum_j d_{i,j}^k\leq1\sum_i d_{i,j}^k\leq1d_{i,j}^k \in \{0,1\}

因为关节之间相互独立,所以\mathcal{G}= ((\mathcal{H},\mathcal{J}),\mathcal{E})可以被分解为多个子图\mathcal{G}^k= ((\mathcal{H},\mathcal{J}^k),\mathcal{E}^k)

\max_d\mathcal{G}=\sum_{k=1}^K\max_{d^k}\mathcal{G}^k

上述优化问题是一个二分匹配问题,贪婪match、匈牙利算法等都可以用于求解,最好还是匈牙利算法吧……

文章使用updated Kuhn-Munkres algorithm(G. Carpaneto and P. Toth. Algorithm for the solution of the assignment problem for sparse matrices. Computing, 1983.)

来求解上述问题,还没看,后面看了补链接

该算法复杂度为\mathcal{O}(n^2) = \mathcal{O}((|\mathcal{H}|+|\mathcal{J}^k|)^2) \leq\mathcal{O}(|\mathcal{H}|^2),后面部分比较可以通过匈牙利算法理解,二分匹配的匹配对数一定少于等于node较少的那边的node数量

结果对比

猜你喜欢

转载自blog.csdn.net/qq_25379821/article/details/84849791