【姿态估计文章阅读】Human Pose Estimation with Iterative Error Feedback【这篇文章看的虽然有点迷糊,但是最后有一点很重要,自适应scale】

         

一、这是伯克利的大哥哥们在2016年发的一篇文章,也算是CNN的姿态估计,上升比较快的那几年。

二、其实核心思想很像GBDT,一步步的去拟合残差。但是,不一样肯定是不一样的!放一张好看的图,GBDT的。

                         

      主要贡献:

       1、提出一种自我修正的模型

       2、传统模型映射是建立在“从input到output”的,本文把input和output这两个空间融合在一起~~~有点不太明白这个说法的含义。Here we propose a framework that expands the expressive power of hierarchical feature extractors to encompass both input and output spaces, by introducing top-down feedback. 我感觉这里最重要的就是这个自顶向下吧!从最优预测,一步一步反向传回最处预测(coarse)。coarse to fine,反向传播 fine to coarse。

三、核心思想解读---自我修正模型

      其实还是比较容易一下子看明白的。这个模型的输入是[Image,n*heatmap]利用f(),这个f()其实也就是ConvNet,得到预测修正e1,从而可以吧y0+e1=y1。这个g()就是个坐标转2d 高斯图的生成函数,把y1变成h1,这样一次循环就完成了。注意f()不是预测heatmap的而是预测,对于输入的heatmap的修正结果的。

     当然,这个ConvNet作者采用的是GoogLeNet,并且预测结果不是heatmap而是直接回归坐标的修正值,作者对GoogLeNet修改如下,第一层扩充为20个通道,前三个通道依然采用预训练参数,后17个通道随机初始化;最后一层1000个节点的分类层去除,改为32个节点的层(对应16个坐标)(第17个关键点是什么?就是一个人物中心位置

      问题1:修正结果的label如何产生?

                  

                       

                     

       看到这里,其实本文的整个结构,是对初始姿态的一个修正,这个修正操作通过预测的残差(偏移量)来体现,也就是每次循环都是对上一次关键点的一次移动!那么公式中为什么有个大L,L是loss上界,文中设置为20个像素,其实也就是限制了每次循环的最大修正系数!

           We initialized y0 as the median of ground truth 2D keypoint locations on training images and trained a model for T=4 steps ,using N=3 epochs for each new step. We found the fourth step to have little effect on accuracy and used 3 steps in practice at test time.

      问题2:为什么不直接用输出的heatmap,反而要重新用g()函数生成heatmap?

      如果直接预测一个heatmap回归的话有以下问题:1、可能当年这个方式不流行;2、需要更小的pooling,更大的计算量,更大的显存;3、那么每次修正的残差如何产生?用什么来表示一种偏移?G-heatmap 与 预测heatmap 直接做差?还是什么方式能够体现出“偏移”?

     用g()生成的每次都是标准的高斯正态分布!其实比网络预测的heatmap更加规范,对于ConvNet输入的数据更加规范!

      问题3:这样做和直接从图片预测heatmap的区别是什么?或者为什么不直接预测yt,而是预测一个残差?

      作者说了:The motivation for modifying yt by a bounded amount is that the space of xt is typically highly non-linear and hence local corrections should be easier to learn。输入空间是个典型的高维非线性,直接预测比局部修正更加困难。(这里我感觉思想上可以参考传统机器学习中的一些方法,“提升方法”,直接学习一个强分类器比较困,因此可以集成弱分类器,结合上残差学习达到更好的效果)。

       其实看了这张图之后,应该对于模型的整个计算过程有比较深入的了解,输入是image 结合 初始姿态的heatmap,每次只能修正一定距离,这个和修正公式中的L其实相关,当然这么设计也是为了:1、减轻网络的难度;2、感受野有限;3、模型能力有限,不用追求一次到完美,可以多次;4、让模型一步一步修复,一步一步的去超正确的位置移动对应的点,这个更是我们想要的效果。

    问题4:第17个关键点?

     An additional marking-point in each person is available both for training and testing, lo- cated somewhere inside each person’s boundary.我理解就是这个MPII数据集提供的每个人物的中心,因为这个是个多人数据集,他提供了每个人的scale以及中心,我记得不提供bbox,因为可以通过人物中心和scale大致从图中挖出每个人。作者在训练和测试的时候带上这个信息,其实能让模型更加注重的去回归目标人物!因为图中还存在背景人物。

四、实验

   对比实验1:迭代/单次 预测的对比(这里预测的都是“最终坐标”,并且输入只有图片没有heatmap),从而体现出循环的加之错在:

   对比实验2:    直接预测 与 误差预测 两种方式的对比,也可以从上面这张图重看出来,迭代“直接”预测 甚至不如单次“预测”!!!当然对比与“误差预测”都是比不过的!

    这里给我们一个思考:CPM,hourglass这类的模型都是stack的,但是从他们实验上“是有提升的”(回归heatmap);但是为什么在这里却没有提升(回归坐标)?我心中的答案是这样的:因为在CPM和hourglass之类的模型中,每个stage不存在参数共享,那么每个stage在训练中慢慢定下来自己的函数内容(比如第一个stage解决大致位置,后续微调,所以在CPM中有人对比出来其实3个stage就差不多了);但是在本文中,每个stage参数贡献,第一个stage进行大scale的修复,后续的很难表现为进行小scale修复或者微调;从而在进行Iterative Error Feedback的时候,之所以可以“参数共享不同stage”,因为设定了每个stage的修复上限“之前提到的L”。

对比实验3: 直接训练迭代的模型,还是单独训练每个stage,然后叠在一起?

   对比实验4: 结构学习,就是在每次预测时候输入中,加入哪些heatmap,以及效果对比。

 

               

 

    

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值