【人体姿态估计】Openpose 2021-02-15

Openpose最早在2017年提出来,2019年发布改良版和开源库,速度和精度分别增加了约200%和7%。 它属于多人姿态检测中bottom-up的方法,先检测躯体部位,再组成成每个人体。这类方法中最重要的就是如何组合多人画面中分散的关节点,而Openpose提出的一个重要策略就是,PAF,Part Affinity Fields 部位亲和场, 用来对分散的关节点之间建立联系。

PAF乍一听不好理解,我们拆开来一层一层看:
这是一个向量场的集合,其中每一个向量场从属于图像中某一躯体部位,向量场中的每一个向量对应躯体部位区域每一个元素在其中的一个2D向量编码指向下一个关键关节的方向

(b) 所有部位的置信度热图。(c) PAF 部位亲和向量场 (d) 二分图匹配来关联各个身体部分。

PAF部位亲和场

整个区域所有像素的编码向量(一个像素可能对应多个躯体部位)求和平均组成了PAF。看下图,训练时如果P点在部位区域内,P点的向量的ground truth就是归一化的向量v, 如果不在就是零向量。

对每个像素进行编码,指明下一个关节点的方向

由于多人图像中有很多个潜在的躯体部位,最终用来做判断的是所有躯体部位对应的向量场的求和平均。另外我们还需要判断关键点之间的 “亲和” 度,好进行最后的组合,用E 来表示, 再用p(u)=(1-u){\rm d}_{j1}+u{\rm d}_{j2} 对两个部位的位置进行插补:
对区域内向量场积分得到亲和度,用置信度进行权衡

关键点置信图

通过标记好的2D关键点生成置信图


图像位置p在置信图S中的值,j,k为像素坐标,σ控制峰顶的形状,越大越平缓
最终的置信图可能存在多个相同部位,取最大值

用PAF进行多人预测

匹配用greedy relaxation 计算量会小很多,松弛表示通过逐步接近的方式获得相关问题的最佳解法

m,n表示关键点j1,j2的个数,用一个0到1之间的变量z^{mn}_{j1j2}表示两个关键点之间是否是相连的,那么所有可能的z组成一个集合。这个集合是一个图形结构(上图(a)),每条边用E_{mn}作为权重,我们的目标就是使用匈牙利算法最大化所有边的总和。匈牙利算法在openpose的应用例子还可以参考这篇博客

某个匹配c的权值总和
所有配对的总和最大值简化为每个二分图匹配最优解的总和

作者采用了两个松弛方法简化问题:

  1. 选择最小数量的边来获得人体姿势的树骨架,而不是使用完整的图,如上图(b)和(c)对比。
  2. 进一步将匹配问题分解为一组二分图匹配子问题,并独立地确定相邻树节点中的匹配情况。

模型

模型是基于2016年的Convolutional Pose Maschine, 下图中F是经VGG-19前10层作为主干网络处理之后的特征图,ρ 负责预测所有置信图 {S^*} (所有相同部位在同一个图),Φ负责预测所有PAF (每个部位单独占一个)。2017版使用两个分支的多级CNN,19版加深了网络结构,砍掉了置信图的Refine,另外把7*7卷积核换成了3个相连的3*3卷积核,这样既保留了大的感受野又加快了速度。

2017版

2019版

目前的模型还加入了冗余的PAF连接(例如,耳朵和肩膀、手腕和肩膀等之间),特别提高了拥挤图像中的准确性。

总结

openpose 用神经网络预测所有躯体关键点的置信图,以及关键点与关键点相连躯体部位区域的PAF部位亲和向量场,再用匈牙利算法最大化两个关键点之间的亲和度总和的方法进行关键点之间的二分图匹配。


PAF拓展到车辆检测
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容