Paperreading之三Simple Baselines for Human Pose Estimation(人体姿态coco亚军,pytorch)

时间:2024-03-31 07:47:33

  本次paper是coco2018关键点检测项目的亚军方案,方法非常的简洁明了,但是效果很惊艳,达到了state of the art,paper的标题也是写了simple baseline。整篇paper包含一个sota的姿态估计和姿态跟踪,本篇博客只涉及到paper里面的姿态估计部分。

  1. 前言

人体姿态估计是MSCOCO数据集(http://cocodataset.org/)上面的一项比赛,人体关键点检测,目前主流的做法都是深度学习来做。本文的出发点:

Paperreading之三Simple Baselines for Human Pose Estimation(人体姿态coco2018亚军,pytorch)

作者认为目前的姿态估计方法都太过于复杂,并且有显著的差异,比如hourglass,open pose,cpn等等,比较这些工作的差异性,更多体现在系统层面而不是信息层面。

作者在本文提出了一个既精确(sota水平),又简单(网络结构非常简单,见下文)的姿态估计方法,作为一个baseline,希望能激发一些新的ideas和简化评估方式。  

2. 网络结构部分

Paperreading之三Simple Baselines for Human Pose Estimation(人体姿态coco2018亚军,pytorch)

网络结构一句话就可以表达清楚,就是一个普通的backbone(用resnet50就很好)加一些转置卷积层(作为一个head network)。作者认为这可能是得到heatmaps的最简单方式,并且包含了从深到浅的特征。

先看图:

Paperreading之三Simple Baselines for Human Pose Estimation(人体姿态coco2018亚军,pytorch)

上图c是不是非常简单,论文的整个网络就是这样。三个网络最大的区别就是在head network(头部网络)是如何得到高分辨率的feature map的,前两个方法都是上采样得到heatmap,但是simple baseline的方法是使用deconv ,deconv相当于同时做了卷积和上采样。

看起来似乎是得到高分辨率的feature maps是很重要的,但是你是怎么获取的并不是那么的关键,不同的方法获取的都会有不错的效果。

 

看一下forward函数

Paperreading之三Simple Baselines for Human Pose Estimation(人体姿态coco2018亚军,pytorch)

就一个resnet50去掉全连接层,加3个deconv layers和一个1*1的卷积就完事了。Deconv layers全部都是一样的kernel=4,channels=256,最后加一个1*1的卷积,输出得到关键点的heatmaps,求一个最大响应值就可以得到最后坐标点了

 

Loss的设计:就是普通L2 loss,只在最后的输出算loss,并没有中继监督。

Paperreading之三Simple Baselines for Human Pose Estimation(人体姿态coco2018亚军,pytorch)

 

3.Ablation experiments

Paperreading之三Simple Baselines for Human Pose Estimation(人体姿态coco2018亚军,pytorch)   Paperreading之三Simple Baselines for Human Pose Estimation(人体姿态coco2018亚军,pytorch)

消融实验对比:

作者从heatmaps的尺寸,deconv的卷积核尺寸,backbone结构,输入图像尺寸等4个方面分别作了对比:

结论是:heatmaps尺寸最好是64*48,三层deconv,kernel的size最好是4,backbone是越大越好,图像尺寸越大越好,但是后两者会极大增加计算量和显存。要做好精度和速度的平衡

4. 源码和结果对比

源码是Pytorch版本(https://github.com/Microsoft/human-pose-estimation.pytorch),微软亚洲研究院官方出品,写的很好很通用,值得一读。

下面是各种效果对比图,训练几乎没有任何trick,网络里面也没有任何其他的骚操作,比如各种ohem,ohkm等等,也没有中继监督,相同条件下(主要是输入尺寸和bakcbone)效果都是领先水平。在backbone是resnet152和输入是384*288的条件下,各项指标都是排名第一,都是单模型对比的。

Paperreading之三Simple Baselines for Human Pose Estimation(人体姿态coco2018亚军,pytorch)

Paperreading之三Simple Baselines for Human Pose Estimation(人体姿态coco2018亚军,pytorch)

5.结论

论文给出的simple baseline是真的很simple,效果真的好,但是其实没有很特别的创新地方,只是把deconv用在了姿态估计的网络里面。

就像论文里面的第二章节一个标题Pose Estimation Using A Deconvolution Head Network。整个网络就是一个普通backbone+一个使用deconv的head network。

 

参考文献

[1]Simple Baselines for Human Pose Estimation and Tracking(https://arxiv.org/abs/1804.06208)

[2]https://github.com/Microsoft/human-pose-estimation.pytorch