人体姿态估计_BottomUp方法中的 keypoint grouping

几个方法里,我最喜欢的还是Assoc. Embed。简单直观。


1. Part Affinity Field

《Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields》CVPR 2017

组合相邻关节点:学习一个2D向量场来连接两个关节点
在这里插入图片描述
part affinity 是一个2D向量场,在两个相连关节点间(limb)的像素,我们用一个2D向量来表达从limb一端到另一端的方向,如下图黄色箭头所示。每种limb都有自己对应的PAF来连接两个相邻关键点。
在这里插入图片描述
在得到所有关节点位置PAF后,我们需要进行grouping。
在这里插入图片描述
Greedy relaxation:对整张连通图(a)进行组合优化是一个NP Hard的问题。根据人体结构,我们可以将其删减为树状(b)。再分解为一系列二部图匹配问题(c),此时可用匈牙利算法来求解。

从实验结果中发现,将grouping问题解耦成多个子问题仍能保持很高的组合精度,同时大幅提升了速度。作者认为这是因为在网络中采用了大感受野,使这些pair-wise的组合分数也隐性包含了全局信息。

在这里插入图片描述


2. Associative Embedding

《Associative Embedding: End-to-End Learning for Joint Detection and Grouping 》NIPS 2017

借鉴了word embedding的思想,为每个关节点生成一个embedding,通过embedding之间的距离来组合关节点。作者发现1D embedding就已经足够表达,也可以称之为tag。

文章的思想很直观,方法也很简单。网络不需要two branch,只需要在原来输出的heatmap中增加几层来表达embedding即可。这个方法很容易集成到各种bottom up的方法中去,比如HigherHRNet(CVPR2020)就是使用Assoc. Embed的方式来进行组合的。

grouping loss的设计比较高效。不是所有检测到的关节点间都进行两两对比,而是对每个人计算中心值reference embedding。使属于某人的关节点与该人中心值接近,不同人的中心值相互远离。(和LDA思想一致)
L g ( h , T ) = 1 N K ∑ n ∑ k ( h ˉ n − h k ( x n k ) ) 2 + 1 N 2 ∑ n ∑ n ′ exp ⁡ { − 1 2 σ 2 ( h ˉ n − h ˉ n ′ ) 2 } L_{g}(h, T)=\frac{1}{N K} \sum_{n} \sum_{k}\left(\bar{h}_{n}-h_{k}\left(x_{n k}\right)\right)^{2}+\frac{1}{N^{2}} \sum_{n} \sum_{n^{\prime}} \exp \left\{-\frac{1}{2 \sigma^{2}}\left(\bar{h}_{n}-\bar{h}_{n^{\prime}}\right)^{2}\right\} Lg(h,T)=NK1nk(hˉnhk(xnk))2+N21nnexp{2σ21(hˉnhˉn)2}

那么,在得到关节点位置及其embedding之后,如何进行grouping呢?

按照关节点的某个指定顺序进行。首先,用第一个关节点类型(比如脖子)来形成初始检测池 initial pool of detected people. 接下来的每一轮都对某类型关节点进行指派,依次选取最高检测得分的关节点,将其分配给embedding最近的人,如果这个距离大于某个阈值,则为它在检测池中创建一个新的人。(有点像tracking的匹配方式)

在这里插入图片描述


3. MultiPoseNet

《MultiPoseNet: Fast Multi-Person Pose Estimation using Pose Residual Network》ECCV 2018

在这里插入图片描述
同一个backbone两个分支,同时预测关节点heatmap和人的检测框。用检测框对heatmap做crop&resize,提取RoI,输入Pose Residual Net(PRN)中,输出属于这个人的keypoint heatmap。

在这里插入图片描述
我认为这个模型最大的弊端,是它需要割裂地训练3个子网

  1. 首先训练keypoint子网
  2. 固定backbone参数,训练detection子网
  3. 用上述两个子网来生成数据,训练PRN子网

这样的训练不仅速度慢,还割裂了几个网络间的信息传递。如果模型能够end-to-end地进行学习,就能更好地利用彼此的信息。

在这里插入图片描述
网络结构这么复杂,inference速度居然比Assoc. Embed快,不符合我的直觉。推测可能是backbone的原因,本文用了ResNet,而Assoc. Embed 用的是stacked hourglass。只是推测,还未进行实验验证


4. PersonLab

《PersonLab: Person Pose Estimation and Instance Segmentation with a Bottom-Up, Part-Based, Geometric Embedding Model》ECCV18

一篇将姿态估计和实例分割结合起来的工作,这里我只关心姿态估计的grouping方法。

在这里插入图片描述
定位:与传统的基于高斯分布的heatmap不同,本文采用了混合分类/回归的方式来进行关节点位置预测,即对每类关节点输出0/1二值heatmap二维offsets,通过用heatmap检测得分加权的Hough voting来找到每个关节点的位置。

组合依据:网络同时输出mid-range offsets,即直接回归相邻关节点的offset。结合short-range offset进行多次修正,这个修正方式也是本文很大的创新点。

与PAF不同,PAF中每个位置的向量是unit vector,需要通过区域内采样相加来得到两个关节点的相连性。而本文每个点都直接回归了offset。

在这里插入图片描述
greedy grouping:将所有Hough得分高于阈值的关节点放入一个Priority Queue,每次取出其中得分最高的关节点,如果这个点与先前已检测到的人的同类型关节点重合,则丢弃它;否则以这个关节点为起点创建一个新的人的检测实例,根据mid-range offset去贪心地连接相邻点。

与Assoc. Embed不同,本文在组合时不遵循固定的关节点顺序,而是从检测得分最高的关节点开始组合。这有助于保留那些被部分遮挡的人体。

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值