主流的姿态识别通常2个思路:
(1)two-step framework,就是先进行行人检测,得到边界框,然后在每一个边界框中检测人体关键点,连接成一个人形,缺点就是受检测框的影响太大,漏检,误检,IOU大小等都会对结果有影响,代表方法就是RMPE。
问题: 1、识别结果严重受检测器结果的影响,且时间出框个数递增?
2、在此过程中,如何避免关键点的误联的?
(2)part-based framework,就是先对整个图片进行每个人体关键点部件的检测,再将检测到的部件拼接成一个人形,缺点就是会将不同人的不同部位按一个人进行拼接,代表方法就是openpose。
问题 1、例如openpose ,先根据手部关键点,逐步生成人体框架,这里耗时应该也与手有关系吧?
任务: 1、调研openpose与alphapose的速度性能与影响因素
2、手部姿势识别利用top-down 效果好还是down-top效果好
1、Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields (Openpose)
原理:通过自底向上的方式从输入图像获得所有的身体姿势,然后为每个被检测到的人运行额外的脸部和手部关键点探测器
时效性:
1)检测人数影响CNN处理时间(O(1))
2)多人解析(Parsing)耗时为0(n2),但是,解析时间不会显着影响整体运行时间,因为,它比CNN的处理时间少两个数量级.
例如:对于9个人来说,解析花费0.58毫秒,而CNN花费99.6毫秒。我们的方法可以使19个人的视频达到8.8 fps的速度。
网络结构:{VGG-19的前十层+两层CNN}和{CNN-Branch1、CNN-Branch2}两个部分组成。
第一部分: 输出第一部分网络输出F的维度为128w/8*h/8 目的: 卷积网络学习到关键点特征
第二部分:Branch1和Branch2两个网络是级联网络的结构(并行),该结构类似于RNN网络,根据上一时刻的关键点与亲和向量场向量(PAFs)信息共同推演下一时刻。(Part Confidence Maps 和 Part Affinity Fields)
Branch1和Branch2网络Loss层:
其中:
第三步:得到这两个信息后,我们使用图论中的 Bipartite Matching(偶匹配) 求出Part Association,将同一个人的关节点连接起来,由于PAF自身的矢量性,使得生成的偶匹配很正确,最终合并为一个人的整体骨架。
第四步:最后基于PAFs求Multi-Person Parsing—>把Multi-person parsing问题转换成graphs问题—>Hungarian Algorithm(匈牙利算法)
亮点1:PAF-Part Affinity Fields(本paper的核心贡献):
人体姿态检测,通常是top-down的思路,也就是先做行人检测,然后把每一个人分割出来,最后基于每一个独立个体,找出各自的手手脚脚(人体关键点)。这个办法有两个问题:
1.结果严重依赖第一步行人检测器的结果,如果人都没找到,就无从进行找手手脚脚这一步了。
2.计算时间和人数正相关,人越多越耗费时间。
OpenPose 使用了另一种思路,即bottom-up,先找出图中所有的手手脚脚,再用匹配的方法拼装成一个个人体骨架。这种办法有一个缺陷,就是没办法利用全局上下文的信息。
为了克服这个问题,本文想出了一个办法,就是PAF(Part Affinity Fields), 部分区域亲和。它负责在图像域编码着四肢位置和方向的2D矢量。同时,使用CMP(Part Detection Confidence Maps)标记每一个关键点的置信度(就是常说的“热图”)。通过两个分支,联合学习关键点位置和他们之间的联系。
同时推断这些自下而上的检测和关联的方式,利用贪婪分析算法(Greedy parsing Algorithm),能够对全局上下文进行足够的编码,获得高质量的结果,而只是消耗了一小部分计算成本。并行情况下基本达到实时,且耗时与图片中的人数无强关联。
亮点2:终于将人体、人手、人脸的landmarks三元归一
以前,人体骨骼关节点是行为分析动作识别的人做,人脸landmark提取是人脸识别或者美颜算法开发团队做,手部关节点是手势识别人机交互团队在做,属于不同的细分方向。
CMU的团队,因为前期的人体骨骼关节点识别取得了不错的成果,有了更大的目标(野心),于是把人脸人手都整合了进来,做成了一个统一的graph,效果也还可以。face alignment和pose alignment串起来了,而且根据人体头部的刚体属性及四肢的非刚体特性设计了一套基于caffe的点估计与扩散模型,并建立树状决策加速,据此再加