一,openpose是一种自底向上的算法:
OpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以Caffe为框架开发的开源库。可以实现人体动作、面部表情、手指运动等姿态估计。适用于单人和多人,具有极好的鲁棒性。是世界上首个基于深度学习的实时多人二维姿态估计应用,基于它的实例如雨后春笋般涌现。
检测所有的关键点,再group成不同的人,是当前比较流行的人体姿态评估算法之一。OpenPose 大获成功的一部分原因是它在 GitHub 上开源了其实现代码
(https://github.com/CMU-Perceptual-Computing-Lab/openpose),并配有详细的说明文档。
和很多自底向上的方法一样,OpenPose 首先检测出图像中所有人的关节(关键点),然后将检出的关键点分配给每个对应的人。下图展示了 OpenPose 模型的架构。
二,openpose算法:
1.输入一幅图像,经过VGG19卷积网络提取特征,得到一组特征图,然后分成两个岔路Branch1&2,分别使用 CNN网络提取Part Confidence Maps(置信度) 和 Part Affinity Fields(关联度);
2.得到这两个信息后,我们使用图论中的 Bipartite Matching(偶匹配) 求出Part Association,将同一个人的关节点连接起来,由于PAF自身的矢量性,使得生成的偶匹配很正确,最终合并为一个人的整体骨架;
3.最后基于PAFs求Multi-Person Parsing—>把Multi-person parsing问题转换成graphs问题—>Hungarian Algorithm(匈牙利算法)(匈牙利算法是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。)
三,关键点热图与矢量图(heatmap&vectmap):
如,一共有19个关键点,就会生成19个通道的热图,每一个通道为某个关节的热图分布(也就是概率图)。同时会生成192个通道的矢量图,为什么是192呢?因为矢量图分为两个方向,一个是X方向、一个是Y方向。
heatmap生成关键点热力图,未在图内且未标注的关键点生成的heatmap所有值都为0。一共19个heatmap,其中最后一个代表背景。
vectormap 向量叉乘,vectormap是heatmap的两倍为38个(19*2),因为有19条的关键点连接线,每一条线使用向量表示,分别有x轴的map,以及y轴的map。
四,coco keypoints 标注 以及tf-openpose的标注的不同