【手势识别-论文学习】 Hands Deep in Deep Learning for Hand Pose Estimation

(CVWW 2015) Hands Deep in Deep Learning for Hand Pose Estimation

这篇文章是使用CNN网络来直接输出关节点位置。本文的特点是速度很快并且精度可以通过refinement提高。作者主要的贡献是两个部分:

  1. 设计一个加入了prior的网络输出手的关节点
  2. 基于上述关节点预测,对每一个关节点用一个refinement网络来进行更精确的关节点输出。甚至可以用迭代的方式多次refine关节点位置

文章直接对比了四个网络:shallow,deep,multi-scale,和deep with prior。

【手势识别-论文学习】 Hands Deep in Deep Learning for Hand Pose Estimation_第1张图片

首先对于前面三者的对比,作者的观点:“unsurprisingly, the multi-scale approach performs better than the deep architecture, which performs better than the shallow one.” 多尺度网络>深网络>浅网络(的确unsurprisingly)。但是作者认为手势估计是一个非常复杂的任务,自由度非常高,在那么一个庞大的解空间里面直接搜寻一个最优解似乎是很不容易的。但是作者借着【1】的思想,认为“a low dimensional embedding is sufficient to parameterize the hand’s 3D pose”,所以不同于直接预测关节点位置,作者希望能预测low dimensional空间的参数。因为在【1】中,各种手势被认为是rely on a linear embedding,换句话说手势可以被认为是一些低维的basis configuration的线性组合。这样相当于一定程度降低了网络的学习难度,但是如何加入这样的prior呢?作者的思路很巧妙,他引入了一个bottleneck层,这个层是用很少的neurons(8/15/30),目的是强制让网络学习到低维空间的表达,然后再线性的投射到高纬空间去。同时,将训练数据做一个PCA,将bottleneck层的neuron个数相等的PCA分量作为最后一层权重的初始值。


文章另一个贡献是refinement,就是基于上述预测位置,重新提取四周的不同尺度的patch,然后训练一个CNN多尺度模型,从而得到更加准确的位置,并且如果需要可以多迭代几次。

【手势识别-论文学习】 Hands Deep in Deep Learning for Hand Pose Estimation_第2张图片


个人观点:在第一步预测关节点位置的实验中,实验结果表明对于不同的网络来说,本文的网络的确有提高,可能限制了表达并且给了一个很好的初值的确有助于降低学习的难度,但是从ICVL dataset提高的精度来说,有可能和数据的难度有关,以及学习程度有关(仅一个猜测)。另外,因为prior加在最后一层,BP的影响会很大,因此,prior的初值影响很未知(文中也缺少相关对比)。

另一方面,refienment的做法具有一定的启发性,但是对于作者给出的结果,个人认为这样的做法可以纠正一些简单的错误,比如可以在偏移较小的情况纠正。但是对于一些错误错误比较大的预测点,提取的context patch会给出非常错误的信息,所以无法纠正,甚至会导致更严重的问题。另外训练这样的模型,搜集的样本无法覆盖所有的错误的预测点的情况,网络训练本身就有问题。总之,无法证明这样refienment的收敛能力。从另一个角度来说,第一个网络结构要给出足够好的结果,refinement才会有最佳的意义。


【1】Y. Wu, J. Lin, and T. Huang. Capturing Natural Hand Articulation. In International Conference on Computer Vision, 2001.


你可能感兴趣的:(手势识别)