论文地址:https://arxiv.org/abs/1611.08050
Github主页:https://github.com/ZheC/Realtime_Multi-Person_Pose_Estimation
网络架构
文章代码总共分为两条线
第一条线:求所有的关键点(头,肩膀,手肘,手腕 ... )
1)一共两个cnn,第一个cnn的输入是原图,输出是热图(每一个热图包含某一种关键点)
2)第二个cnn输入是上一个cnn得到的所有热图,和原图。输出还是热图。循环直至收敛
,共17个关键点,分别是:
Nose = 0 # 鼻子
Neck = 1 # 脖子
RShoulder = 2 # 右肩
RElbow = 3 # 右肘
RWrist = 4 # 右手腕
LShoulder = 5 # 左肩
LElbow = 6 # 左肘
LWrist = 7 # 左手腕
RHip = 8 # 右臀
RKnee = 9 # 右膝盖
RAnkle = 10 # 右脚踝
LHip = 11 # 左臀
LKnee = 12 # 左膝盖
LAnkle = 13 # 左脚踝
REye = 14 # 右眼
LEye = 15 # 左眼
REar = 16 # 右耳
LEar = 17 # 左耳
Background = 18
第二条线:求所有关节区域
1)一共两个cnn,第一个cnn的输入是原图,输出是热图(每一个热图包含某一种连接(可以简单理解为骨头)区域),其实它们是一整片区域,不过每个地方的概率大小不同。
2)第二个cnn输入是上一个cnn得到的所有热图,和原图。输出还是热图。循环直至收敛
根据前边两个阶段得到的两个热图,计算哪两个点连接比较好。这就要根据关节区域和点的位置来计算每个像素的小法向。生成一个法向图。
根据前边生成的法向图,第一条线中最后得到的各个点的连线,确定哪两个点的连线的概率最大,找到所有这样的线。找到一个线就可以开始用最小生成树算法来找下一条线,最终得到一个人的骨架,然后得到所有的骨架,如果有连接不完整的,那就残缺的存在就好了。
网友评论