Blame docs/html/features.html

Packit ea1746
Packit ea1746
Packit ea1746
Packit ea1746
Packit ea1746
 <html class="no-js" lang="en" > 
Packit ea1746
<head>
Packit ea1746
  <meta charset="utf-8">
Packit ea1746
  
Packit ea1746
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
Packit ea1746
  
Packit ea1746
  <title>Why? — Ceres Solver</title>
Packit ea1746
  
Packit ea1746
Packit ea1746
  
Packit ea1746
  
Packit ea1746
Packit ea1746
  
Packit ea1746
Packit ea1746
  
Packit ea1746
  
Packit ea1746
    
Packit ea1746
Packit ea1746
  
Packit ea1746
Packit ea1746
  
Packit ea1746
  
Packit ea1746
    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
Packit ea1746
  
Packit ea1746
Packit ea1746
  
Packit ea1746
Packit ea1746
  
Packit ea1746
    <link rel="top" title="Ceres Solver" href="index.html"/>
Packit ea1746
        <link rel="next" title="Installation" href="installation.html"/>
Packit ea1746
        <link rel="prev" title="Ceres Solver" href="index.html"/> 
Packit ea1746
Packit ea1746
  
Packit ea1746
  <script src="_static/js/modernizr.min.js"></script>
Packit ea1746
Packit ea1746
</head>
Packit ea1746
Packit ea1746
<body class="wy-body-for-nav" role="document">
Packit ea1746
Packit ea1746
  
Packit ea1746
Packit ea1746
    
Packit ea1746
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
Packit ea1746
      
Packit ea1746
        
Packit ea1746
          
Packit ea1746
Packit ea1746
          
Packit ea1746
             Ceres Solver
Packit ea1746
          
Packit ea1746
Packit ea1746
          
Packit ea1746
          
Packit ea1746
Packit ea1746
          
Packit ea1746
            
Packit ea1746
            
Packit ea1746
              
Packit ea1746
                1.13
Packit ea1746
              
Packit ea1746
            
Packit ea1746
          
Packit ea1746
Packit ea1746
          
Packit ea1746
Packit ea1746
  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
Packit ea1746
    <input type="text" name="q" placeholder="Search docs" />
Packit ea1746
    <input type="hidden" name="check_keywords" value="yes" />
Packit ea1746
    <input type="hidden" name="area" value="default" />
Packit ea1746
  </form>
Packit ea1746
Packit ea1746
Packit ea1746
          
Packit ea1746
        
Packit ea1746
Packit ea1746
        
Packit ea1746
          
Packit ea1746
            
Packit ea1746
            
Packit ea1746
                
    Packit ea1746
  • Why?
  • Packit ea1746
  • Installation
  • Packit ea1746
  • Tutorial
  • Packit ea1746
  • On Derivatives
  • Packit ea1746
  • Modeling Non-linear Least Squares
  • Packit ea1746
  • Solving Non-linear Least Squares
  • Packit ea1746
  • Covariance Estimation
  • Packit ea1746
  • General Unconstrained Minimization
  • Packit ea1746
  • FAQS, Tips & Tricks
  • Packit ea1746
  • Users
  • Packit ea1746
  • Contributing
  • Packit ea1746
  • Version History
  • Packit ea1746
  • Bibliography
  • Packit ea1746
  • License
  • Packit ea1746
    Packit ea1746
    Packit ea1746
                
    Packit ea1746
              
    Packit ea1746
            
    Packit ea1746
          
    Packit ea1746
        </nav>
    Packit ea1746
    Packit ea1746
        <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
    Packit ea1746
    Packit ea1746
          
    Packit ea1746
          <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
    Packit ea1746
            
    Packit ea1746
            Ceres Solver
    Packit ea1746
          </nav>
    Packit ea1746
    Packit ea1746
    Packit ea1746
          
    Packit ea1746
          
    Packit ea1746
            
    Packit ea1746
              
    Packit ea1746
    Packit ea1746
     
    Packit ea1746
    Packit ea1746
    Packit ea1746
    Packit ea1746
    Packit ea1746
      
      Packit ea1746
          
    • Docs »
    • Packit ea1746
            
      Packit ea1746
          
    • Why?
    • Packit ea1746
            
    • Packit ea1746
              
      Packit ea1746
                
      Packit ea1746
              
      Packit ea1746
            
      Packit ea1746
        
      Packit ea1746
        
      Packit ea1746
      Packit ea1746
                
      Packit ea1746
                 
      Packit ea1746
                  
      Packit ea1746
        
      Packit ea1746

      Why?ΒΆ

      Packit ea1746
        Packit ea1746
      • Code Quality - Ceres Solver has been used in production at
      • Packit ea1746
        Google for more than four years now. It is clean, extensively tested
        Packit ea1746
        and well documented code that is actively developed and supported.
        Packit ea1746
      • Modeling API - It is rarely the case that one starts with the
      • Packit ea1746
        exact and complete formulation of the problem that one is trying to
        Packit ea1746
        solve. Ceres’s modeling API has been designed so that the user can
        Packit ea1746
        easily build and modify the objective function, one term at a
        Packit ea1746
        time. And to do so without worrying about how the solver is going to
        Packit ea1746
        deal with the resulting changes in the sparsity/structure of the
        Packit ea1746
        underlying problem.
          Packit ea1746
        • Derivatives Supplying derivatives is perhaps the most tedious
        • Packit ea1746
          and error prone part of using an optimization library.  Ceres
          Packit ea1746
          ships with automatic and numeric differentiation. So you
          Packit ea1746
          never have to compute derivatives by hand (unless you really want
          Packit ea1746
          to). Not only this, Ceres allows you to mix automatic, numeric and
          Packit ea1746
          analytical derivatives in any combination that you want.
          Packit ea1746
        • Robust Loss Functions Most non-linear least squares problems
        • Packit ea1746
          involve data. If there is data, there will be outliers. Ceres
          Packit ea1746
          allows the user to shape their residuals using a
          Packit ea1746
          LossFunction to reduce the influence of outliers.
          Packit ea1746
        • Local Parameterization In many cases, some parameters lie on a
        • Packit ea1746
          manifold other than Euclidean space, e.g., rotation matrices. In
          Packit ea1746
          such cases, the user can specify the geometry of the local tangent
          Packit ea1746
          space by specifying a LocalParameterization object.
          Packit ea1746
          Packit ea1746
          Packit ea1746
        • Solver Choice Depending on the size, sparsity structure, time &
        • Packit ea1746
          memory budgets, and solution quality requiremnts, different
          Packit ea1746
          optimization algorithms will suit different needs. To this end,
          Packit ea1746
          Ceres Solver comes with a variety of optimization algorithms:
            Packit ea1746
          • Trust Region Solvers - Ceres supports Levenberg-Marquardt,
          • Packit ea1746
            Powell’s Dogleg, and Subspace dogleg methods. The key
            Packit ea1746
            computational cost in all of these methods is the solution of a
            Packit ea1746
            linear system. To this end Ceres ships with a variety of linear
            Packit ea1746
            solvers - dense QR and dense Cholesky factorization (using
            Packit ea1746
            Eigen or LAPACK) for dense problems, sparse Cholesky
            Packit ea1746
            factorization (SuiteSparse, CXSparse or Eigen) for large
            Packit ea1746
            sparse problems custom Schur complement based dense, sparse, and
            Packit ea1746
            iterative linear solvers for bundle adjustment problems.
            Packit ea1746
          • Line Search Solvers - When the problem size is so large that
          • Packit ea1746
            storing and factoring the Jacobian is not feasible or a low
            Packit ea1746
            accuracy solution is required cheaply, Ceres offers a number of
            Packit ea1746
            line search based algorithms. This includes a number of variants
            Packit ea1746
            of Non-linear Conjugate Gradients, BFGS and LBFGS.
            Packit ea1746
            Packit ea1746
            Packit ea1746
          • Speed - Ceres Solver has been extensively optimized, with C++
          • Packit ea1746
            templating, hand written linear algebra routines and OpenMP based
            Packit ea1746
            multithreading of the Jacobian evaluation and the linear solvers.
            Packit ea1746
          • Solution Quality Ceres is the best performing solver on the NIST
          • Packit ea1746
            problem set used by Mondragon and Borchers for benchmarking
            Packit ea1746
            non-linear least squares solvers.
            Packit ea1746
          • Covariance estimation - Evaluate the sensitivity/uncertainty of
          • Packit ea1746
            the solution by evaluating all or part of the covariance
            Packit ea1746
            matrix. Ceres is one of the few solvers that allows you to to do
            Packit ea1746
            this analysis at scale.
            Packit ea1746
          • Community Since its release as an open source software, Ceres
          • Packit ea1746
            has developed an active developer community that contributes new
            Packit ea1746
            features, bug fixes and support.
            Packit ea1746
          • Portability - Runs on Linux, Windows, Mac OS X, Android
          • Packit ea1746
            and iOS.
            Packit ea1746
          • BSD Licensed The BSD license offers the flexibility to ship your
          • Packit ea1746
            application
            Packit ea1746
            Packit ea1746
            Packit ea1746
            Packit ea1746
            Packit ea1746
                       
            Packit ea1746
                      
            Packit ea1746
                      <footer>
            Packit ea1746
              
            Packit ea1746
                
            Packit ea1746
                  
            Packit ea1746
                    Next 
            Packit ea1746
                  
            Packit ea1746
                  
            Packit ea1746
                     Previous
            Packit ea1746
                  
            Packit ea1746
                
            Packit ea1746
              
            Packit ea1746
            Packit ea1746
              
            Packit ea1746
            Packit ea1746
              
            Packit ea1746
                

            Packit ea1746
                    © Copyright 2016 Google Inc.
            Packit ea1746
            Packit ea1746
                

            Packit ea1746
               
            Packit ea1746
            Packit ea1746
            </footer>
            Packit ea1746
            Packit ea1746
                    
            Packit ea1746
                  
            Packit ea1746
            Packit ea1746
                </section>
            Packit ea1746
            Packit ea1746
              
            Packit ea1746
              
            Packit ea1746
            Packit ea1746
            Packit ea1746
              
            Packit ea1746
            Packit ea1746
                <script type="text/javascript">
            Packit ea1746
                    var DOCUMENTATION_OPTIONS = {
            Packit ea1746
                        URL_ROOT:'./',
            Packit ea1746
                        VERSION:'1.13.0',
            Packit ea1746
                        COLLAPSE_INDEX:false,
            Packit ea1746
                        FILE_SUFFIX:'.html',
            Packit ea1746
                        HAS_SOURCE:  true
            Packit ea1746
                    };
            Packit ea1746
                </script>
            Packit ea1746
                  <script type="text/javascript" src="_static/jquery.js"></script>
            Packit ea1746
                  <script type="text/javascript" src="_static/underscore.js"></script>
            Packit ea1746
                  <script type="text/javascript" src="_static/doctools.js"></script>
            Packit ea1746
                  <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
            Packit ea1746
                  MathJax.Hub.Config({
            Packit ea1746
                      "HTML-CSS": {
            Packit ea1746
                        availableFonts: ["TeX"]
            Packit ea1746
                      }
            Packit ea1746
                    });
            Packit ea1746
                  </script>
            Packit ea1746
            Packit ea1746
              
            Packit ea1746
            Packit ea1746
              
            Packit ea1746
              
            Packit ea1746
                <script type="text/javascript" src="_static/js/theme.js"></script>
            Packit ea1746
              
            Packit ea1746
            Packit ea1746
              
            Packit ea1746
              
            Packit ea1746
              <script type="text/javascript">
            Packit ea1746
                  jQuery(function () {
            Packit ea1746
                      SphinxRtdTheme.StickyNav.enable();
            Packit ea1746
                  });
            Packit ea1746
              </script>
            Packit ea1746
              
            Packit ea1746
             
            Packit ea1746
            <script>
            Packit ea1746
              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
            Packit ea1746
              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
            Packit ea1746
              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
            Packit ea1746
              })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
            Packit ea1746
              ga('create', 'UA-49769510-1', 'ceres-solver.org');
            Packit ea1746
              ga('send', 'pageview');
            Packit ea1746
            </script>
            Packit ea1746
            Packit ea1746
            Packit ea1746
            </body>
            Packit ea1746
            </html>