论文:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
github地址:&&&
论文地址:×××
参考文章:
1. https://blog.csdn.net/weixin_41441682/article/details/81357369
2. github 中文论文,https://github.com/assmdx/ComputerVisionDoc/blob/master/openpose/openpose.md,中文论文网站,也就是翻译
3. https://blog.csdn.net/htt789/article/details/80283370,这篇文章分析很透彻,能抓住问题的核心
4. http://jacobkong.github.io/posts/3799204522/ 姿势识别论文总结
自上而下的方法,也就是先用目标检测检测出人物,然后再计算出关键点信心,和自下而上的方法,这种方法是先检测出具体的关键点和具体的胳膊腿等构件,然后再合成到一起。
Figure 1.顶部:多人姿势估计。 同一个人的身体部位之间用线相连。 左下:部分亲和力字段(PAFs)对应于连接右肘和右侧的肢体腕。 颜色编码方向。 右下:放大预测的PAF的视图。 在场中的每个像素处,2D矢量编码四肢的位置和方向
Figure 2.整体过程。 我们将整个图像作为双分支CNN的输入来联合预测置信图,(b)中所示的身体部位检测,以及(c)中所示的部位关联的部分亲和力字段。 解析步骤执行一组二分匹配身体部位候选人的匹配(d)。 我们最终将它们组装成图像中所有人的全身姿势。
网络结构:
模型运作流程:
1.以w*h大小的彩色图像作为输入
2.经过VGG的前10层网络得到一个特征度F
3.网络分成两个循环分支,一个分支用于预测置信图S:关键点(人体关节),一个分支用于预测L:像素点在骨架中的走向(肢体)
4.第一个循环分支以特征图F作为输入,得到一组S1,L1
5.之后的分支分别以上一个分支的输出St-1,Lt-1和特征图F作为输入
6.网络最终输出S,L
损失函数的计算,两种loss求和。
损失函数为每一层循环网络的损失函数之和,接下来说一下两个步骤吧:
第一个就是关键点检测,用的CPM方法。关键点检测,通过图像中标注的2D点Xj,k计算S的groundtruth(S*),其中X (j,k)表示图片中第k个人的第 j 种关节 计算方法:Sj*符合正态分布,当像素点P接近注释点Xj,k时,达到正态曲线的峰值,则每张图像中第j种关节的S,为图像中k个人的正态分布峰值。
第二个步骤为PAF的检测:
其中像素P是否落在肢体上需要满足两个条件
每张图像中第c中肢体的Lc*,为k个人在位置p的向量平均值
评估两个关键点之间的相关性:
关键点dj1,dj2和PAF已知之后,计算两个关键点连线向量和两关键点连线上各像素的PAF向量之间的点积的积分作为两个关键点之间的相关性。
像素p进行采样:
接下来就需要通过PAF计算出来的图的关系来得到一个匹配,最大匹配:匹配边数最多
完美匹配:所有点都是匹配点
最大权重匹配:所有匹配边权重之和最大
最大匹配:匹配边数最多
完美匹配:所有点都是匹配点
最大权重匹配:所有匹配边权重之和最大
求解最大匹配方法:匈牙利算法匈牙利算法