OpenPose:实时多人2D姿势估计

该方法使用一种非参数表达,即Part Affinity Fields (PAFs),学习将身体部分与图片中人关联起来。

Part Affinity Fields: 是一组2D向量域的集合,编码四肢在图像空间的方向和位置。

文中提出PAF refinement对提升准确率是至关重要的,而身体部位预测的refinement不是那么重要,而且取出这部分的refine可以提高速度。

OpenPose文章阅读笔记

输入:一张w x h的彩色图像 

输出:每个人的关节点在图像中的2D位置

方法:

         S包含J个置信图,每个表示一个部位;L包含C个向量场,每个表示一个肢体,文中将一对身体部位作为一个肢体。

  1. 前馈网络:预测身体部位位置的2D置信图S和2D向量场L(表示PAF,编码部分间的关联角度);
  2. 贪心推断:划分置信图和PAF,输出所有人的2D关键点。 

网络架构:

OpenPose文章阅读笔记

 F:第一阶段输入,来自于预训练并finetuned的VGG-19的第10层特征;

蓝色部分:第一阶段,输出一组PAF,OpenPose文章阅读笔记OpenPose文章阅读笔记。第一阶段迭代T_P次,然后进入第二阶段;

米黄色部分:第二阶段,输出部位置信图S,OpenPose文章阅读笔记OpenPose文章阅读笔记

两个部分迭代进行训练,目标函数是计算预测结果与groundtruth之间的L2加权损失:

OpenPose文章阅读笔记

OpenPose文章阅读笔记

其中上标*表示对应的groundtruth标注,W是二值掩码,当点p处没有标注时,W(p) = 0。

整体训练目标:

OpenPose文章阅读笔记

 部位置信图的grountruth生成:我们首先为每个人k生成置信图,令OpenPose文章阅读笔记表示人物k身体部位j的groundtruth位置标注,位置p的部位置信图的值为:

OpenPose文章阅读笔记

整个图像的部位置信图的groundtruth为个体置信图的聚合:OpenPose文章阅读笔记

 PAF是每个肢体的2D向量场,区域中的每个像素属于一个特定的肢体,使用一个2D向量编码该像素从该肢体的一个部位到另一个部位的方向。

OpenPose文章阅读笔记

 如上图所示,OpenPose文章阅读笔记OpenPose文章阅读笔记是人物k的身体部位j1和j2的groundtruth位置,如果一个点p位于该肢体上,那么该点的groudntruth PAF值OpenPose文章阅读笔记是从j1到j2的单位向量,如果点不在该肢体上,向量为0,即:

OpenPose文章阅读笔记

其中OpenPose文章阅读笔记,位于肢体c上的点集受距离约束:OpenPose文章阅读笔记其中,OpenPose文章阅读笔记

整个图像PAF groundtruth定义为所有人的PAF平均:OpenPose文章阅读笔记

测试过程中,我们通过计算沿着连接两个候选部位的线段的PAF积分作为候选部位的关联程度。对于两个候选肢体位置OpenPose文章阅读笔记OpenPose文章阅读笔记,我们沿着它们之间的线段采样预测的PAF ,计算它们连接的置信度:

OpenPose文章阅读笔记

其中p(u)表示两个身体部位位置的插值:OpenPose文章阅读笔记

我们在检测到的部位置信图上应用非极大值抑制,获得一个离散的部位候选位置集合OpenPose文章阅读笔记,其中OpenPose文章阅读笔记OpenPose文章阅读笔记,我们需要从中发现部位对构成肢体。目标是从中找出所有可能连接OpenPose文章阅读笔记OpenPose文章阅读笔记中的最优分配,其中OpenPose文章阅读笔记表明是否两个候选部位被连接。

如果考虑第c个肢体是一对部位的连接问题,该问题可以形式化为一个最大加权无向图匹配bipartite graph matching问题:

OpenPose文章阅读笔记

该问题可使用Hungarian算法获得最优匹配。

考虑多人整个身体姿势问题,决定Z是一个k-维匹配问题,是一个NP-hard问题。该文章提出两种relaxation方法进行优化:

  1. 选择最小数量的边,构成人体姿势的spanning tree骨架;
  2. 分解匹配问题为一组双边匹配子问题,独立地决定邻接树节点的匹配。

通过上述relaxations,优化问题被简单分解为:OpenPose文章阅读笔记

因此我们独立地获得每种limb类型的连接候选。获得所有limb连接候选之后,我们将分享相同部位检测候选的连接集合作为整个人体的姿势。

后面将继续研究其代码,如有错误欢迎批评指正!

 

相关文章: