16.Ceres官方教程-Modeling Non-linear Least Squares (4) 损失函数

对于最小二乘问题,其中最小化可能遇到包含异常值的输入项,即完全虚假的测量值,重要的是使用损失函数来减少它们的影响。

考虑一个来自运动问题的结构。未知量是3D点和摄像机参数,测量值是描述摄像机中某个点预期重投影位置的图像坐标。例如,我们想要对带有消防栓和汽车的街景的几何形状建模,通过带有未知参数的移动摄像机观察,而我们唯一关心的3D点是消防栓的尖顶。
我们的图像处理算法负责生成输入到Ceres的测量数据,它在所有图像帧中找到并匹配了这些消防栓的尖顶,除了在其中一个帧中,它误将一辆汽车的前灯当成了消防栓。如果我们不把那个错误识别结果提出,那么错误的值将使最终结果大大偏离最优解,从而引起较大误差。

采用鲁棒损失函数,降低了大残差的代价。在上面的例子中,这导致离群值项被向下加权,因此它们不会过度影响最终解决方案。

class LossFunction {
 public:
  virtual void Evaluate(double s, double out[3]) const = 0;
};

关键方法是LossFunction::Evaluate(),它给出一个非负标量s,计算

TODO...

posted on 2021-10-11 10:54  JJ_S  阅读(281)  评论(0编辑  收藏  举报