前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论文阅读理解 - Convolutional Pose Machines

论文阅读理解 - Convolutional Pose Machines

作者头像
AIHGF
修改2020-06-12 16:01:29
2.3K0
修改2020-06-12 16:01:29
举报
文章被收录于专栏:AIUAIAIUAI

论文阅读理解 - Convolutional Pose Machines

[Paper - CVPR2016]

[Code - Caffe]

[Code - TensorFlow 1.0+]

基于序列化的全卷积网络结构,学习空间信息和纹理信息,估计人体姿态. 摘要: Pose Machines 是一种序列化的预测框架,可以学习信息丰富的空间信息模型. Convolutional Pose Machines(CPMs) 是将 Convolutional Network 整合进 Pose Machines,以学习图像特征和图像相关(image-depenent)的空间模型,估计人体姿态. CPMs 对 long-range 范围内变量间的关系进行建模,以处理结构化预测任务,如,人体姿态估计.

  • CPMs 是由全卷积网络组成的序列化结构,卷积网络直接在前一阶段的置信图(belief maps)操作,输出越来越精细化的关节点位置估计结果;
  • CPMs 能够同时学习图像和空间信息的特征表示;且,不需要构建任何显式的关节点间关系模型;
  • 中间监督 loss 解决梯度消失(vanishing gradients)问题.
  • end-to-end with backpropagation.

CPMs 由全卷积网络序列化组成,并重复输出每个关节点的 2D 置信图. 每一个stage,采用图像特征和上一 stage 输出的2D置信图作为输入.

置信图为后面的阶段提供了每个关节点位置的空间不确定性(spatial uncertainty)的非参数编码,使得 CPM 可以学习到丰富的与图像相关的关节点间关系的空间模型.

以 CPM 的某个特定 stage 为例: 关节点置信图的空间信息,为后续 stage 提供了很无歧义的线索信息. 因此,CPM 的每个 stage 都可以输出越来越精细的关节点置信图,如 Figure 1.

这里写图片描述
这里写图片描述

为了捕捉关节点间 long-range 的相互关系,CPMs 中每个 stage 的网络设计的启发点是:同时在图像和置信图上得到大的接受野(large receptive field).

这里写图片描述
这里写图片描述

2. Convolutional Pose Machines - CPMs

CPM 同时利用深度卷积网络的优点,和 Pose Machine 框架的空间建模.

CPM 结构如图:

这里写图片描述
这里写图片描述

根据源码给出的 deploy.prototxt,CPM 部署时是 multi-scales 的,处理流程:

  • 基于每个 scale,计算网络预测的各关节点 heatmap;
  • 依次累加每个关节点对应的所有 scales 的 heatmaps;
  • 根据累加 heatmaps,如果其最大值大于指定阈值,则该最大值所在位置 (x,y) 即为预测的关节点位置.

2.1 Stage t=1t=1t = 1 时关节点定位

stage t=1 时, CPM 根据图片局部信息(local image evidence)预测关节点. 利用图片局部信息local,是指,网络的接受野被约束到输出像素值的局部图片块. 如图:

这里写图片描述
这里写图片描述

输入图片经过全卷积网络,输出关节点的预测结果. 网络包括 5 个卷积层和 2 个 1×1 卷积层.

输入图片 368×368 ,卷积层不改变 feature maps 的 width 和 height,经三次 pooling 层,输出的 feature maps 大小 46×46,共 P+1 个 feature maps.

The receptive field of the network shown above is 160 × 160 pixels. The network can effectively be viewed as sliding a deep network across an image and regressing from the local image evidence in each 160 × 160 image patch to a P + 1 sized output vector that represents a score for each part at that image location.

t≥2 时网络的输出是一致的,都是 46×46×(P+1) 的 feature maps.

3.2 Stage t>1t>1t > 1 时关节点定位

启发点:关节点的置信图(belief maps),尽管存在 noisy, 但却是包含有用信息的. 如图:

这里写图片描述
这里写图片描述

Figure 3. belief maps 的空间信息. 容易检测的关节点可以为难以检测的关节点提供有用信息. (shouler, neck, head) 关节点,对于 (right elbow) 后续 stages 的 belief maps 来说,有助于消除其错误的估计(red),并提升其正确估计(green).

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

大接受野的两种方式:

  • 采用 pooling 操作, 会牺牲精度precision;
  • 增大 kernel size,会使参数量增加,训练时出现梯度消失的风险.

stage t≥2 时,网络结构及对应的接受野如图:

这里写图片描述
这里写图片描述

stride-8 网络与 stride-4 的精度一样高,更容易得到大的接受野.

3. CPM 训练

CPM 每个 stage 都会输出关节点的预测结果,重复地输出每个关节点位置的 belief maps,以渐进精细化的方式估计关节点. 故,在每个 stage 输出后均计算 loss,作为中间监督 loss,避免梯度消失问题.

如:

这里写图片描述
这里写图片描述
代码语言:javascript
复制
template<typename Dtype>
void DataTransformer<Dtype>::putGaussianMaps(Dtype* entry, Point2f center, int stride, int grid_x, int grid_y, float sigma){
  //LOG(INFO) << "putGaussianMaps here we start for " << center.x << " " << center.y;
  float start = stride/2.0 - 0.5; //0 if stride = 1, 0.5 if stride = 2, 1.5 if stride = 4, ...
  for (int g_y = 0; g_y < grid_y; g_y++){
    for (int g_x = 0; g_x < grid_x; g_x++){
      float x = start + g_x * stride;
      float y = start + g_y * stride;
      float d2 = (x-center.x)*(x-center.x) + (y-center.y)*(y-center.y);
      float exponent = d2 / 2.0 / sigma / sigma;
      if(exponent > 4.6052){ //ln(100) = -ln(1%)
        continue;
      }
      entry[g_y*grid_x + g_x] += exp(-exponent);
      if(entry[g_y*grid_x + g_x] > 1) 
        entry[g_y*grid_x + g_x] = 1;
    }
  }
} 

每个 stage 的 Loss 函数:

这里写图片描述
这里写图片描述

MPII 数据增强处理:

  • 随机旋转图片 [-40, 40]
  • 图片缩放 [0.7, 1.3]
  • 水平翻转

4. 分析与实验

4.1 中间监督 loss 对于梯度消失的作用

这里写图片描述
这里写图片描述

4.2 实验结果

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

5. Related

[1] - 【人体姿态】Convolutional Pose Machines

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年03月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 论文阅读理解 - Convolutional Pose Machines
    • 2. Convolutional Pose Machines - CPMs
      • 2.1 Stage t=1t=1t = 1 时关节点定位
      • 3.2 Stage t>1t>1t > 1 时关节点定位
    • 3. CPM 训练
      • 4. 分析与实验
        • 4.1 中间监督 loss 对于梯度消失的作用
        • 4.2 实验结果
      • 5. Related
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档