ceres中的loss函数实现探查,包括Huber,Cauchy,Tolerant图像实现及源码
ceres中的loss函数实现探查,包括Huber,Cauchy,Tolerant图像实现及源码
文章图片
各个损失函数的趋势图:
文章图片
?
Ceres内嵌的loss functions原理:
文章图片
【ceres中的loss函数实现探查,包括Huber,Cauchy,Tolerant图像实现及源码】以CauchyLoss方法为例,其头文件为:
// Inspired by the Cauchy distribution
//rho(s) = log(1 + s).
// At s = 0: rho = [0, 1, -1].
class CERES_EXPORT CauchyLoss : public LossFunction {
public:
explicit CauchyLoss(double a) : b_(a * a), c_(1 / b_) {}
void Evaluate(double, double*) const override;
//可以看出CauchyLoss()中的参数为尺度参数。
private:
// b = a^2.
const double b_;
// c = 1 / a^2.
const double c_;
};
具体实现为:
void CauchyLoss::Evaluate(double s, double rho[3]) const {
const double sum = 1.0 + s * c_;
const double inv = 1.0 / sum;
// 'sum' and 'inv' are always positive, assuming that 's' is.
rho[0] = b_ * log(sum);
rho[1] = std::max(std::numeric_limits::min(), inv);
rho[2] = - c_ * (inv * inv);
}
推荐阅读
- 热闹中的孤独
- JS中的各种宽高度定义及其应用
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- Android中的AES加密-下
- 放下心中的偶像包袱吧
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- 如何在Mac中的文件选择框中打开系统隐藏文件夹