精华内容
下载资源
问答
  • 实现较为粗略的列文伯格-马夸尔特方法代码实现,因为matlab代码简单,很容易修改参数和进行变种。配合https://blog.csdn.net/Pengcode/article/details/107783834进行LM研究将会更加合理。
  • 高斯牛顿(Gauss Newton)、列文伯格-马夸尔特(Levenberg-Marquardt)最优化算法与VSLAM中的具体应用

    转载请说明出处:http://blog.csdn.net/zhubaohua_bupt/article/details/74973347


    在VSLAM优化部分,我们多次谈到,构建一个关于待优化位姿的误差函数

    直接法:灰度误差  ;特征点法:重投影误差),

    待优化的位姿使这个误差函数最小时(当SLAM运动不是太剧烈时,误差函数满足单峰性),认为此时位姿最精确。


    如果这个误差函数是线性,而且已知解析式的,很容易通过求导,令导数=0,求极值解决问题。

    然而,误差函数是关于待优化位姿的一个非线性多元函数,怎么求使这个误差函数最小的位姿呢?


    实际上,这是一个非线性无约束最优化问题,在目前主流的VSLAM(比如ORB,SVO,LSD)里,

    采用的优化算法主要有两种:

    一种是高斯牛顿(Gauss Newton)算法,另一种是列文伯格-马夸尔特(Levenberg-Marquardt)算法,简称LM算法


    下面我们详细探讨一下,高斯牛顿和LM算法的原理以及在VSLAM中的应用。

    首先,最小二乘是要解决什么问题?

           1 最小二乘算法

                   

         1.1 线性最小二乘问题

                 

    1.2 非线性最小二乘问题

                   



    迭代过程如下图所示:

    1.2.1 高斯牛顿法

                            

                   

    1.2.2 LM算法

                   


             

           

                        



            

    2        高斯牛顿和LM算法在VSLAM中的应用


                                       http://blog.csdn.net/zhubaohua_bupt/article/details/74011005



         http://blog.csdn.net/zhubaohua_bupt/article/details/74011005

    展开全文
  • 分享一篇写的非常好的博客LM算法,简单明了地介绍了梯度下降法、牛顿法、高斯牛顿法和Levenberg-Marquardt这几种优化算法之间的联系和区别。

    分享一篇写的非常好的博客LM算法,简单明了地介绍了梯度下降法、牛顿法、高斯牛顿法和Levenberg-Marquardt这几种优化算法之间的联系和区别。

    展开全文
  • LM算法——列文伯格-马夸尔特算法

    千次阅读 2019-04-18 22:27:08
    关于LM写的不错的文章: ...三维重构PMP论文中使用的信赖域算法(LM)matlab版,修改在标定中可用 function [G, val] = rect_rot(G, A, d) % Rectify rotations % % G: Rectifying transform % A, d...

    关于LM写的不错的文章:

    https://blog.csdn.net/a6333230/article/details/83304098

    三维重构PMP论文中使用的信赖域算法(LM)matlab版,修改在标定中可用

    function [G, val] = rect_rot(G, A, d)
    % Rectify rotations
    %
    % G: Rectifying transform
    % A, d: Coefficients for orthonormality constraint
    % val: Value of residual error
    
    ik = size(G, 1);
    ikk = numel(G);
    k = ikk/ik;
    Id = eye(ik);
    IdG = eye(ikk);
    
    % Parameters for trust-region optimization
    delta = 1;
    eta1 = 1/4;
    eta2 = 3/4;
    kappa = 2;
    epsilon = 1e-3;
    
    % Trust-region strategy
    f = A*reshape(G*G', [], 1)-d;
    c = norm(f)^2;
    pc = inf;
    while pc-c > 1e-10
        pG = G;
        pf = f;
        pc = c;
    
        J = A*kron(G, Id)+reshape(permute(reshape(A*kron(Id, G), [], k, ik), [1 3 2]), [], ikk);
        H = J'*J;
        g = J'*f;
    
        while true
            temp = H+IdG*delta;
            r = (temp+trace(temp)*1e-10*IdG)\g;
            G(:) = G(:)-r;
    
            f = A*reshape(G*G', [], 1)-d;
            c = norm(f)^2;
    
            rho = (pc-c)/(pc-norm(pf-J*r)^2);
            rho(isnan(rho)) = 0;
            if rho < eta1 || pc < c
                delta = delta*kappa;
            elseif rho > eta2
                delta = delta/kappa;
            end
    
            if rho < epsilon || pc < c
                G = pG;
                if delta > 1e10
                    c = pc;
                    break;
                end
            else
                break;
            end
        end
    end
    
    val = mse(f);
    
    end
    
    
    展开全文
  • 它是使用最广泛的非线性最小二乘算法,中文为列文伯格-马夸尔特法。它是利用梯度求最大(小)值的算法,形象的说,属于“爬山”法的一种。它同时具有 梯度法 和 牛顿法 的优点。当λ很小时,步长等于牛顿法步长,当...

    什么是最优化?
    Levenberg-Marquardt算法是最优化算法中的一种。最优化是寻找使得函数值最小的参数向量。它的应用领域非常广泛,如:经济学、管理优化、网络分析 、最优设计、机械或电子设计等等。



    根据求导数的方法,可分为2大类。第一类,若f具有解析函数形式,知道x后求导数速度快。第二类,使用数值差分来求导数。根据使用模型不同,分为非约束最优化约束最优化最小二乘最优化


    什么是Levenberg-Marquardt算法?
    它是使用最广泛的非线性最小二乘算法,中文为列文伯格-马夸尔特法。它是利用梯度求最大(小)值的算法,形象的说,属于“爬山”法的一种。它同时具有梯度法牛顿法的优点。当λ很小时,步长等于牛顿法步长,当λ很大时,步长约等于梯度下降法的步长。图1显示了算法从起点,根据函数梯度信息,不断爬升直到最高点(最大值)的迭代过程。共进行了12步。(备注:图1中绿色线条为迭代过程)。



    图1中,算法从山脚开始不断迭代。可以看到,它的寻优速度是比较快的,在山腰部分直接利用梯度大幅度提升(参见后文例子程序中lamda较小时),快到山顶时经过几次尝试(lamda较大时),最后达到顶峰(最大值点),算法终止。

    下面给出算法流程:


    LM算法的实现并不算难,它的关键是用模型函数 f 对待估参数向量p在其领域内做线性近似,忽略掉二阶以上的导数项,从而转化为线性最小二乘问题,它具有收敛速度快等优点。LM算法属于一种“信赖域法”,所谓的信赖域法,即是:在最优化算法中,都是要求一个函数的极小值,每一步迭代中,都要求目标函数值是下降的,而信赖域法,顾名思义,就是从初始点开始,先假设一个可以信赖的最大位移s,然后在以当前点为中心,以s为半径的区域内,通过寻找目标函数的一个近似函数(二次的)的最优点,来求解得到真正的位移。在得到了位移之后,再计算目标函数值,如果其使目标函数值的下降满足了一定条件,那么就说明这个位移是可靠的,则继续按此规则迭代计算下去;如果其不能使目标函数值的下降满足一定的条件,则应减小信赖域的范围,再重新求解。

    LM算法需要对每一个待估参数求偏导,所以,如果你的拟合函数 f 非常复杂,或者待估参数相当地多,那么可能不适合使用LM算法,而可以选择Powell算法(Powell算法不需要求导)。

    伪代码:



    相关源码可以在网址http://www.ics.forth.gr/%CB%9Clourakis/levmar上获得。

    为了方便理解,这里给出相应的算法原理和实现:
    链接:http://pan.baidu.com/s/1pJp0BMj 密码:1u7g
    有什么问题可以咨询我。
    展开全文
  • 列文伯格-马夸尔特 (Levenberg-Marquardt) 算法 ,简称LM 算法 。 下面我们详细探讨一下,高斯牛顿和LM算法的原理以及在VSLAM中的应用。 首先,最小二乘是要解决什么问题?  1 最小二乘算法    1.1 ...
  • 前言 LM方法是适用于求解方程最小值的一种方法,在非线性优化的框架中,优化方法分为Line Search 和 Trust Region,也就是线搜索和信任域方法,它们是两种不同性质的方法。 不同之处: LIne Search:不管当前迭代点...
  • 前段时间要用到这个拟合算法,于是在网上搜了下发现了一段matlab代码,写的非常详细,马上改写之。假设我要拟合的函数为a * atan(b * x + c) + d,代码如下: 1 using Accord.Math; 2 public class ...
  • 首先谈一下应用场景——在拟合的时候进行应用 什么是拟合?你有一堆数据点,我有一个函数,但是这个函数的很多参数是未知的,我只知道你的这些数据点都在我的函数上,因此我可以用你的数据点来求我的函数的未知参数...
  • #高斯牛顿法
  • 在高翔slambook第七讲非线性优化方法中,对于PnP问题选择的优化方法是g2o中的L-M方法,而对于ICP问题选择的是G-N法,... PnP中说g2o中没有G-N方法: ... 而且早在第六讲提出非线性优化时,在用g2o拟合曲线时我尝试选用...
  • 版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载...列文伯格马夸尓法针对这种情况进行了改进,即对$J(x)J^T(x)$矩阵进行改造,添加了一个参数值,保证最后得到的矩阵为正定矩阵,即增量方程变为
  •   在《SLAM之路-列文伯格马夸尓法Cpp实现(元素视角)》这篇文章中,我们直接通过for循环迭代获取增量方程,看起来很冗余,不直观,在本文中,我们将对上篇文章进行改进,使用矩阵表达方式实现算法。   依然...
  • 非线性优化:Levenberg-Marquardt方法 列文伯格马夸尔特算法 Matlab版本,附带运行例子
  • 1、最小二乘法含义 2、理解高斯牛顿法和列文伯格马夸尔特方法 3、g2o库和ceres库使用 文章目录
  • 经典优化方法的基本原理涉及到牛顿法,列文伯格-马夸尔特法以及二分法
  • 最后采用列文伯格马夸尔特算法估计未知节点的最优位置。仿真结果表明,与传统DV-Hop算法以及基于拟牛顿迭代的DV-Hop算法相比,ILDV-Hop算法的定位误差分别减小了23%与10%左右,定位精度有了显著的提高。
  • slam中用到的数学知识

    千次阅读 2018-06-19 18:12:28
    泰勒展开式:理解泰勒展开的推导和意义 协方差及协方差矩阵:协方差,协方差矩阵 牛顿法:注意链接右边的几幅图,让人更容易懂牛顿法 高斯牛顿法 列文伯格-马夸尔特法 图优化 ...
  • 高斯牛顿法详解

    千次阅读 多人点赞 2020-10-26 14:29:10
    一、高斯牛顿法发展历程 1、从上倒下为高斯牛顿法的前世今生...马夸尔特法 二、高斯牛顿法引出的前世 注:由于原理的相似性,最速下降法和牛顿法可以统称为一阶,二阶梯度法 1、最速下降法 考虑如下优化目标函数: ...
  • (3)列文伯格-马夸尔特方法(Levenberg-Marquadt法) 非线性优化小结: 实践: 1.Ceres库(谷歌)简介 ceres曲线拟合实例 代码 结果 2.g20库(基于图优化)简介 g20步骤: 总结: 非线性最小二乘问题 因为...
  • 优化

    2015-07-26 21:06:40
    Levenberg-Marquardt算法,它是使用最广泛的非线性最小二乘算法,中文为列文伯格-马夸尔特法。它是利用梯度求最大(小)值的算法,形象的说,属于“爬山”法的一种。它同时具有梯度法和牛顿法的优点。当λ很小时,...
  • 非线性优化算法总结

    2020-07-09 22:56:35
    非线性优化算法总结 非线性优化方法: ...4、列文伯格-马夸尔特(Lenverberg-Maquardt):综合梯度下降法和高斯牛顿法,为保证近似的Hessain矩阵正定,在JTJJ^{T}JJTJ上加入阻尼项 5、Dog-leg ...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 219
精华内容 87
关键字:

列文伯格马夸尔特