Human Pose Estimation with Iterative Error Feedback

1. 本篇文章主要在用feedback来进行错误反馈,主要用在早期的错误修正上

2. Human Pose Estimation with Iterative Error Feedback

Human Pose Estimation with Iterative Error Feedback

f()是将输入的图片RGB和stacked的特征一起作为输入输入到网络里面,然后预测出每一个位置的偏差,是一个convnet

y(t+1) = y(t) +e的意思是在上一次预测出来的坐标的基础上,加上预测出来的偏差作为这一次的预测

g()是将本次预测出来的坐标变成map图

作者每次对y_t做一个限制,原因是因为x_t是高度非线性的,所以限制y_t更有利于局部修正

3. 训练

训练的时候限制e的大小的,然而测试的时候是不限制的

Human Pose Estimation with Iterative Error Feedback

最终的优化目标是使每次预测出来的位移偏差和本次输入的yt与gt间的差的大小相近,也即使得每次预测出来的偏差就是我们要的偏差,yt加上这个偏差就是gt,当然这很理想。具体的迭代的T的大小可以人为制定,也可以让程序自己迭代来决定到底选取多少。Human Pose Estimation with Iterative Error Feedback

3.1 y0,y1,y2,...的选取

每一步的e(y,yt)是事先选取好的,根据e和y就可以定义好本次的yt,然后yt和x一起堆叠起来作为整个网络输入,产生预测出来的偏差e_pred,计算e_pred和e之间的偏差,通过h进行反传回去。关键是理解e(y,yt),e(y,yt)是作为目标出现的,每一步都不一样,但是每一步内都是固定的,对于所有的样本。e_pred是预测的,计算和e之间的偏差即可,然后反传,不断迭代

说明:在训练的时候,e(y,yt)是预先设计好的,一定要弄清楚了,根据距离目标的远近,看他是否需要bound,但是一定是设计好的,yt因此每一步也是固定的,修正的时候也是将这个yt作为下一次的输入!!!!!而不是实际用上一次的加上预测的偏差Human Pose Estimation with Iterative Error Feedback!!!!!!在测试的时候,因为不可能事先指定,所以所有的都是基于预测出来的Human Pose Estimation with Iterative Error Feedback,所以

Human Pose Estimation with Iterative Error Feedback这一套主要是用在了测试中

作者用的FPC的思路

                                       Human Pose Estimation with Iterative Error Feedback

       e(y,yt)是有边界限制的,L是最大的偏置约束,当关键点远离ground truth的时候他是常数,仅仅当靠近关键点时候才是会变化的,这就简化了学习过程。当给定图像和初始的pose的时候,模型仅仅需要预测一个固定大小的方向来移动,当接近ground truth的时候会slow down下来

                                                                 Human Pose Estimation with Iterative Error Feedback


整个的算法流程是

                                     Human Pose Estimation with Iterative Error Feedback

作者设置T=4,N=3.N是epoch的意思。这个流程图中Human Pose Estimation with Iterative Error Feedback,这一句话不是说把这个赋值给了预测的Human Pose Estimation with Iterative Error Feedback而是说这一次的修改就用这个Human Pose Estimation with Iterative Error Feedback来,训练和测试不一样的,相关参数的更新用网络的反传更新,T=4的这种设置,就是修正四步就可以喽

训练的时候不可见的关键点梯度反传设置为0,

Human Pose Estimation with Iterative Error Feedback

这张图说明测试过程,一开始的初始pose是在图像*设定一个pose,基于这个pose来进行调整,因为测试的时候是不限制步长的,但是依然是按照constant的步长往前走的,只在最后的时候是scale了一下,就像在自动控制系统里面是一个样子的

1)

在训练的时候,首先会训练一个VGG-S网络用来预测尺度,训练的时候基于MARKING POINT周围去9个框,然后用差不多1.2x的3个框去训练VGG-S,把选出来的这些框的256x256切成224x224,来训练IEF,用的网络是GOOGLENET.测试的时候会用VGG-S网络预测9个框中哪个框比较接近1.2x的人的height,用这个框送入到GOOGLEnet里面,然后进行测试!!!!所以作者说他们的实验不需要MPII预先给定的scale,因为他们自己会预测!!!

2)

训练的时候输入通道是20维的,3维RGB,16维的关节高斯图,还有1维的图,这个图是在人体内的任意一个marking-point,用来指定的这个人的!!!!!!!!!!!!!!

4、作者的四个对比试验非常重要

1)

                     Human Pose Estimation with Iterative Error Feedback

直接一步去预测移动方向还是不断地迭代呢,这个实验给出了结果

Human Pose Estimation with Iterative Error Feedback

2)

是迭代误差好还是直接迭代的去预测目标位置好呢,作者也给出了实验,table3

3)

是固定步长的去修正还是不固定步长呢?作者给出了实验。我们可以发现如果给定步长去修正的话,那么先易后难,到最后一步来个微调。但是如果是不给定步长,一般第一步就会到达目标位置周围,之后就是在目标周围进行调整,很是不易,所以作者在这里指出这是课程学习的一种方法吧!!!!!!!!!!!!!!!!

                                   Human Pose Estimation with Iterative Error Feedback

4)作者还做了learning structured output的实验,也即输入通道用全部关节点的map还是只用一个或者几个,作者发现用全部的能够更好的构建空间信息

本文的feedback将之前直接预测关节点位置的方法变成了预测偏差的方法。

作者的feedback方法的参考地方Recurrent models of visual attention