目录
一.了解CPMs
CPMs(Convolutional Pose Machines):基于序列化的全卷积网络结构,学习空间信息和纹理信息,估计人体姿态.
本文使用CNN进行人体姿态估计,它的主要贡献在于使用顺序化的卷积架构来表达空间信息和纹理信息。顺序化的卷积架构表现在网络分为多个阶段,每一个阶段都有监督训练的部分。前面的阶段使用原始图片作为输入,后面阶段使用之前阶段的特征图作为输入,主要是为了融合空间信息,纹理信息和中心约束。另外,对同一个卷积架构同时使用多个尺度处理输入的特征和响应,既能保证精度,又考虑了各部件之间的远近距离关系。
一句话总结,CPMs就是将PM中的特征提取和上下文信息提取用CNN来实现了,以belief maps的形式表示预测结果(能够保留空间信息),在全卷积的结构下使用中间监督进行端到端的训练和测试,极大提高了关键点检测的准确率。
介绍CPMs之前,先了解以下内容:
- Pose Machines 是一种序列化的预测框架,可以学习信息丰富的空间信息模型
- CPMs 是将 Convolutional Network 整合进 Pose Machines,以学习图像特征和图像相关的空间模型,估计人体姿态
- CPMs 对 long-range 范围内变量间的关系进行建模,以处理结构化预测任务,如:人体姿态估计
- CPMs 是由全卷积网络组成的序列化结构,卷积网络直接在前一阶段的置信图(belief maps)操作,输出越来越精细化的关节点位置估计结果
- CPMs 能够同时学习图像和空间信息的特征表示,并且不需要构建任何显式的关节点间关系模型
- 中间监督 loss 解决梯度消失(vanishing gradients)问题
- 反向传播进行端到端的训练
二.介绍CPMs
1.Introduction
本文提出卷积姿态机(Convolutional Pose Machines)完成关节姿态估计任务。
- CPMs继承了姿态机的优势:
- 隐式学习图像和多个关节组件的long-range依赖
- 学习与推理之间的紧密结合
- 模块化顺序设计
- CPMs将姿态机的优势与卷积网络的优势相结合,卷积网络的优势:
- 直接从数据中学习图像特征表达和空间上下文特征表达的能力
- 允许反向传播进行全局联合训练的一种全可微的(differentiable)结构
- 有效处理大规模训练数据集的能力
- 关于结构
- CPMs包含一系列卷积网络,这些卷积网络顺序地重复地生成2D belief maps(用于定位每个关节点)。
- CPMs的每个阶段将上一阶段生成的图像特征和belief maps将作为输入,belief maps为后续阶段提供了各个parts位置的空间不确定性的非参数化编码表达。
这使得CPMs可以学习包含各关节间关系的丰富空间模型。 - 与之前解析belief maps的方法不同,本文使用卷积网络直接操作中间的belief maps,为每张图像隐式地学习各关节间的的空间模型。整个多阶段的结构都是可微的,因此可以使用反向传播进行端到端的训练。
- 在CPMs的每个特定阶段,belief maps所包含的空间上下文信息会为之后的阶段提供明确的线索(cues),因此CPMs的每个阶段会产生越来越好的maps来对关节进行更准确的定位(见Figure1)。
- 为了捕获不同关节的long-range关系,需要尽可能获取大的接受野。(卷积的时候感受野越大越能捕获到远距离的上下文关系)。
大感受野 -> 学习远距离空间关系 -> 提升精度 - 在CPMs里多个卷积顺序组合带来梯度弥散,因此使用中间监督来解决梯度消失问题
本文的主要贡献:
- 使用卷积结构的顺序组合学习隐式空间模型。
- 系统地设计和训练这样一个结构来学习图像特征和依赖图像的空间模型(一张图片的各个关节的关系),不需要任何图形学推理模型。
- 在基准数据集(MPII、LSP和FLIC数据集)上取得了最先进的结果。
2.Methods
2.1 姿态机(Pose Machines)
将人体结构分解为p个部分(即文中所指的land-mark),每个部分的坐标记为 Yp , Yp ∈ Z ,Z是图像上所有点(u,v)的集合,目标则是预测图像上所有p个关节点的位置,Y = (Y1,…, Yp )。
姿态机(见下面Figure2)包含了一系列用于预测每个阶段中每个关键点位置的多类预测器 gt(·), 每个阶段 t ∈ {1,…,T},分类器 gt(·)输出每个关节点位置的置信 Yp= z,z ∈ Z。
gt(·) 的输入= xz (从图像 z处提取到的特征)+ Yp 的邻域的上下文信息(来自前一阶段分类器)
t=1 时,分类器 g1 输出关节点的置信值:
b1p(Yp = z) 表示第一阶段分类器 g1 将目标第p个关节点的位置预测为 z 的分数(置信度),进一步,把t阶段第p个关节点的位置预测为图像上任意一个位置的分数表示为:
b1p(Yp = z) 表示为 btp [u,v],记在图片每个位置 z=(u,v)关节点 p 的所有置信分数为 btp ∈ Rw×h ,w 和 h 分别为图片的宽和高。
最后某个t阶段的所有关节点的belief maps 集合为:bt ∈ Rw×h×(P+1) (P 个关节点加上一个背景类)
t>=2时,预测器基于两种输入来预测图片关节点位置的置信:
- 图片特征 xtz ∈ Rd
- 前一阶段分类器输出的空间内容信息(contextual information)
其中 ψt>1(⋅) 是置信 bt−1 到上下文特征的映射,后续阶段所用到的图像特征 x′ 与 t=1 所用到的图像特征 x 可以是不同的。
Pose Machine 采用 boosted 随机森林 作为分类器 gt(·),手工设计所有阶段的图像特征 x′ = x,手工设计 ψt(⋅) 来学习所有阶段的空间信息。
2.2 卷积姿态机(Convolutional Pose Machines)
CPMs 同时利用深度卷积网络的优点,和 Pose Machine 框架的空间建模。
处理流程:
- 基于每个 scale,计算网络预测的各关节点 belief maps
- 依次累加每个关节点对应的所有 scales 的 belief maps
- 根据累加 belief maps,如果其最大值大于指定阈值,则该最大值所在位置 (u,v) 即为预测的关节点位置
使用局部图像信息定位关键点
图(c) 用卷积网络从局部图像中预测关节点位置的网络结构图
CPMs的第一阶段只从局部图像信息中预测关节点,指的是,网络的感受野被约束到输出像素值的局部区域,之所以说是局部信息是因为第一个阶段的接受野限制在了输出像素位置周围一个很小的区域中。
输入图片经过卷积网络,输出关节点的预测结果,本文中输入图片大小统一为368 * 368 ,经过 5 个卷积层和 2 个 1×1 卷积层和三层池化层,变为 46*46大小的feature maps,共产生 P+1个feature maps。
在实际处理中,为了达到一定的精度,把输入的裁剪图像归一化到368×368大小,整个网络的接受野大小为160×160。可以将网络有效地视为在图像上滑动深层网络,然后从每个160×160图像块中回归出长度为P+1的输出向量,表示该图像上每个位置的得分。
带有空间上下文信息的级联预测
Figure3 来自易于检测的关节点的 belief maps 的空间信息可以为定位难以检测的关节点提供强有力的线索。肩部、颈部和头部的空间信息有助于在后续阶段消除右肘信念图上的错误(红色)和增强正确(绿色)估计。
在 t>1 时,分类器 gt>1(·) 可以利用在图像位置 z 的周围区域存在一定 noisy 的 belief maps 的空间内容信息(spatial context),根据关节点一致性几何关系,提高分类器的预测效果。
在t=2时,g2(·) 输入 = xz2 + 特征函数 ψ 计算上一阶段各个关节点的上下文信息 + 生成的 center 的 Gaussian 中心约束
在t>2 时,分类器 gt>2 的输入,不再包括原始图片特征,而是替换为上一层的卷积结果,其它的输入与 t=2 相同。
特征函数 ψ 的作用是对先前 stage 不同关节点的空间 belief maps 编码。CPMs 没有显式函数来计算空间内容特征,而是定义特征函数 ψ 作为分类器在先前 stage 的 beliefs 上的接受野。
网络设计时的原则是:第二阶段网络输出层的接受野必须足够大,以保证网络具有学习各个关键点间复杂和长距离关系的潜力。CPMs 介绍了关于大接受野的好处,接受野对于精度的影响,如图:
准确率会随着接受野的尺寸增大而提高,在大约250时趋于饱和,在FLIC数据集上,通过对归一化尺寸为304×304的输入图像进行一系列的实验,发现检测准确率随着接受野的变化而增大。
得到大的接受野的方法:
- 通过池化操作得到(牺牲精度)
- 通过增大卷积核的尺寸来实现(增加参数数量)
- 通过增加卷积层层数实现(训练的时候可能会遇到梯度消失的风险)
本文使用多个卷积层在8倍降采样 belief maps 上获得更大的接受野,stride-8 网络与 stride-4 的精度一样高,最后采用stride-8网络,因为它能获得更大的接受野。
2.3 卷积姿态机中的学习
每个阶段的 Loss 函数:
CPMs在每个阶段 t 都会产生关节点的预测结果,在之后的阶段 t 会产生越来越精确的预测结果,在每个 阶段输出后均计算 loss,作为中间监督 loss,避免梯度消失问题。关节点 p 的 ground-truth belief map 记为:bp∗(Yp = z),是通过在每个关节点 p 的 ground-truth 位置放置 Gaussian 函数模板的方式得到的。
最终计算的 loss(整体损失函数由各阶段损失相加构成):
3.Evaluation
3.1解决梯度消失
通过对比观察梯度强度直方图(Figure 5)来验证这一主张,图5展示了是/否带有中间监督的情况下,训练过程中不同网络深度处的梯度强度对比。
- 在训练初期,最后一层的梯度分布方差都很大。若没有中间监督,浅层的梯度都集中在0附近(梯度消失)。若有中间监督,浅层的梯度分布方差大,表明中间监督确实对梯度消失问题有帮助。
- 训练后期,没有中间监督时层数越浅,梯度消失仍然越严重;而有中间监督的情况下,浅层的梯度分布方差没有训练初期那么大(但是也没消失),这表明了模型的收敛。
中间监督的优势在于即使整个网络有很多层,也不会出现梯度消失,因为中间监督会在每个阶段补充梯度。
3.2端到端学习的益处
从Figure 6a看出,使用适当设计的卷积结构替换PM,在高精度状态下(PCK@0.1)检测率提高了42.4%,在低精度状态(PCK@0.2)下检测率提高了30.9%
3.3训练策略的对比
实验比较了不同训练策略下的预测率(都使用LSP数据集、以人为中心的标注)。为了阐释带有中间监督的跨阶段联合训练的优势,以四种方式训练模型(见Figure 6b):
- 从头开始,使用全局损失函数加强中间监督。(联合训练+中间监督)
- stage-wise:每个阶段都以前馈方式进行训练,然后再堆叠到一起。(不联合训练)
- 使用 2 的训练结果参数作为初始参数,按照 1 的方式进行训练。(先分开训练+再联合训练+中间监督)
- 从头开始训练,不使用中间监督。(联合训练,不用中间监督)
使用 1 的训练策略训练出来的模型优于其他策略,表明中间监督和跨阶段联合训练时有必要的。
使用 2 的分开训练策略使得模型达到次优解,之后结合 3 将次优解提升到了和 1 接近的准确率,但是花费了更多的迭代次数。
3.4各阶段表现
从Figure 6c 可以看出,网络性能随着阶段的提高而提高,到5-stage的时候趋于饱和,在6-stage时减弱,实验最终选择这个阶段的结果作为论文中LSP和MPII数据集上的最佳结果。