【Pose】Convolutional Pose Machines

【Pose】Convolutional Pose Machines

  • 1. Introduction
    • 不同阶段的heatMap
    • 最终输出一个人不同部位的heatMap
  • 3. Method
    • 3.1 Pose Machines
    • 3.2 Convolutional Pose Machines:
      • 3.2.1 Keypoint Localizaton Using Local Image Evidence
      • 3.2.2 Sequential Prediction with Learned Spatial Context Features
      • 3.2.3. Learning in Convolutional Pose Machines
  • references

论文下载地址: https://arxiv.org/abs/1602.00134

1. Introduction

人体姿态检测的目标是输入一张图片,图片中包含一个或多个人。输出是这一个或多个人的骨架信息。在这个过程中,最重要的事情就是检测人体中的各个关键点key point。连接这些关键点才能输出一个骨架。
Convolutional Pose Machines 简称为CPM。CPM 是一种Top-down的方法。意思是先检测出一个人的区域,然后在这个区域中再进行检测,输出key point的热力图heat map(论文中是belief map)。
CPM由若干个stage构成,最终的输出是最后一个stage的输出。多个stage通过增大感受野逐渐使belief map的精度更高。

不同阶段的heatMap

【Pose】Convolutional Pose Machines_第1张图片

最终输出一个人不同部位的heatMap

3. Method

3.1 Pose Machines

CPM的目标是输出人体每一个关节的位置。

a) stage 1 阶段
(1) g 1 ( x z ) → { b 1 p ( Y p = z ) } p ∈ { 0... P } g_1(\textbf{x}_z) \rightarrow \{b_1^p(Y_p=z)\}_{p\in{\{0...P\}}} \tag1 g1(xz){b1p(Yp=z)}p{0...P}(1)

  • g 1 g_1 g1 是 stage 1 阶段的神经网络分类器
  • x \textbf{x} x 输入图像
  • b 1 p ( Y p = z ) b_1^p(Y_p=z) b1p(Yp=z) 表示为在区域z上,分类器对于该区域是部位p预测的得分,也就是p个热力图

b) stage t 阶段
(3) g t ( x z ′ , ψ t ( z , b t − 1 ) ) → { b t p ( Y p = z ) } p ∈ { 0... P + 1 } g_t(\textbf{x}'_z,\psi_t(z,b_{t-1})) \rightarrow \{b_t^p(Y_p=z)\}_{p\in{\{0...P+1\}}} \tag3 gt(xz,ψt(z,bt1)){btp(Yp=z)}p{0...P+1}(3)

  • x z ′ \textbf{x}'_z xz是由原图得到的一个feature map
  • b t − 1 b_{t-1} bt1是上一阶段输出的belief map
  • ψ t ( ⋅ ) \psi_t (\cdot) ψt() b t − 1 b_{t-1} bt1转换为context feature,与 x z ′ \textbf{x}'_z xz做concat,然后输入到神经网络进行前向传播。

c) g 1 g_1 g1网络的结构

d) g t g_t gt网络的结构

3.2 Convolutional Pose Machines:

3.2.1 Keypoint Localizaton Using Local Image Evidence

  • stage1如上述插图ac所示: stage 1只对输入图片做处理。在该阶段,输入图片经过X代表的经典VGG结构,并用1*1卷积,输出一个belief map。
  • 如果人体有p个关节点,那么belief map有p层,每一层表示一个关节点的heatmap,最后增加一层为背景。
  • belief map与label计算该阶段的loss,并存储起来,在网络末尾将每一层的loss加起来作为total loss用于反向传输,实现中间监督,避免梯度消失。

3.2.2 Sequential Prediction with Learned Spatial Context Features

【Pose】Convolutional Pose Machines_第2张图片

  • stage 1 一般可以准确输出头部的热力图,但是由于人员运动的姿态不同,对于其他关节不能准确预测。所以需要state t 。
  • 对于stage 2 以及后面的stage,其结构一致,我们统称为stage t。
  • 在stage t 中,网络的输入包含两个内容:
    • 1)上一个stage输出的belief map;
    • 2 )对原始图片的处理结果,这里的处理操作如插图(d)x‘部分所示,与stage 1中的X一样,也是借鉴经典的VGG中的结构。
      如果图片中有多个人物,需要对多人进行姿态估计时,在这里还要输入一个center map。center map是一个高斯响应,当图片中有多人时,center map告诉神经网络目前要处理的人的位置,从而自底向上处理多人pose问题。
      stage t阶段输出与stage 1 一致,也是标注关节点位置的belief map。

感受野

感受野即输出图片一个像素在原始图片上映射的区域大小。CMP采用大卷积核获得大感受野,对于推断被遮挡的关节很有效。可以看到在网络的stage 2 的输出部分,感受野已经扩大到400 × \times × 400的大小。
作者在论文中指出,预测的准确率随着感受野的增大而提高(这里应该指的是在同一个网络中感受野的增大,即在同一次训练过程中感受野的增大),在FLIC数据集中对于手腕关节的预测,当感受野增大到250pixcel时预测的准确率趋于稳定状态,这表明神经网络编码了(encode)身体部件之间的长距离交互。在以上网络结构图最好的输出结果中,将原始图片预处理至 368 × 368 368\times368 368×368,stage 2 输出值的感受野相当于原始输入图片的400*400像素,此时感受野可以覆盖图片中身体的任何一个部件。stage越多,感受野也就越大。下面是论文中给出的准确率随感受野上升的曲线图:【Pose】Convolutional Pose Machines_第3张图片
论文中指出,为了增大感受野,一般有如下几种方式:

  • 增大pool,但是这种做法对图片额外添加的信息过多,会牺牲精度;
  • 增大卷积核,但这种方式会增加参数量;
  • 增加卷积层,但卷积层过多会造成网络的负担,造成梯度消失等问题。
  • 论文中提出的增大卷积和的方式是增大stride,确实stride越大感受野相应的也增大,并且论文中指出,在高精度区域,8stride和4stride表现一样好。

3.2.3. Learning in Convolutional Pose Machines

【Pose】Convolutional Pose Machines_第4张图片
随着网络的增加,会存在梯度消失的情况,如红线所示。
在每一个stage后增加loss函数反穿可以避免梯度消失,使模型正常训练。

references

  • 【代码实现】https://blog.csdn.net/yeahDeDiQiZhang/article/details/78131566?locationNum=1&fps=1
  • 【讲解】https://blog.csdn.net/cherry_yu08/article/details/80846146

你可能感兴趣的:(深度学习)