ceres基本概念

Ceres Solver主要用于非线性最小二乘问题和无约束优化。它通过ResidualBlock和ParameterBlock处理非线性问题,其中Loss Function减少异常值的影响。Ceres采用仿函数functor,如CostFunctor,通过AutoDiffCostFunction自动计算微分并提供CostFunction接口。CostFunction::Evaluate()用于计算残差向量和Jacobian矩阵。在定义模板化的operator()函数后,functor可以从多个参数中计算一维输出,支持自动微分。
摘要由CSDN通过智能技术生成

ceres主要用于解决非线性最小二乘问题和通用的无约束最小化问题

Non-linear Least Squares

  1. 在这里插入图片描述解决形如左侧的非线性最小二乘法问题
  2. 加和中的项取名为ResidualBlock残差块,其中f表示依赖于参数块xi的CostFunction。[xi1, xi2, …, xik]叫做ParameterBlock参数块
  3. ρi是Loss Function,用于减小outliers对于非线性最小二乘法带来的影响,是一个数值函数
  4. 在ceres中使用了仿函数functor,即使用时像函数一样的被调用,由该仿函数产生一个对象,并以此对象作为算法的一个参数。类别定义中必须自定义仿函数云算子operator(),这之后就可以在仿函数的对象后面加上一对小括号,以此调用仿函数所定义的operator(),这个operator()将在类实例化时被用到,非参数的元素传入类中,这样就免去了一些对公共变量的全局化的维护
  5. 定义了CostFunctor以后,CostFunction* cost_function = new AutoDiffCostFunction<CostFunctor, 1, 1>(new CostFunctor); 这个AutoDiffCostFunction将会以CostFunctor作为输入,然后自动对其进行微分,同时给予它一个CostFunction接口
  6. CostFunctor是用于计算a vector of residuals and Jacobian matrices。即这个损失函数是用于计算向量f(x1, …, xk)和Jacob
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值