Blame docs/html/nnls_modeling.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>Modeling Non-linear Least Squares — 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="Solving Non-linear Least Squares" href="nnls_solving.html"/>
Packit ea1746
        <link rel="prev" title="Interfacing with Automatic Differentiation" href="interfacing_with_autodiff.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
    • Introduction
    • Packit ea1746
    • CostFunction
    • Packit ea1746
    • SizedCostFunction
    • Packit ea1746
    • AutoDiffCostFunction
    • Packit ea1746
    • DynamicAutoDiffCostFunction
    • Packit ea1746
    • NumericDiffCostFunction
      • Packit ea1746
      • Numeric Differentiation & LocalParameterization
      • Packit ea1746
        Packit ea1746
        Packit ea1746
      • DynamicNumericDiffCostFunction
      • Packit ea1746
      • CostFunctionToFunctor
      • Packit ea1746
      • DynamicCostFunctionToFunctor
      • Packit ea1746
      • ConditionedCostFunction
      • Packit ea1746
      • GradientChecker
      • Packit ea1746
      • NormalPrior
      • Packit ea1746
      • LossFunction
        • Packit ea1746
        • Instances
        • Packit ea1746
        • Theory
        • Packit ea1746
          Packit ea1746
          Packit ea1746
        • LocalParameterization
          • Packit ea1746
          • Instances
          • Packit ea1746
            Packit ea1746
            Packit ea1746
          • AutoDiffLocalParameterization
          • Packit ea1746
          • Problem
          • Packit ea1746
          • rotation.h
          • Packit ea1746
          • Cubic Interpolation
          • Packit ea1746
            Packit ea1746
            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
                  
            • Modeling Non-linear Least Squares
            • 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

              Modeling Non-linear Least Squares

              Packit ea1746
              Packit ea1746

              Introduction

              Packit ea1746

              Ceres solver consists of two distinct parts. A modeling API which

              Packit ea1746
              provides a rich set of tools to construct an optimization problem one
              Packit ea1746
              term at a time and a solver API that controls the minimization
              Packit ea1746
              algorithm. This chapter is devoted to the task of modeling
              Packit ea1746
              optimization problems using Ceres. Solving Non-linear Least Squares discusses
              Packit ea1746
              the various ways in which an optimization problem can be solved using
              Packit ea1746
              Ceres.

              Packit ea1746

              Ceres solves robustified bounds constrained non-linear least squares

              Packit ea1746
              problems of the form:

              Packit ea1746
              Packit ea1746
              (1)\[\begin{split}\min_{\mathbf{x}} &\quad \frac{1}{2}\sum_{i}
              Packit ea1746
              \rho_i\left(\left\|f_i\left(x_{i_1},
              Packit ea1746
              ... ,x_{i_k}\right)\right\|^2\right)  \\
              Packit ea1746
              \text{s.t.} &\quad l_j \le x_j \le u_j\end{split}\]
              Packit ea1746

              In Ceres parlance, the expression

              Packit ea1746
              \(\rho_i\left(\left\|f_i\left(x_{i_1},...,x_{i_k}\right)\right\|^2\right)\)
              Packit ea1746
              is known as a residual block, where \(f_i(\cdot)\) is a
              Packit ea1746
              CostFunction that depends on the parameter blocks
              Packit ea1746
              \(\left\{x_{i_1},... , x_{i_k}\right\}\).

              Packit ea1746

              In most optimization problems small groups of scalars occur

              Packit ea1746
              together. For example the three components of a translation vector and
              Packit ea1746
              the four components of the quaternion that define the pose of a
              Packit ea1746
              camera. We refer to such a group of scalars as a parameter block. Of
              Packit ea1746
              course a parameter block can be just a single scalar too.

              Packit ea1746

              \(\rho_i\) is a LossFunction. A LossFunction is

              Packit ea1746
              a scalar valued function that is used to reduce the influence of
              Packit ea1746
              outliers on the solution of non-linear least squares problems.

              Packit ea1746

              \(l_j\) and \(u_j\) are lower and upper bounds on the

              Packit ea1746
              parameter block \(x_j\).

              Packit ea1746

              As a special case, when \(\rho_i(x) = x\), i.e., the identity

              Packit ea1746
              function, and \(l_j = -\infty\) and \(u_j = \infty\) we get
              Packit ea1746
              the more familiar unconstrained non-linear least squares problem.

              Packit ea1746
              Packit ea1746
              (2)\[\frac{1}{2}\sum_{i} \left\|f_i\left(x_{i_1}, ... ,x_{i_k}\right)\right\|^2.\]
              Packit ea1746
              Packit ea1746
              Packit ea1746

              CostFunction

              Packit ea1746

              For each term in the objective function, a CostFunction is

              Packit ea1746
              responsible for computing a vector of residuals and if asked a vector
              Packit ea1746
              of Jacobian matrices, i.e., given \(\left[x_{i_1}, ... ,
              Packit ea1746
              x_{i_k}\right]\), compute the vector
              Packit ea1746
              \(f_i\left(x_{i_1},...,x_{i_k}\right)\) and the matrices

              Packit ea1746
              Packit ea1746
              Packit ea1746
              \[J_{ij} = \frac{\partial}{\partial
              Packit ea1746
              x_{i_j}}f_i\left(x_{i_1},...,x_{i_k}\right),\quad \forall j
              Packit ea1746
              \in \{1, \ldots, k\}\]
              Packit ea1746
              Packit ea1746
              Packit ea1746
              Packit ea1746
              class CostFunction
              Packit ea1746
              class CostFunction {
              Packit ea1746
               public:
              Packit ea1746
                virtual bool Evaluate(double const* const* parameters,
              Packit ea1746
                                      double* residuals,
              Packit ea1746
                                      double** jacobians) = 0;
              Packit ea1746
                const vector<int32>& parameter_block_sizes();
              Packit ea1746
                int num_residuals() const;
              Packit ea1746
              Packit ea1746
               protected:
              Packit ea1746
                vector<int32>* mutable_parameter_block_sizes();
              Packit ea1746
                void set_num_residuals(int num_residuals);
              Packit ea1746
              };