【问题标题】:Ceres Solver : using smooth approximations for non-linear least squaresCeres Solver:对非线性最小二乘使用平滑近似
【发布时间】:2019-08-04 15:11:09
【问题描述】:

我们正在使用 Google ceres 求解器来解决计算机视觉应用程序中出现的优化问题。我们使用 AutoDiffCostFunction 来评估残差,密集的 QR 求解器能够优化函数并找到合适的最小值。但我想知道使用 fmax、fmin 和 relu 等非平滑函数(或残差内的 if/else)是否被认为是一种不好的做法。

我们的残差包含一些非平滑操作:

// compute the area of intersection rectangle
T interArea = fmax(T(0.0), xB - xA) * fmax(T(0.0), yB - yA);

另一个在零处不可微的 sn-p:

// Generalized Intersection over Union 
T g_iou = (a_c > T(0.0)) ? (iou - (a_c - u) / a_c) : T(0.0);

例如,我们可以用平滑近似替换 fmax:

(1) fmax(x, y; k) = log( exp(kx) + exp(ky) ) / k

问题是我们是否应该系统地去除任何不平滑的残差,即使密集的 QR 按预期工作?

【问题讨论】:

    标签: c++ mathematical-optimization least-squares ceres-solver autodiff


    【解决方案1】:

    线性求解器的选择与目标函数的平滑度无关。如果它有效,那你很好,但是 Ceres Solver 在理论上假设一个平滑的目标。不光滑是轻微的或不是非常广泛地存在,那么你可能还好。也就是说,人们(包括我)经常有你在我们的目标函数中使用的那种条件。

    【讨论】:

    • 嗨@Sameer Agarwal 谢谢你的回复。我认为答案被截断了?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2018-12-27
    相关资源
    最近更新 更多