2D/3D姿态估计整理
主要参考:
https://www.jianshu.com/p/39fe654ed410
https://blog.****.net/sinat_26917383/article/details/79704097
2个思路:
1)Top-Down(自上而下)方法:将人体检测和关键点检测分离,在图像上首先进行人体检测,找到所有的人体框,对每个人体框图再使用关键点检测,这类方法往往比较慢,但姿态估计准确度较高。目前的主流是CPM,Hourglass,CPM,Alpha Pose等。
2)Bottom-Up(自下而上)方法:先检测图像中人体部件,然后将图像中多人人体的部件分别组合成人体,因此这类方法在测试推断的时候往往更快速,准确度稍低。典型就是COCO2016年人体关键点检测冠军Open Pose。
经典模型
CPM
论文:https://arxiv.org/abs/1602.00134
代码:https://github.com/shihenw/convolutional-pose-machines-release
解析:https://blog.****.net/u010579901/article/details/79606257
主要思想:
论文设计的网络分为多个阶段(stage):前面阶段使用原始图片作为输入,后面阶段使用之前阶段生成的特征图作为输入,这样做主要是为了融合空间信息,纹理信息。
论文中,为了进一步提升精度,采用加大网络的感受野的方式来学习各个部件 parts 之间的空间几何约束关系, 保证精度的同时考虑各个部件的远距离关系.
同时,网络采用全卷机网络(FCN), 可以 end-to-end joint training, 同时为了防止梯度消失, 在各个阶段中添加监督信息, 避免网络过深难以优化的问题.
Stage 1 input是原始图像,经过全卷机网络,输出是一个P+1层的2Dmap。其中,全卷积网络中有7个卷积层,3个池化层,原始输入图片是 368368 ,经过3次池化后得到 4646 大小。又因为这里使用的数据库是半身结构,只有9个关节点,因此加上背景,输出的响应图大小应该是 464610。
Stage 2 input是 Stage1 的 Output 响应谱,并且加上原始图像通过几层网络后的特征谱 feature map。输出是一个P+1层的2Dmap。其中,stage 2 融合了三部分的信息–一是stage1的响应图,二是原始图像的图像特征,三是高斯模版生成的中心约束。图像深度变为10+32+1 = 43。
Stage 3 及其后面各个阶段的网络结构和 Stage 2 相似
为了防止训练时出现梯度消失的问题:论文采用了中层监督(加入中层loss),加强反向传播。
注: 在cpm网络结构中,网络有一个格外的输入: center map,center map为一个高斯响应。因为cpm处理的是单人pose的问题,如果图片中有多人,那么center map可以告诉网络,目前要处理的那个人的位置。因为这样的设置,cpm也可以自底向上地处理多人pose的问题。
随着stage的增长,CPM会学习到parts之间的空间几何约束关系来纠正容易出错的情况.
CMU OpenPose
论文解析:https://blog.****.net/wwwhp/article/details/88782851
https://blog.****.net/weixin_41665360/article/details/90905476
核心思想:
文章的核心是提出一种利用Part Affinity Fields(PAFs)的自下而上的人体姿态估计算法。研究自下而上算法(得到关键点位置再获得骨架)而不是自上而下算法(先检测人,再回归关键点),是因为后者运算时间会随着图像中人的个数而显著增加,而自下而上所需计算时间基本不变。
首先是输入一张原始图片,经过基础网络VGG进行简单的特征提取,得到一个Feature map,然后在stage1,经过两个分支分别预测。第一个分支为关键点的分支,这个分支也为CPM的经典方法,此外在这个分支的基础之上增加了PAF骨骼点走向的分支。之后的阶段与上面的类似,最终得到网络的输出S,L。
损失函数的计算,两种loss求和。