【项目实践】多人姿态估计实践(代码+权重=一键运行)

转载自:AI人工智能初学者
作者:ChaucerG

1、姿态估计的简介

    姿态估计问题就是确定某一三维目标物体的方位指向问题。姿态估计在机器人视觉、动作跟踪和单照相机定标等很多领域都有应用。在不同领域用于姿态估计的传感器是不一样的。

2、Realtime Multi-Person 2D Human Pose Estimation using Part Affinity Fields

2.1、模型结构

    网络分为两路结构,一路是上面的卷积层,用来获得置信图;一路是下面的卷积层,用来获得PAFs。网络分为多个stage,每一个stage结束的时候都有中继监督。每一个stage结束之后,S以及L都和stage1中的F合并。上下两路的loss都是计算预测和理想值之间的L2 loss。

from keras.models import Model

Loss方程中有一个空间上的加权,是因为有些数据集没有完全标注所有的人,用其提供的mask说明有些区域是可能包含没有标记的人。最终的loss是各个阶段的loss相加。

论文在MPII和COCO数据集上都取得了非常好的效果,制作的demo效果也非常好,只是对尺度比较小的人检测效果不如其他算法。

论文所提方法

1,使用置信图进行关节检测

    每一个关节对应一个置信图,图像每一个像素点都有一个置信度,置信图中每点的值与ground truth的距离相关。关于多个人的检测,是将K个人的置信图合并取该点每个人的最大值。这里使用最大而不是平均是因为即使峰值很近也不会影响精度。测试阶段使用非极大值抑制来获得身体部分的候选。

2,使用PAF进行身体部分组合

    对于多个人的问题,检测了不同人的部分,但是还需要将每个人的身体分别组合在一起形成full-body,使用的方法就是论文的精华PAF。这个方法的好处在于将位置和方向信息都包含了。每一种limb(肢)在关联的两个body part之间都有一个亲和区域,其中的每一个像素都有一个2D 向量的描述方向。亲和区map的维度是w*h*2 (因为向量是二维的)。若某个点有多人重叠,则将k个人的vector求和,再除以人数。

3,bottom-up方法

    在得到了置信图和PAF之后,需要考虑如何利用这些信息找到两两body-part最优化的连接方式,这转换为图论问题。论文使用的是Hungarian algorithm。图中的节点就是body part中的检测候选,边就是这些候选最优的连接方式。每条边上的权值就是亲和区的聚合。因此这样的匹配问题就是找到一组连接使

得没有两条边是共享一个节点的,也就是找到权值最大的边连接方式。

2.2、算法流程

下图(a-b-c-d-e)流程为:

1、输入一个图像

  2、对该图像分别预测关键点的热度图和PAF

  3、再根据关键点和肢体最二分匹配进行关联

    4、最终得到图中所有人的所有姿态

import math

2.3、测试结果

参考:

https://blog.csdn.net/qq\_36165459/article/details/78322184

https://zhuanlan.zhihu.com/p/…

https://blog.csdn.net/diligent\_321/article/details/86659763

https://github.com/ZheC/Realtime\_Multi-Person\_Pose\_Estimation

推荐专栏文章

  • 【项目实践】从零开始学习SSD目标检测算法训练自己的数据集(附注释项目代码)
  • 【项目实践】从零开始学习Deep SORT+YOLO V3进行多目标跟踪(附注释项目代码)
  • OCR移动端网络汇总与PyTorch实现

更多嵌入式AI算法部署等请关注极术嵌入式AI专栏

发表评论

邮箱地址不会被公开。 必填项已用*标注