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

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

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

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

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

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

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

                        

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

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

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

      从而提出了“SpatialDropout”:

             

   其实就是正对整个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,不知道在大数据集上这个操作如何了)。

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

    

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

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

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

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

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

   当然这个“级联结构的模型”是可以端到端的训练的,作者在文章中也解释了,对于来自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章图像进行标记:

                   

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

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

      

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

                       

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

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

                     

   

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

                               

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

    

        文章同时也对比,是否进行尺度归一化,以及在训练和测试阶段什么时候进行尺度归一化,这里尺度归一化代表了利用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

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值