MVG读书笔记——单应矩阵估计这件小事(四)

来源:互联网 发布:林书豪纪录片 知乎 编辑:程序博客网 时间:2024/06/07 17:46

不同于之前提到的代数误差,几何误差的最小化往往没有闭式解(就是解析解)。为优化几何误差,我们需要使用迭代的方法。
迭代最小化的方法一般包括5个环节:

1.损失函数

损失函数的选择是迭代最小化方法等基础,具体的讨论可以参见前几篇文章。

2.参数化

给定要建立的模型,我们要优化的东西最终是模型的几个参数。提取需要被优化的参数的过程叫做参数化。

以单应矩阵的估计为例,H可以看作一个9维的向量,使用这9个参数进行优化即为一种参数化的方法。但是实际上H只有8个自由度,一个最小化的参数化方法只需要8个参数。我们把前者的情况称为超参数化。

超参数话一般来说没什么副作用,最小化参数数量往往也不是必要的。甚至后者会使得损失函数的几何表面更加复杂,从而有更大概率落入局部最优解。

另一方面,当我们的解空间并没有那么大时,也不需要使用过多的参数。举例来说,两平面ππ这满足透视变换H(即对应点连线相交于空间一点。透视变换没有封闭性),该变换只有6个自由度,可以用6个自由度进行参数化。具体来说,使用两个3维向量a,v,一个标量μ可以表示一个透视变换H,即

H=I+(μ1)vaTvTa

它的逆变换为
H1=I+(1u1)vaTvTa

3.函数表述

即带入参数化后的模型得到的损失函数。前几篇已经给出了使用9维向量参数化H时具体的函数表述。

4.初始化

对参数进行初始化会对于后面的迭代优化产生重要的影响。一方面,好的初始化可以使得迭代需要的步数大大降低;另一方面非凸函数的优化常常可能落入局部最小值,此时参数的初始化就更加重要。

一种常用的初始化方法是使用模型的线性近似解作为初始参数。比如使用DLT算法得到的值作为单应矩阵H的初始参数,从而使得参数的初始状态接近最优状态。

在解空间较小时,我们可以对解空间进行多次采样作为初始化的值,分别计算参数并比较它们的效果,从而选出最优解。

5.迭代

从初始参数开始一步步优化参数的过程称为迭代。常用迭代算法有

  • 梯度下降法:每一步向当前点的负梯度方向进行优化。
  • 牛顿法:使用参数的Hessian矩阵进行优化。
  • 高斯—牛顿法:使用Jacobian矩阵近似Hessian矩阵,仅在一定条件下可用。
  • LM算法:信赖域算法,同时具有梯度法和牛顿法的优点。

至此对于以单应矩阵为例进行模型估计的部分基本完成。剩下的去除外点、以及具体的迭代方法在其它文章里面有所涉及。

阅读全文
0 0
原创粉丝点击