首页 ICE-BA中的预条件共轭梯度法(PCG)
文章
取消

ICE-BA中的预条件共轭梯度法(PCG)

ICE-BA和RKD-SLAM中采用了预条件共轭梯度法(preconditioned conjugate gradient, PCG)来求解线性方程组,该PCG算法专门为Bundle Adjustment设计。

预调节共轭梯度法

简介

共轭梯度法(conjugate gradient,CG)是一种求解线性方程组的非静态迭代法,每次优化的方向以及优化残差均关于系数矩阵$\boldsymbol{A}$共轭,理论上对于N维的求解问题,只用N次迭代即可求出方程组的最小二乘解。共轭梯度法的算法流程如下:

cg

系数矩阵$\boldsymbol{A}$的条件数会影响共轭梯度法的收敛速度,预条件共轭梯度法中,对原线性方程组乘以矩阵$\boldsymbol{P}$(称为预调节器)来保证较小的条件数。PCG的算法流程如下:

1557306696032

其中矩阵$\boldsymbol{M}$为预调节器的逆矩阵。

预调节器

预调节器$\boldsymbol{P}$有很多种形式,文献1提出了一种块对角线的预调节器,称为band-limited block-based preconditioner,其中的band-limited表示每个对角块的包含一定数量的分块矩阵维数。

1557307388432

文中建议的取值是$n=1$,此时预调节器$\boldsymbol{P}$为对块角线矩阵的逆。

1557307961246

嵌入的点迭代

Embedded Point Iterations(EPI)是文献1中提出的一种加速PCG收敛速度的方法。求解Bundle Adjustment时采用舒尔消元先求解位姿的增量,之后再代入求解每个点的增量。EPI的核心操作是在求解出相机位姿的增量后,利用当前的相机位姿对每个点进行几次迭代求解出在当前位姿下更精确的点位置。这样做的原因主要有两点:

  1. 与整个迭代过程相比,EPI的计算复杂度较低。
  2. 由于相机的位姿受到多个观测点约束,因此求解增量时更加稳定,而每个点受到的约束却少很多,相比之下在求解点的增量时更不稳定。

The idea behind this is that, for large, dense systems, EPIs whose complexity is linear in the number of points are much cheaper than the full update step. Moreover, the camera steps are based on many point measurements and are therefore stable, whereas the point updates, which are based on as few as two observations, can be more erratic. Therefore, it is sometimes worth paying the small price of performing multiple point iterations to bring the points back to rest and to get the most out of each camera update step.

在文献的实验结果中,使用EPI的方法需要的迭代次数更少,因此优化总时间也最少。

  1. Yekeun Jeong : Pushing the Envelope of Modern Methods for Bundle Adjustment (2012)  2

本文由作者按照 CC BY 4.0 进行授权