MVG读书笔记——单应矩阵估计这件小事(四)
来源:互联网 发布:林书豪纪录片 知乎 编辑:程序博客网 时间:2024/06/07 17:46
不同于之前提到的代数误差,几何误差的最小化往往没有闭式解(就是解析解)。为优化几何误差,我们需要使用迭代的方法。
迭代最小化的方法一般包括5个环节:
1.损失函数
损失函数的选择是迭代最小化方法等基础,具体的讨论可以参见前几篇文章。
2.参数化
给定要建立的模型,我们要优化的东西最终是模型的几个参数。提取需要被优化的参数的过程叫做参数化。
以单应矩阵的估计为例,H可以看作一个9维的向量,使用这9个参数进行优化即为一种参数化的方法。但是实际上H只有8个自由度,一个最小化的参数化方法只需要8个参数。我们把前者的情况称为超参数化。
超参数话一般来说没什么副作用,最小化参数数量往往也不是必要的。甚至后者会使得损失函数的几何表面更加复杂,从而有更大概率落入局部最优解。
另一方面,当我们的解空间并没有那么大时,也不需要使用过多的参数。举例来说,两平面
它的逆变换为
3.函数表述
即带入参数化后的模型得到的损失函数。前几篇已经给出了使用9维向量参数化H时具体的函数表述。
4.初始化
对参数进行初始化会对于后面的迭代优化产生重要的影响。一方面,好的初始化可以使得迭代需要的步数大大降低;另一方面非凸函数的优化常常可能落入局部最小值,此时参数的初始化就更加重要。
一种常用的初始化方法是使用模型的线性近似解作为初始参数。比如使用DLT算法得到的值作为单应矩阵H的初始参数,从而使得参数的初始状态接近最优状态。
在解空间较小时,我们可以对解空间进行多次采样作为初始化的值,分别计算参数并比较它们的效果,从而选出最优解。
5.迭代
从初始参数开始一步步优化参数的过程称为迭代。常用迭代算法有
- 梯度下降法:每一步向当前点的负梯度方向进行优化。
- 牛顿法:使用参数的Hessian矩阵进行优化。
- 高斯—牛顿法:使用Jacobian矩阵近似Hessian矩阵,仅在一定条件下可用。
- LM算法:信赖域算法,同时具有梯度法和牛顿法的优点。
至此对于以单应矩阵为例进行模型估计的部分基本完成。剩下的去除外点、以及具体的迭代方法在其它文章里面有所涉及。
- MVG读书笔记——单应矩阵估计这件小事(四)
- MVG读书笔记——单应矩阵估计这件小事(一)
- MVG读书笔记——单应矩阵估计这件小事(二)
- MVG读书笔记——单应矩阵估计这件小事(三)
- MVG读书笔记——射影变换的校正(零)
- MVG读书笔记——射影变换的校正(一)
- MVG读书笔记——射影变换的校正(二)
- MVG读书笔记——射影变换的校正(三)
- MVG读书笔记——三维空间中的射影几何(一)
- MVG读书笔记——三维空间中的射影几何(二)
- MVG读书笔记——几何变换
- MVG读书笔记——几何变换续
- 时间序列分析这件小事(四)--AR模型
- MVG读书笔记——齐次坐标与射影几何
- MVG读书笔记——射影几何下的直线
- MVG读书笔记——射影几何下的二次曲线
- MVG读书笔记——三维空间中的欧氏变换
- MVG读书笔记——求解结果的评价
- Java设计模式——策略模式(Strategy Pattern)
- 201710020135->unity读excel
- LeetCode: Two Sum
- 3389之永不查杀的后门shift后门代码
- c++ next_permutation 枚举排列数
- MVG读书笔记——单应矩阵估计这件小事(四)
- 二叉排序树
- 关于Windows系列密码抓取
- 数组与指针 小小区别
- Linux下使用shell脚本自动监控重启tomcat
- 给年轻工程师的十大忠告
- Jupyter中Python2和Python3共存
- 安装ubuntu16.04后window启动项消失问题
- Java设计模式——模板模式(Template Pattern)