立体匹配:经典算法FastBilateralSolver

一对做过立体校正后的双目图像而下面左图是OpenCV的SGBM算法得到的视差图,右边则是通过我今天要介绍的算法处理后的视差图。看了它们后,我想你应该对什么叫做”化腐朽为神奇“有了深刻印象了吧。

左:SGBM算法结果右:今日介绍的算法结果那么如此神奇的效果,是如何做到的呢?在复杂的问题进行空间转换,变换为小规模的易解问题的思想:

FastBilateral-SpaceStereo算法思想总结这个算法的优点我们已经讲过了,在此不再赘述。然而它也有明显的缺点。首先是其匹配代价函数过于简单,上面公式中第二项是就是匹配代价项,也即是数据项。为了尽可能简单快速求解,作者采用了下面这样非常简单的形式:

简化的立体匹配代价函数图示如下:

图示这种简化问题的思路然而,正是因为其形式非常简单,因此效果也不够好,很容易出现大大小小的错误。FastBilateral-SpaceStereo算法的另外一个问题是,作者把上述代价映射到了双边空间,用一种叫做L-BFGS的方法进行求解,这是Broyden,Fletcher,Goldfarb,Shanno这几位数学家发明的优化算法,他们名字的首字母组合就是BFGS。这是一种迭代式的求解方法,它的求解速度是比较慢的。

FBS思想在作者论文中开篇就用下面这幅图来说明了这个思想:

利用FBS优化视差图我一开始给大家呈现的关于猫猫的视差图(下面右图),就是用FBS处理了SGBM算法的结果(左图)后得到的,这也是我最喜欢的FBS的用法:

左:SGBM算法结果右:FBS优化左图的结果FBS的优秀之处在于它不仅仅可以用于优化初始的视差图,还能做得更多,比如视差图或深度图图的超分辨率重建。这里有一个低质量的输入视差图y,以及一个参考图像R,通过FBS可以得到高质量的输出图像x,其中x相对于参考图像R满足双边平滑的特性,且其边缘贴合参考图像的边缘,同时x还与输入图像y尽可能相似。

在图像超分钟应用FBS另外一个有趣的应用是用户引导的灰度图像上色。这里也有低质量的输入图像y,即用户指定的最终色彩图像的骨架,原始的灰度图像则作为参考图像。再指定一个置信度图c,我们一样通过FBS求解输出彩色图像x,并且要求x自身相对参考图像来说是双边平滑的,同时还在高置信度的区域和用户输入y尽可能一致。

在图像上色中应用FBS看出来了吧?FBS算法可以用于优化任意的输入图像,只要给出了一个参考图像和一个目标图像,它就会努力的让输出图像既能够按照参考图像来双边平滑,又能够非常接近目标图像,所以这是一种非常通用的算法。那么在下一节中,我们从原理上理解一下FBS算法。

二.FBS算法的应用目标和原理

2.1FBS算法要解决的问题

用数学公式更加严谨的说明一下FBS吧。我们的目标是求解一个未知的图像x,它本身相对于参考图像R是双边平滑的(下式第1项),但在高置信度的区域又是和输入的目标图像t又是非常接近的。

FBS试图优化的全局代价函数刚才给过的这张图,清晰的展示了上面公式的4张图。左上图为目标图像t,是由一个立体匹配算法得到的初始视差图。而右上图是输出图x,是经过FBS优化得到的结果。左下图是置信度图c,右下图则是输入的参考图像R,上面公式中的W就是由输入参考图像R计算而来的。

FBS应用到视差后处理优化的示例

2.2将问题转换到双边空间

求解上述的最小化的问题非常复杂,于是我们沿用上一次讲到的思想,将问题转换到双边空间中去求解。不过,FBS和FastBilateralStereo算法在双边空间中的表达式有关键的区别:

在双边空间中比较FBS及FastBilateral-Space算法可以看到,FBS在双边空间中的求解非常简单,直接求解一个线性等式Ay=b即可,这是因为FBS不再需要承担做立体匹配的职责,它只需要保证优化后的视差图满足双边平滑以及与初始视差图尽可能相似即可。当在双边空间中求得了y,接下来就再用下面的公式把结果转换为像素空间,就可以得到像素空间中的优化后的视差图了:

看起来是不是很简单?所以上面公式中最关键的就是要找出公式(6)中A和b及c的表达式,作者论文中已经给出:

下面我们再解释一下上面几个公式中的各个变量:

三.FBS的应用效果

让我先展示一些作者论文中的FBS的效果吧。首先我们看看一个当时最优秀的立体匹配算法MC-CNN的结果,这是第一代基于深度学习的立体匹配算法。下面是MiddleBurry立体匹配数据集中的一幅图,从下图中看来,它在很多边缘细节上还是出现了错误和瑕疵:

用FBS优化MC-CNN算法结果大大减少了错误下面是另外一张,很明显MC-CNN出现了很多瑕疵,尤其是近距离处出现很多匹配错误

下面是经过FBS优化后的结果,很明显视觉效果好了不少,MAE和RMSE也少了很多!

用FBS优化MC-CNN算法结果大大减少了错误

四.可导性与深度学习

深度学习用于优化复杂的目标函数直接优化上述函数是很困难的,所以实际中一般会采用小批量随机梯度下降法来求解

在反向传播中要求FBS可导在FBS之前有很多全局能量优化的算法,都很难做到这一点。幸运的是,作者证明了FBS是可以用于反向传播的,我们把FBS看做下面这样的函数

那么反向传播需要求解它对于输入的两幅图像的偏导数:

作者在论文中给出了两个偏导数的公式:

作者给了一个例子,来说明引入了FBS到网络中的好处,首先是用Deeplab进行分割后的粗糙结果:

DenseCRF优化DeepLab算法结果的展示如果我们将DenseCRF替换为FBS加入到网络中,可以看到效果相似,但速度是11倍快!

FBS优化DeepLab算法结果的展示

五.总结

输出图像的两大特性然后是作者将上述复杂的公式,转换到了双边空间中,降低问题规模,用于快速求解,而在今天所说的FBS算法中,作者又将这种思想进行了更深层次的应用。

我们当前的进度

审核编辑:李倩

原文标题:立体匹配:经典算法FastBilateralSolver

长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)

THE END
1.一文图解弄懂八大常用算法思想一文图解弄懂八大常用算法思想 算法和数据结构一直以来都是程序员的基本内功,可以说没有数据结构的基础建设和算法加持,也就没有这将近八十年的信息革命时代。数据结构可以看作是算法实现的容器,通过一系列特殊结构的数据集合,能够将算法更为高效而可靠的执行起来。https://www.51cto.com/article/628524.html
2.如何学习算法算法怎么学如何学习算法 14天阅读挑战赛 算法,不懂的人觉得好难,无所适应;但对于懂的人,就感觉非常的简单,有点像那种脑筋急转弯一样,不同人的思路,用代码来实现。知识在于积累,学习需要耐心。不懂也不要觉得自己笨,或许你一开始毫无头绪,但转个角度,换个工具,时间久了总会找到门径。https://blog.csdn.net/qq_48701993/article/details/127402826
3.机器学习算法核心思想总结朴素贝叶斯是一种基于贝叶斯定理和特征条件独立性假设的多分类的机器学习方法,所谓贝叶斯指的是:朴素贝叶斯分类器是通过比较类后验概率大小,将样本分到类后验概率最大的类别中,因此是一种贝叶斯方法;所谓朴素指的是:类后验概率是通过先验概率分布和条件概率分布求得,先验概率分布就是每个类的先验概率,条件概率分布即在https://www.jianshu.com/p/27365970f535
4.python机器学习笔记:深入学习决策树算法原理如何选择模型呢?(这里借助别人的图来选择分类,回归,聚类,降维) 决策数(Decision Tree)在机器学习中也是比较常见的一种算法,属于监督学习中的一种。看字面意思应该也比较容易理解,而作为一个码农,经常不断的敲 if else,其实就已经用到了决策树的思想了,所以相比其他算法比如支持向量机(SVM)或神经网络,似乎决策树感https://www.flyai.com/article/622
5.高二数学教案通过模仿、操作、探索,学习设计程序框图表达,解决问题的过程,发展有条理的思考与表达的能力,提高逻辑思维能力。 3、情感、态度与价值观目标 通过本节的自主性学习,让学生感受和体会算法思想在解决具体问题中的意义,增强学生的创新能力和应用数学的意识。三、教法分析 https://www.fwsir.com/jiaoan/html/jiaoan_20221204150736_2117816.html
6.机器学习(14)——朴素贝叶斯算法思想:基于概率的预测贝叶斯公式算法思想:基于概率的预测 逻辑回归通过拟合曲线(或者学习超平面)实现分类,决策树通过寻找最佳划分特征进而学习样本路径实现分类,支持向量机通过寻找分类超平面进而最大化类别间隔实现分类。相比之下,朴素贝叶斯独辟蹊径,通过考虑特征概率来预测分类。 贝叶斯思想 那么如何通过概率来进行决策的构建呢?举个可能不太恰当的例子:https://cloud.tencent.com/developer/article/1111761
7.相由心生?面部算法分析能否窥测你的内心?思想市场澎湃新闻虽然该文摘要指出,该算法只是在学习和聚合,然后反刍(regurgitating)人类的感知,很容易出错,但是作者还是表示:“我们的经验证据指向了训练机器学习算法的可能性,比如使用人脸图像预测人格特征和行为倾向。” 9月初,斯坦福大学的迈克尔·科辛斯基(Michal Kosinski)和王轶伦发布了一项研究的预稿,报告表明,利用约会网站上的照https://www.thepaper.cn/newsDetail_forward_1864416
8.高二数学公开课优秀教案(通用10篇)通过模仿、操作、探索,学习设计程序框图表达,解决问题的过程,发展有条理的思考与表达的能力,提高逻辑思维能力。 3、情感、态度与价值观目标 通过本节的自主性学习,让学生感受和体会算法思想在解决具体问题中的意义,增强学生的创新能力和应用数学的意识。三、教法分析 https://www.oh100.com/kaoshi/jiaoan/637987.html
9.数学教师业务提升计划(精选15篇)数学教学不再是教师向学生传授知识的过程,而是给学生创造环境,鼓励学生“观察”、“操作”、“发现”,在这个过程中通过合作交流,让学生发展自主学习。下面是小编带来的数学教师业务提升计划(精选15篇),希望对大家有帮助! 数学教师业务提升计划1 一、 指导思想 https://www.ruiwen.com/word/shuxuejiaoshiyewutishengjihua.html
10.学习算法的意义(精选八篇)这就需要我们教育工作者认真地来理解和思考新课标下的算法,并将算法思想有效地渗透和贯穿到数学教学中,让学生能够具备算法思想和信息技术素养,这也将是未来社会对于公民的基本要求。 摘要:随着现代信息技术的迅猛发展,算法已融入生活的众多方面,扮演着重要的角色。在高中数学教科书中也将算法作为一个独立的章节在学习,https://www.360wenmi.com/f/cnkey165grie.html
11.高分遥感驱动的精准土地利用与土地覆盖变化信息智能计算模型与的属性信息,而“建”、“水”、“土”、“生”、“地”等各类地理图斑又明显地具有多尺度空间粒特点,因此以图斑为记录对象的属性表天然具有鲜明的多粒度特性与层次化特征,可遵循粒计算的原理约简X(降维),并以较大的泛化力提炼X与y间的映射关系,从而在目标空间Y中构建形成针对不同求解目标y的迁移学习算法集http://www.jors.cn/jrs/article/html/202107001
12.“问道”学习知识云:算法助力思想理论学习实践“问道”学习知识云依托新华社新闻数据和媒体智库分析能力,结合北京大学王选计算机研究所的自然语言处理技术和北京大学习近平新时代中国特色社会主义思想研究院等学术机构的研究成果,突显了内容上的权威性优势、算法上的精准度优势、知识图谱构建的系统性优势。 http://www.xinhuanet.com/enterprise/20220803/59cef15ff0574d0bb657af4dc7687d88/c.html
13.图分析与学习算法自动驾驶技术……这两位人大学子,获奖降低大规模图分析与学习算法的复杂度 创造自动驾驶技术多任务通用模型 …… 每一项科研成果的背后 都是无数个日夜的辛苦与坚持 近日,中国人民大学信息学院2019级直博生王涵之、2020届硕士毕业生丁明宇与来自香港大学、清华大学、上海交通大学、南京大学、斯坦福大学、华盛顿大学、加州大学洛杉矶分校的8名学子一同获得了第https://t.m.youth.cn/transfer/index/url/tech.youth.cn/wzlb/202201/t20220129_13411740.htm
14.中职数学高一教学计划(精选11篇)每个知识点都用实际问题因如,然后研究问题的算法,最后给出必要的练习。通过不断渗透算法思想,逐步培养学生应用算法解决问题的意识和能力。 3.增加较大的使用弹性 考虑中等职业学校专业的多样性,各对数学能力的要求也不相同,教学要求给出了较大的选择范围,增加了教学的弹性。 https://www.unjs.com/jiaoxuejihua/202204/5034426.html