天天看点

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

一、这是大佬们的一篇文章,算是比较早的利用CNN预测heatmap来做姿态估计的文章,上传时间2015年。

二、这篇文章的核心思想:

       1、pooling层能为网络增强一些“局部不变性”、“旋转不变性”之类的能力,也能降低参数等种种优点的同时对于回归heatmap的任务却会带来location的精度损失。因此提出了一种新的结构,用于弥补pooling的负效应,“position refinement”。这种结构有点像RCNN的二级结构。

       2、当然一个贡献是不够的,因此文章中的另一个大贡献是“SpatialDropout”

       3、多分辨率输入,这个的话,看到结构图应该就很好理解,在图像分类中也有这么做的

三、先来说说什么是“SpatialDropout”与“Multi-resolution”

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

      图3是标准的dropout,正如我们所知dropout有着很多优点:通过每次随机抑制部分神经元,防止过拟合;有点类似多模型融合从而在测试时候能够提升模型效果;

      图3,可以看出在进行反向传播的时候,W2的中心位置的梯度只能收到一个f2a的,f2b被抑制为0了,但是因为传统的分类任务中,我们不关注空间点与点之间的关联性,我们只关注核心特征是什么无所谓在哪里,而且我们把相邻的输出近似当作差不多相等的。

      但是放眼图像的空间回归问题中,这么做存在两个问题:1、我们关注某个特征的location问题,点与点之间存在很强的关联,性,继续这样做无法回归出准确的位置,因为我们抑制了部分的梯度。2、作者在文章中说了,最开始确实擦用了这种dropout但是除了增加训练时间,没有其他收益。

      从而提出了“SpatialDropout”:

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

   其实就是正对整个channel而言的dropout,而不是在2d的feature map上去随机抑制,采用了去抑制整个feature map。至于效果“We have found this modified dropout imple- mentation improves performance, especially on the FLIC dataset, where the training set size is small.”(这里特别注意where the training set size is small,不知道在大数据集上这个操作如何了)。

   这个结构放在哪里呢?如下结构图,这个图也同时展示了“多分辨率输入”

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

   这个结构一目了然,不过多解释了,有问题可以留言哈。

四、新的网路结构(级联结构)

     “三” 里面的最后的那个网络结构图,只是第一部分,也是比较朴素的回归方式,接下来这个图是本文模型结构:

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

     第一部分的“Corase Heat-Map Model”就是“三”结尾那个图,很好理解。利用Corase Heat-Map预测每个关键点的大概位置,然后去剪裁(直接在不同层的feature map上剪裁---这里是不是很类似于目标检测中的FPN?),每个关键点都重复这个操作,这个子模型一次只预测一个heatmap,运行“关键点个数”次,就能得到每个关键点在小图中的预测位置,然后结合上原始的“Corase Heat-Map”的预测就是最终结果。

     子模型(Siamese Model):子模型就是一个网络,每次都要把子模型运行n次(n就是关键点个数),这也就是文章中所说的”子模型共享权重“的意思,因为毕竟这些子模型的任务都是去利用经过筛选的feature maps的区域去预测一个最高响应,所以无所谓具体去预测什么关节了(也就是类别),类别信息在”Corase HeatMap Model“预测结果中已经包含了。

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】
【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】
【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

   当然这个“级联结构的模型”是可以端到端的训练的,作者在文章中也解释了,对于来自sub network的梯度只要对应到crop的来源那部分去就可以了“output gradients from the cropped image are simply added to the output gradients of the convolution stages in the coarse heat-map model at the sampled pixel locations.”

   但是作者在4.2章讲训练的时候好像是分开训练的,也就是先训练Coarse model然后固定这部分的参数,去练后fine model。

五、其他内容和训练细节,非常牛逼的细节

   作者提到了,其实标注是不规范的,也是存在歧义的,主要表现为关键点的标注很难具体的说到底在哪个点?如下图所示是作者们自己进行的实验,请了13个人对数据集中随机的10章图像进行标记:

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

    接下来,不得不说大佬就是大佬,用这个标注数据去计算了标准差,对于每个关节就能产生自己的sigma了!!!解决了我一直不知道sigma怎么设置这回事!

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

      大佬利用“Coarse Model”建立在8x pooling基础上进行实验发现:误差基本在-4像素到+4像素之间,这么以来人工标注的误差和数据集本身的误差基本上是吻合的。(给大佬跪了) 这个图说明了“单纯使用Coarse Model”会放大误差范围,“提出的级联模型”确实更加贴近人类的真是误差。

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

    对于pooling会带来精度损失的实验:

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

    图中x坐标代表了距离在多少阈值内这个关节点算正确找到,可以明显的看出距离越大(条件越宽松)结果越好,从结果上看4x和8x的pooling结果上差不多,4x略好些,16x最差。(估计是这个原因,所以很多后来的图像工作中分割任务和pose estimation都采用的 8x 或者 4x)。这个图的实验是直接在“Coarse model”上的。

    “级联模型”针对pooling带来的负效应,对于“Coarse Model”带来了显著的提升,腕关节属于困难检测点,因为通常存在很多变数,穿衣服,遮挡,需要更多的骨架结构信息作为支撑,这样话“Coarse Model”的预测结果会更加不可靠,同时,对于子模型而言也比较困难直接从crop的部分来预测“腕关节”:

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

    文章还对比,crop的源来自feature map和 image,以及是否使用spatialDropout:

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】
【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

    当然对于“Coarse Model”作者也和前人的工作进行了比较,结果依然是本文的工作拥有最好的效果:

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

        文章同时也对比,是否进行尺度归一化,以及在训练和测试阶段什么时候进行尺度归一化,这里尺度归一化代表了利用MPII数据集提供的人物尺度进行规范化,可以保证每个人物出现在网络输入中的大小差不多,可以发现还是有很大的影响的。in standard evaluation practice the query image is scale normalized so that the average person height is con- stant, thus making the detection task easier

【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】
【姿态估计文章阅读】Efficient Object Localization Using Convolutional Networks【大佬文,每一个实验都值得一看】

继续阅读