谷神星求解器:对非线性最小二乘法使用平滑近似
Ceres Solver : using smooth approximations for non-linear least squares
我们正在使用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);
另一个在零处不可微分的片段:
// 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按预期工作,我们是否应该系统地去除任何不平滑的残差?
线性求解器的选择与目标函数的平滑度无关。如果它有效,你很好,但一个平滑的目标是谷神星求解器理论上假设的。不光滑是轻微的或不是非常广泛地存在,那么你很可能没事。也就是说,人们(包括我(经常有你在目标函数中使用的那种条件。
相关文章:
- 在二维数组中查找最小值和最大值?
- 运行无限循环的最小二叉树问题
- 最小二乘多项式拟合仅适用于偶数个坐标
- 犰狳函数的不同最小二乘误差
- 谷神星求解器:对非线性最小二乘法使用平滑近似
- 从二维数组中查找最小值和最大值
- 在二叉树中返回最大值和最小值
- 在二叉搜索树中查找最小和的算法改进
- 无法使用 glm::vec2 作为矩阵的标量类型并使用线性最小二乘法求解
- 寻找小集合的刚性二维变换
- 线性代数方程 Ax 的最小二乘解 = 由 在本征C++中
- 以线性最小二乘方式求解系统 Ax=b,具有复元素和下三角形平方 A 矩阵
- 线性方程组,带约束的最小二乘法
- 用最小二乘法拟合圆
- 图像曲线拟合的多项式最小二乘法
- 偏最小二乘库
- GSL 非线性最小二乘拟合不会收敛
- 卡尔曼,最小二乘法,或
- 迭代非线性最小二乘优化3d到2d投影
- 用c++特征库求解线性最小二乘方程(动态分配)