几篇人体关键点检测的论文

一、Mask R-CNN

Mask R-CNN
Mask R-CNN同时进行目标检测和实例分割,在Faster-RCNN框架基础上增加mask分支,多任务损失为:
L=Lcls+Lbox+Lmask
对于每个RoI,mask分支有Km2维的输出,表示K个分辨率为m×m的二值mask,对应K个类别。使用per-pixel sigmoid生成二值图,定义Lmask为平均二值交叉熵损失。对于具有真值标签k的RoI,Lmask仅对第k个mask定义,其他的mask对损失无贡献。
分类分支预测类别标记,使用这个标记选择输出的mask。这不同于FCN,使用的是per-pixel softmax 交叉熵损失,不同类间的mask有竞争。

Mask表示
Mask是输入目标的空间布局,而类别标记和box预测是将卷积特征图通过fc层折叠到短向量,而提取mask的空间结构需要对卷积特征图进行点到点的对应。论文使用FCN预测m×m的mask,而RoIPool损失了像素的空间结构,作者设计了RoIAlign层。

RoIAlign
RoIPool是提取每个RoI小的特征图的标准操作,RoIPool首先将浮点数的RoI量化为离散粒度的,量化的RoI之后划分为spatial bins(如7×7),并各自量化,之后使用max pooling累积每个bin的特征值。量化的操作为[x/16],16是步长。量化引入了RoI和特征之间的对准误差,这不影响分类,但影响mask预测。

RoIAlign层移除了量化操作,如x/16代替[x/16],使用双线性插值计算输入特征的每个之,操作如下图所示:
Multi person-pose estimation

网络结构
backbone:ResNet-50-C4,ResNet-FPN
网络头:
Multi person-pose estimation
训练过程中IOU>0.5的ROI作为正样本,其余为负样本。mask损失仅对正RoI定义。image-centric训练,每个mini-batch每个GPU有2个图像,每个图像有N个RoIs,正负比为1:3。测试时,proposal的数目是300,预测box并NMS,mask分支对得分最高的100个box预测,每个box有k个mask,仅使用分类分支预测的第k个mask,最后将m×k的mask resize到RoI的尺寸。

实例分割结果比对:
Multi person-pose estimation

Mask R-CNN用于关键点检测
将关键点的位置建模为one-hot mask,使用Mask R-CNN预测K个mask,对应K个关键点类型(如,左肩、右肘)。训练的目标是一个one-hot m×m的而至mask,仅有一个像素标记为前景。训练过程中对于每个真值关键点,最小化m2way softmax交叉熵损失。
关键点检测结果比对:
Multi person-pose estimation
表中方法[6]即为第二篇论文的方法。

二、Realtime multi-person 2d pose estimation using part affinity fields

方法使用Part Affinity Fields(PAF),学习身体部件间的关联。自上而下的方法首先检测人体,然后对每个人进行姿态估计,人越多检测时间越长。自下而上的方法检测图像中所有的关节点,然后将关节点关联到每个人。论文基于Part Affinity Fields,提出的是自下而上的方法,PAF是表示肢体位置和方向的2D向量集。

方法描述
方法的结构如下图所示,系统的输入是一个w×h的彩色图,输出图像上每个行人的2D结构关键点。前向传播网络同时预测2D置信度图S,和部件亲和2D向量L,S包含J个置信度图,每个对应一个part,L=(L1,L2,...,LC)包含C个向量域,每个肢体一个,Lc中每个图像位置对应一个2D向量。置信度图和亲和字段使用双向匹配解析到所有的人。
Multi person-pose estimation
1. 同时检测和关联
网络结构如下图3所示,同时预测置信度图和亲和字段,网络有俩个分支,图中上面的分支预测置信度图,下面的分支预测亲和字段,每个分支是一个迭代预测结构。
Multi person-pose estimation
图像首先使用VGG-19的前10层分析,生成特征图集输入到第一阶段的两个分支。在第一阶段,网络输出置信度图S1=ρ1(F)及部件亲和字段L1=ϕ1(F),其中rho1(F)ϕ1(F)是第一阶段的推断。在接下来的每个极端,前一阶段两个分支的结果和原始图像特征F,串联用于生成更新的预测:
Multi person-pose estimation
下图显示了每个阶段置信度和亲和字段的变化,每个阶段有两个损失函数,均为L2损失:
Multi person-pose estimation
W是二值掩码,位置p处标记不存在时W(p)=0。梯度replenish的方法用来避免梯度消失问题。总体目标函数为:
f=t=1T(fSt+fLt)
2. 置信度图检测
由标记的2D关键点生成置信度图真值S,置信度图是每个身体部件在每个像素出现的置信度。如果对应的身体部件可见,置信度图中应存在一个波峰,如果有多个人出现,每个人k的可见部件j应有一个波峰。
首先对每个人k生成置信度图Sj,k,位置p处的值为:
Multi person-pose estimation
真值置信度图是单个置信度图的max算子累计:
Sj(p)=maxkSj,k(p)
3.部件亲和字段用于部件关联
部件亲和字段如下图所示:
Multi person-pose estimation
对于某个肢体,用2D向量表示肢体中点的方向,每个肢体有一个对应的亲和字段,用于关联两个身体部件。如果点p在肢体上,Lc,k(p)是从身体部件起点j1指向终点j2的单位向量,其他点的值为0。部件亲和字段的真值是所有亲和字段的均值。
测试时,通过计算对应PAF上的线积分测量候选部件检测的候选,及链接候选部件位置的线段。对于两个候选部件位置dj1dj2,在线段上采样预测的PAF,测量它们关联的置信度:
Multi person-pose estimation (10)
4. 使用PAF进行多人解析
对于检测到的身体部件子集,需要找到将肢体连起来的部件对,寻找最优的关联即最大化加权双向图匹配问题。图的节点是部件检测结果,边是所有可能的关联。文中使用关联置信度(10)加权,目标是寻找具有最大权值边的匹配:
Multi person-pose estimation
这里有个没有任意两条边共享节点的约束。确定Z是个K维匹配问题,是非确定性多项式问题,作者增加了两个松弛。第一个是选择最小的边数获取人体姿态生成树骨架。第二个是将批评问题划分为双向匹配问题的子集。如下图所示。树节点由PAF显示建模,而非临近节点由CNN隐式建模。
Multi person-pose estimation

实验结果
Multi person-pose estimation

Multi person-pose estimation

相关文章: