blob: 7151b1272dccb7a1d3817a9096d7cd8fa5c2d325 [file] [log] [blame]
Keir Mierle8ebb0732012-04-30 23:09:08 -07001%!TEX root = ceres.tex
2\chapter{Introduction}
3\label{sec:introduction}
4Ceres Solver\footnote{For brevity, in the rest of this document we will just use the term Ceres.} is a non-linear least squares solver developed at Google. It is designed to solve small and large sparse problems accurately and efficiently~\footnote{For a gentle but brief introduction to non-liner least squares problems, please start by reading the~\hyperref[chapter:tutorial]{Tutorial}}. Amongst its various features is a simple but expressive API with support for automatic differentiation, robust norms, local parameterizations, automatic gradient checking, multithreading and automatic problem structure detection.
5
6The key computational cost when solving a non-linear least squares problem is the solution of a linear least squares problem in each iteration. To this end Ceres supports a number of different linear solvers suited for different needs. This includes dense QR factorization (using \eigen) for small scale problems, sparse Cholesky factorization (using \cholmod) for general sparse problems and specialized Schur complement based solvers for problems that arise in multi-view geometry~\cite{hartley-zisserman-book-2004}.
7
8Ceres has been used for solving a variety of problems in computer vision and machine learning at Google with sizes that range from a tens of variables and objective functions with a few hundred terms to problems with millions of variables and objective functions with tens of millions of terms.
9
10\section{What's in a name?}
Sameer Agarwal17fbc8e2012-05-01 00:21:19 -070011While there is some debate as to who invented of the method of Least Squares~\cite{stigler1981gauss}. There is no debate that it was Carl Friedrich Gauss's prediction of the orbit of the newly discovered asteroid Ceres based on just 41 days of observations that brought it to the attention of the world~\cite{tennenbaum-director}. We named our solver after Ceres to celebrate this seminal event in the history of astronomy, statistics and optimization.
Keir Mierle8ebb0732012-04-30 23:09:08 -070012
13\section{Contributing to Ceres}
14We welcome contributions to Ceres, whether they are new features, bug fixes or tests. If you have ideas on how you would like to contribute to Ceres, please join the Ceres mailing list (\texttt{ceres-solver@googlegroups.com}) or if you are looking for ideas, please let us know about your interest and skills and we will be happy to make a suggestion or three.
15
16We follow Google's C++ Style Guide~\footnote{\url{http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml}}.
17
18\section{Acknowledgements}
19A number of people have helped with the development and open sourcing of Ceres.
20
21Fredrik Schaffalitzky when he was at Google started the development of Ceres, and even though much has changed since then, many of the ideas from his original design are still present in the current code.
22
23Amongst Ceres' users at Google two deserve special mention: William Rucklidge and James Roseborough. William was the first user of Ceres. He bravely took on the task of porting production code to an as-yet unproven optimization library, reporting bugs and helping fix them along the way. James is perhaps the most sophisticated used of Ceres at Google. He has reported and fixed bugs and helped evolve the API for the better.
24
25Nathan Wiegand contributed the MacOS port.
26\clearpage
27
28\section{License}
29Ceres Solver is licensed under the New BSD license, whose terms are as follows.
30
31\begin{quotation}
32
33\noindent
34Copyright (c) 2010, 2011, 2012, Google Inc. All rights reserved.
35
36\noindent
37Redistribution and use in source and binary forms, with or without
38modification, are permitted provided that the following conditions are met:
39\begin{enumerate}
40\item Redistributions of source code must retain the above copyright notice,
41 this list of conditions and the following disclaimer.
42\item Redistributions in binary form must reproduce the above copyright notice,
43 this list of conditions and the following disclaimer in the documentation
44 and/or other materials provided with the distribution.
45\item Neither the name of Google Inc., nor the names of its contributors may
46 be used to endorse or promote products derived from this software without
47 specific prior written permission.
48\end{enumerate}
49
50\noindent
51This software is provided by the copyright holders and contributors "AS IS" and
52any express or implied warranties, including, but not limited to, the implied
53warranties of merchantability and fitness for a particular purpose are
54disclaimed. In no event shall Google Inc. be liable for any direct, indirect,
55incidental, special, exemplary, or consequential damages (including, but not
56limited to, procurement of substitute goods or services; loss of use, data, or
57profits; or business interruption) however caused and on any theory of
58liability, whether in contract, strict liability, or tort (including negligence
59or otherwise) arising in any way out of the use of this software, even if
60advised of the possibility of such damage.
61\end{quotation}