LMAEstimator¶
- class giant.calibration.estimators.geometric.lma.LMAEstimator(model, options=None)[source]¶
This implements a Levenberg-Marquardt Algorithm estimator, which is analogous to a damped iterative non-linear least squares.
This class is nearly exactly the same as the
IterativeNonlinearLSTSQ
except that it adds damping to the update step of the iterative non-linear least squares algorithm and allows a few diverging steps in a row where the damping parameter is updated before failing. The number of diverging steps that are allowed is controlled by themax_divergence_steps
setting. This represents only difference from theIterativeNonlinearLSTSQ
interface from the user’s perspective.In general, this algorithm will result in the same answer as the
IterativeNonlinearLSTSQ
algorithm but at a slower convergence rate. In a few cases however, this estimator can be more robust to initial guess errors, achieving convergence when the standard iterative nonlinear least squares diverges. Therefore, it is likely best to start with theIterativeNonlinearLSTSQ
class an only switch to this if you experience convergence issues.The implementation of the LMA in this class is inspired by https://link.springer.com/article/10.1007/s40295-016-0091-3
- Parameters:
model (CameraModel) – The camera model instance to be estimated set with an initial guess of the state.
options (LMAEstimatorOptions | None) – The options dataclass to configure the class with
Methods
This method estimates the postfit residuals based on the model, weight matrix, lma coefficient, etc. |