论文链接:Convolutional Pose Machines
时间:2016.2.12 CVPR2016
作者团队:CMU
分类:计算机视觉--人体关键点检测--2D top-down
目录:
1.CPM背景
2.CPM算法流程
3.CPM结果评估
4.CPM网络架构图
5.引用
1.主要在于学习记录,如有侵权,私聊我修改
2.水平有限,不足之处感谢指出
1.CPM背景
- CPM算法是基于热图检测的方法,继承姿态机Pose Mchines(PM)的优势,也可以采用topdown方法检测多人。
-
PM算法:将人体姿态的各个部分分别建立对应的回归模型,使得每个部分的关键点坐标能够被精确地识别和定位。
step1:提取特征,将人体姿态的不同部位分别输入到不同的回归器中进行训练
step2:将这些回归器按照人体姿态的部位顺序连接起来,形成人体姿态
image.png
网络分为多个层级多个stage,第一个stage将从patch得到的特征作为输入,经过多分类器得到各个part的置信度,接下来的stage同时将特征和上一个stage在不同层级上得到的上下文信息作为输入,经过分类器得到这个阶段各个part的置信,此时得到的结果比stage1的结果好
3.CPM大部分流程与Pose Machine保持一致,(a)和(b)与pose machine的结构基本相同。
针对于CPM的每一个stage(除了第一个stage),图像数据输入和上一个stage输出的heat map经过特征函数处理,作为下一个特征图的输入,重复进行heat map和loss计算。(c)和(d)是其对应的卷积网络结构,(e)展示图片在网络中传输的不同阶段的感受野。
CPM的第一阶段只从局部图像信息中预测关键点特征,因为第一个阶段的感受野限制在输出像素位置周围很小的区域。
为了达到一定的精度,把输入的裁剪图像归一化到368×368大小,整个网络的感受野大小为160×160。然后从每个160×160图像块中回归出长度为P+1的输出向量,p为关键点个数。
2.CPM算法流程
对于stage1: 对输入图片做处理,经过VGG提取图像卷积特征,后接两个1×1卷积输出heatmaps(shape为h'×w'×(P+1)),P+1通道表示heatmaps上每个像素位置是P个关键点(关节)+1个背景的得分socre。
对于stage1以外的stage的 输入包含:原图、之前stage输出的heatmap、每个目标的中心约束map;对原始图像输入进行特征提取,与上一个stage的输出进行concat操作,进入卷积神经网络计算得到输出为P+1通道的heatmaps。
第一阶段对于具有外观一致性的关键点的检测率较高,但是对于在人体骨骼运动链中处于较低位置的关键点来说,精度较低。
研究发现关键点周围的heatmaps虽然噪声很多,但是信息量也很大。于是设计多阶段预测器,可以使用图像上位置周围区域的带噪heatmaps生成空间上下文信息,来提高预测结果。
第二阶段网络输出层的感受野必须足够大,以保证网络具有学习各个关键点间复杂和长距离关系的潜力。
解决方法:将之前阶段的输出特征往后传递,后续阶段的卷积层可以选取最有用的特征,让分类器自由地组合上下文信息
通过对归一化尺寸为304×304的输入图像进行一系列的实验,检测准确率随着感受野的变化而增大。在250像素的时候趋于饱和,恰好是归一化后的目标(人)的大小。
为了适应数据集,把裁剪后的图像归一化为368×368,第二阶段在第一阶段输出heatmaps上的感受野设置为31×31,等价于在原始输入图像上的感受野为400×400,能可以覆盖图像中任何一对关键点。
另外阶段越多,有效感受野越大,因此stage设置为6。
为了解决梯度消失问题,在每个阶段后,将求和中的每一项应用到网络中,从而有效地强制监督中间阶段。即使整个网络有很多层,也不会出现梯度消失,因为中间损失函数会在每个阶段补充梯度。
3.CPM结果评估
为了比较不同训练策略下的网络检测率,使用LSP数据集、以人为中心的标注。以四种方式训练模型:(1)联合训练+中间监督(2)不联合训练(3)先分开训练+再联合训练+中间监督(4)联合训练,不用中间监督。结果表明联合训练+中间监督最优。
性能随着阶段的提高而提高,到5-stage的时候趋于饱和,在6-stage精度减弱,因此设定stage=6。
CPM与PM的精度对比(a);不同训练策略的精度(b);各阶段精度(c)
PCK指标:在17年前广泛使用,计算检测的关键点与其对应的groundtruth间的归一化距离小于设定阈值的比例。
其中 i表示id为 i的关键点;k表示第k个阈值 ;p表示第p个行人
𝑑𝑝𝑖表示第 p个人中id为i的关键点的预测值和groundtruth的欧式距离
𝑑𝑝^𝑑𝑒𝑓表示第p个人的尺度因子,这个因子不同公开数据集使用的计算方法不同,FLIC 中是以躯干直径作为归一化参考,MPII 中是以头部长度作为归一化参考,即PCKh
𝑇𝑘表示人工设定的阈值, 𝑇𝑘∈[0:0.01:0.1]