文章:
Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields ∗
代码:
https://github.com/CMU-Perceptual-Computing-Lab/openpose
文章代码总共分为两条线
第一条线:求所有的关键点(头,肩膀,手肘,手腕 ... )
1)一共两个cnn,第一个cnn的输入是原图,输出是热图(每一个热图包含某一种关键点)
2)第二个cnn输入是上一个cnn得到的所有热图,和原图。输出还是热图。
循环直至收敛
第二条线:求所有关节区域
1)一共两个cnn,第一个cnn的输入是原图,输出是热图(每一个热图包含某一种连接(可以简单理解为骨头)区域),其实它们是一整片区域,不过每个地方的概率大小不同。
2)第二个cnn输入是上一个cnn得到的所有热图,和原图。输出还是热图。
循环直至收敛
根据前边两个阶段得到的两个热图,计算哪两个点连接比较好。这就要根据关节区域和点的位置来计算每个像素的小法向。生成一个法向图。
根据前边生成的法向图,第一条线中最后得到的各个点的连线,确定哪两个点的连线的概率最大,找到所有这样的线。找到一个线就可以开始用最小生成树算法来找下一条线,最终得到一个人的骨架,然后得到所有的骨架,如果有连接不完整的,那就残缺的存在就好了。