【问题标题】:Using conjugate gradient in pose-estimation在姿态估计中使用共轭梯度
【发布时间】:2018-11-24 11:34:27
【问题描述】:

graphical representation of my pipeline

我正在尝试对从视频源中捕获的人脸进行姿势估计。 我使用tracking.js 的面部对齐算法。 这给了我一些分数,然后我用这些分数来尝试估计我的脸在相机空间中的位置。

由于人脸是非刚性物体,角度问题可能会修改图像上的对齐点,我使用参数化的 3D 点列表,然后将其投影到平面上以获取相应的 2D 点列表。

然后我做一个点到点的平方距离来计算一个错误率,然后我尝试将其最小化。

我正在使用FMIN.js 的共轭梯度算法来最小化错误率。

但大多数时候,算法似乎由于零值而卡在 wolfe 线性部分。是因为使用了finite differential gradient吗?

我做错了吗?

我对优化算法很陌生,我不确定我是否正在做一切正确的工作。我的值往往很高(~ 80k),这导致我的渐变也很大。我尝试进行规范化过程(使用第一个错误作为规范),但并没有变得更好。

现在对于有限差分梯度计算,我使用的是遇到值中的一个小值。

我还将旋转梯度限制为 Pi/2,因为我认为太大的值会导致算法超出步长,超出角度范围。

【问题讨论】:

    标签: javascript algorithm machine-learning gradient-descent


    【解决方案1】:

    问题似乎来自梯度计算。 当我对大值进行简单的有限微分时,我的梯度非常大。 试图跟随这个巨大的梯度使参数脱离合理的空间搜索,下一次评估返回一个更大的值。 归一化使问题反转:我的梯度现在太小了,步长也不够大,无法统计有效下降。

    我使用了一种中间解决方案:使梯度成为函数评估的比率,然后将其乘以每个参数的适当值:

    gradient = gradient / fx * eigenVector
    

    【讨论】:

      猜你喜欢
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      相关资源
      最近更新 更多