天天看点

Convolutional Pose Machine - 卷积姿态网络Convolutional Pose Machine - 卷积姿态网络

Convolutional Pose Machine - 卷积姿态网络

论文主要解决 单人单目 RGB图像姿态估计问题。本篇论文也是现在非常火热的openpose开源项目的核心之一,这篇来自CMU的论文为单人姿态估计方面研究注入新的思路。论文网址 Convolutional Pose Machine 大家可以下载原文。
  • Convolutional Pose Machine - 卷积姿态网络
    • 1.网络结构
    • 2.论文思路
      • 2.1姿态估计
    • 3.实验效果
    • 4.改进思路

1.网络结构

首先我们来看网络的具体结构,正如如下两图所示。

Convolutional Pose Machine - 卷积姿态网络Convolutional Pose Machine - 卷积姿态网络
Convolutional Pose Machine - 卷积姿态网络Convolutional Pose Machine - 卷积姿态网络

本文的Feature Extractor是采用VGG-19到conv4-2的网络结构(具体训练应该是使用imagenet训练好的参数finetune)。同时有一个并列的FeatureExtractor’ 作为stage>=2的输入。

接下来是CPM的多stage结构。我们可以看到,为了快速放大感受野,CPM使用了3个11*11的大核串联的结构,并用两个1*1核作为网络收尾。这里类似FC的设计,但是因为保持FCN的结构,所以使用了1*1conv,最后一个1*1conv输出joint数目+1个Heatmap。其中一个是空响应的背景layer。每个stage的输出都是需要与gt进行比较并计算组成 Losstotal L o s s t o t a l 。

2.论文思路

2.1姿态估计

本篇文章的主要贡献是利用卷积神经网络的方法从单目RGB图像中内隐地利用图像的feature与图像相关的空间模型学习了人体姿态。而这种方法不需要任何显式先验。

首先作者提出,通过实验得出,人体姿态估计问题 需要使用其他肢体部分的提示 。作者指出如果想要利用好这些肢体点的提示,就需要 扩大卷积网络的感受野 。扩大感受野的方法就是使用大kernel多stride+pooling的方法,快速获得更大感受野。那么这里我们为什么需要multistage呢?我认为 在网络中如果想要利用好身体肢体点之间相互关系,就要 建立在一个准确的大致估计,也就是一个整齐的heatmap当中 。作者之所以使用了Multistage来refine整个估计,就是为了能够将下一步的结果建立在上一步精炼过的姿态之上。而这样,就自然而然引出了中间监督的过程。

作者在本篇文章中提出了中间监督的思路。正如我上文所说,我们需要将下个stage的输出建立在上一步精炼过的估计上,所以我们需要将网络分段,并在中间进行规范化的过程–也就是我们所说的监督。我们在每个stage的末端进行loss计算,并将计算结果存储,直到计算完所有stage T的loss。最后,我们将loss加和,作为 Total Loss 计算梯度,并进行反向传播。

这里loss公式为

losstotal=∑t=1T∑P=1P∑jϵJ‖bpt(j)−bp∗(j)‖2 l o s s t o t a l = ∑ t = 1 T ∑ P = 1 P ∑ j ϵ J ‖ b t p ( j ) − b ∗ p ( j ) ‖ 2

这里 T T 代表stage,PP代表图中的人, J J 代表joint,b∗b∗代表ground truth的heatmap。这里之所以要加入不同人物,是因为我们实际上是 把pose estimation做成了structured detection。这样的话网络就需要对于每一个单独的关节点,都要做出相应的响应。但是当训练起来,多人的情况在计算loss的时候 可能并没有仅仅输入单人annotation的效果好。实际上我们可以用一些方法(例如CPM最终实现的方法来完成单人预测的网络的方法)来解决。

其实这里提出一句,CPM的论文中强调中间监督对于网络训练的重要性。根据作者所言,中间监督是为了防止梯度消失。大家可以从上文行文中看到,我对于中间监督的作用有不大一样的见解。因为具体实验也没有进行太多,所以我也没有什么反驳的证据。但是我认为,中间监督的作用除了防止梯度消失问题以外,还有在网络结构上至关重要的作用。

CPM实现的网络结构为

Convolutional Pose Machine - 卷积姿态网络Convolutional Pose Machine - 卷积姿态网络

我们可以看到其实网络中有除了我们期望看到的图像,热图的GT以外,还有一个centermap的东西。在这里我认为这个东西是为了让网络仅关注centermap中的内容而添加的。这种结构仅仅是为了让网络能够完成单人姿态预测而作出的让步,当然在CMU之后的论文中提出了更好的多人解决思路,这个centermap逐渐就失去了作用。

3.实验效果

作者声称CPM能够在MPII数据集上达到PCKh-0.5 – 87%的成绩,可以说在当年优势较大。当然这也是在hourglass模型提出之前,大家公认最优雅工整并性能较好的网络结构。

Convolutional Pose Machine - 卷积姿态网络Convolutional Pose Machine - 卷积姿态网络
Convolutional Pose Machine - 卷积姿态网络Convolutional Pose Machine - 卷积姿态网络
Convolutional Pose Machine - 卷积姿态网络Convolutional Pose Machine - 卷积姿态网络

具体我实现的版本为Convolutional-Pose-Machine-tf

4.改进思路

首先不得不说,使用了VGG的feature extractor计算量较大,并且结合多stage的多个大核层后,网络计算量变得非常可观。不论是部署还是训练都变得较为困难。不过近些日子有个韩国人做的轻量化CPM的网络,虽然没有尝试,但是看demo效果不错。有兴趣的同学可以去尝试一下。

继续阅读