blob: 4e9e967b58b4d5b42bcf633f1a3355ce63cf36cd [file] [log] [blame]
.. _chapter-introduction:
============
Introduction
============
Solving nonlinear least squares problems [#f1]_ comes up in a broad
range of areas across science and engineering - from fitting curves in
statistics, to constructing 3D models from photographs in computer
vision. Ceres Solver [#f2]_ [#f3]_ is a portable C++ library for
solving non-linear least squares problems. It is designed to solve
small and large sparse problems accurately and efficiently.
At Google, Ceres Solver has been used for solving a variety of
problems in computer vision and machine learning. e.g., it is used to
to estimate the pose of Street View cars, aircrafts, and satellites;
to build 3D models for PhotoTours; to estimate satellite image sensor
characteristics, and more.
Features:
#. A friendly :ref:`chapter-modeling`.
#. Automatic and numeric differentiation.
#. Robust loss functions and local parameterizations.
#. Multithreading.
#. Trust-Region (Levenberg-Marquardt and Dogleg) and Line Search
(Nonlinear CG and L-BFGS) solvers.
#. Variety of linear solvers.
a. Dense QR and Cholesky factorization (using `Eigen
<http://eigen.tuxfamily.org/index.php?title=Main_Page>`_) for
small problems.
b. Sparse Cholesky factorization (using `SuiteSparse
<http://www.cise.ufl.edu/research/sparse/SuiteSparse/>`_ and
`CXSparse <http://www.cise.ufl.edu/research/sparse/CSparse/>`_) for
large sparse problems.
c. Specialized solvers for bundle adjustment problems in computer
vision.
d. Iterative linear solvers with perconditioners for general sparse
and bundle adjustment problems.
#. Portable: Runs on Linux, Windows, Mac OS X and Android. An iOS port is
underway.
.. rubric:: Footnotes
.. [#f1] For a gentle but brief introduction to non-linear least
squares problems, please start by reading the
:ref:`chapter-tutorial`.
.. [#f2] While there is some debate as to who invented the method of
Least Squares [Stigler]_, there is no debate that it was Carl
Friedrich brought it to the attention of the world. Using
just 22 observations of the newly discovered asteroid Ceres,
Gauss used the method of least squares to correctly predict
when and where the asteroid will emerge from behind the Sun
[TenenbaumDirector]_. We named our solver after Ceres to
celebrate this seminal event in the history of astronomy,
statistics and optimization.
.. [#f3] For brevity, in the rest of this document we will just use
the term Ceres.