《论文阅读》BA-NET: DENSE BUNDLE ADJUSTMENT NETWORKS

news2025/1/19 23:13:17

留个笔记自用

BA-NET: DENSE BUNDLE ADJUSTMENT NETWORKS

做什么

首先是最基础的,Structure-from-Motion(SFM),SFM可以简单翻译成运动估计,是一种基于dui8序列图片进行三维重建的算法。简单来说就是是从运动中不同角度拍摄一个物体,这样就有多张物体不同时间的照片,使用这种照片来恢复物体的三维结构。跟SLAM里的visual odometry一样,需要估计出每帧图片到世界坐标系的R,t,然后根据图片重建点云。
在这里插入图片描述
算法的关键是就是特征匹配,求两张图片之间的R,T,然后反投影得到物体的三维点,最后将多个稀疏点云融合在一起。
然后是SFM常用的一种算法Bundle Adjustment(BA),光束调整,也就是这篇文章所做的
在这里插入图片描述
在这里插入图片描述
省去复杂的公式,BA做的也是特征匹配的工作,在不同视角的图像中选取特征点,然后将这些特征点之间进行匹配,理论上来说,在整个空间上,这些匹配点如果投影到世界坐标系应该尽可能的接近,比如两张图片中的特征点都是某个桌子的左下角,那么就算在图片上位置不同,经过R,t转回去也应该在空间上位置接近。这就是重投影误差,使用这种方式来优化R,t,同时也会优化特征点的位置。
BA往往做的是精细化建图(空间建图)的工作。

做了什么

在这里插入图片描述
在这之前的BA都是用的传统数学方法来计算的特征匹配,这里引入了深度学习的东西,而DL这东西,最强大的地方就在于特征提取这项工作上,能减少异常值、增强几何能力之类的。这篇文章整个pipeline可微的,能同时估计每个像素的深度图和

怎么做

跟传统BA有些不同的是,整个框架的逻辑是同时估计每个像素的深度图还有camera的pose,并且把这种framework称为feature-metric BA。然后也是去优化这个光度误差
在这里插入图片描述
在这里,d是点qj的深度图,这里也就是重投影了,把点根据预测的深度重投影到三维空间中,Tb是第i个camere的预测pose,π是投影函数。这里将以距离为优化目标的光度误差换成了特征目标,F是feature encoder。总的来说,这里最小化的就是图像上原特征点和特征点投影之后的点之间的特征差,设计上感觉类似于传统的VGG LOSS。
在这里插入图片描述
整个框架的overwivew↑,输入是一个图像序列,然后用DRN-54作encoder去进行feature encode。这里的DRN-54是膨胀残留网络,记得之前有记到过,总的来说这里就是选了一个适合图像的Encoder在这里插入图片描述
然后对这些特征使用一个特征金字塔(FPN),也就是图上的橙色部分将得到的feature输入BA层
在这里插入图片描述
所以,首先是看看这里的FPN的构造
在这里插入图片描述
这里的构造向目标检测里的FPN看齐,也就是多scale的方式,这里的C指的是前面DRN encoder中的不同卷积层的输出,这里做的就是把这些不同卷积层(不同stride来获得不同程度的感受野)得到的特征,进行融合,方式就是FPN的方式,这里就不赘述了,就是conv得到当前特征,然后upsamling和下一个尺度的特征进行融合后再conv。
这里展示了一下FPN的效果
在这里插入图片描述
主要是为了说明这种缓和特征对后续BA优化也就是LM优化的好处,但这并不是重点。
回到overview,在FPN特征的同时,这里还用DRN得到的特征去进行一个decode,得到逐点对应的深度图,也就是图上的红色部分
在这里插入图片描述
在这里插入图片描述
在这里,为了减少开销,假设D是逐像素的深度图,如果图像是h×w的,那么D就是h×w的,目标是预测每个像素的深度值,因为参数过多(h×w个优化结果)而导致训练困难,所以这里采用的B是128个h×w的矩阵(由网络计算得出的),将这里的B视为每个像素可能的深度图,然后再用一个线性权重W来融合这128个图,得到聚合后的逐点特征。在这里,B是通过网络得到的,而w是通过BA层进行优化的。也就是说,主要是通过控制128个基础深度图之间的权重来计算深度图。
这样就可以将开始的那个式子具体写成
在这里插入图片描述
最后就是这里最重要的一个部分,BA layer
在这里插入图片描述
目的就是通过优化前面提到的式在这里插入图片描述
来同时优化camera的pose和generator得到的深度图(优化线性权重W),按照传统的BA原则,这里应该是使用 Levenberg‑Marquardt (LM)来进行优化,但是传统的LM是不可微的,文章里列举了两个原因
在这里插入图片描述
简单来说就两点,因为LM优化需要用到if-else来判断迭代终止条件和改变优化参数,而if-else这个在网络里的话就是不可微的,即不能端到端训练的。而这篇文章则解决了这两个问题。
首先是第一个,迭代终止问题,直接固定一个迭代次数,不去进行判断,到点即停。第二个则是针对这个参数λ的,不去使用算法原来的方式改变,而是构造了一个MLP进行预测
在这里插入图片描述
这里展示了LM层的单次迭代,F是前面FPN,X是当前迭代的解(上一个迭代的输出或者初始化的值),希望通过LM层输出的是解的差值ΔX,然后更新X。值得一提的是,这里的解并不是一个简单的结果,而是前面FPN得到的多尺度特征图
文中介绍了一下整个流程
在这里插入图片描述
简单来说,就是利用FPN对X进行encode,然后计算前面类似VGG LOSS的那个公式。然后分为上下两条线,上面线路得到误差E之后,计算雅各比矩阵J,然后计算黑塞矩阵H,计算对角矩阵D。下面线路先对所有像素GAP(global average pooling)后用MLP预测前面说不可微的参数λ。
最后上下两条路线各自得到了E J H D λ,融合得到迭代ΔX
在这里插入图片描述
然后使用标准LM迭代来更新解X,这里的g(Xk-1,F)其实就是这里LM层求的ΔX,◦运算是参数的更新函数,在结构上表示为深度图上深度值的直接加法和SE(3)pose的更新。
最后是训练网络的LOSS,整体是端到端的
有监督pose的在这里插入图片描述在这里插入图片描述
和监督深度图的berHu Loss(Huber的反向,下面是huber👇)在这里插入图片描述
归纳一下,可以看到整体网络是同时优化pose和深度图,所以用了这两个对应的LOSS来进行训练。整个结构中有三个属于DL的部分,encoder、depth generator、FPN,BA里的MLP。首先是比较简单的深度,这里用端到端的BA预测一个线性权重,来线性聚合generator生成的多个基础深度图,所以这两个部分都得到了训练(得到深度图后就可以把图像投影到3D去了)。然后是pose,这里是通过迭代求解SE(3),通过监督SE(3)的差值来优化FPN和encoder。

效果

在这里插入图片描述
scannet上配准效果的对比,demon是一个同时进行深度估计和运动估计的baseline《DeMoN: Depth and Motion Network for Learning Monocular Stereo》,这里是把BANet之类的作为后处理来进行精化
在这里插入图片描述
KITTI上全程轨迹精度的对比

总结

1.使用端到端的方法来实现visual的BA,构造了个看起来很有趣的BA layer来解决可微的问题,理论来说,有了这个BA层,就可以实现各种模态的BA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/44155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】记录从3.9升级到3.11踩的坑

写在前面的话:如果想体验python3.11,不推荐生产环境升级,可以现在测试环境试试看 环境变化 原始环境 Python3.9,有挺多安装的第三方库,有自己写的类和方法,程序一切运行正常 升级环境 Python3.11&#…

如何获取Adreno GPU数据

什么是GPU GPU(Graphic Processing Unit)是图形处理器,相当于在计算机和移动终端上做图形图像运算工作的微处理器,显示芯片。通过向量计算和并行计算等方式加速了原有的计算工作,能够更好地处理几何转换和光照计算等&a…

如何与意法半导体STMicro建立EDI连接?

项目背景 意法半导体STMicro是全球最大的半导体公司之一,2010 年净收入 103.5 亿美元,2011 年第二季度净收入 25.7亿美元。 以业内最广泛的产品组合著称,凭借多元化的技术、尖端的设计能力、知识产权组合、合作伙伴战略和高效的制造能力&…

pdf怎么编辑?分享两款pdf编辑软件,编辑pdf也很简单!

pdf怎么编辑?其实也很简单,现在跟大家分享两款pdf编辑软件,可以让我们对pdf实现自由编辑修改,有了这两款pdf编辑软件,编辑pdf将不再困难。 pdf编辑软件一:万兴pdf编辑软件 万兴pdf是一款受众广泛&#xff0…

【设计】OOA、OOD、OOP

这三者都是 OO(Object-Oriented)领域的思想。 一般我们我们接到产品经理的需求后,开发阶段分这样几个步骤: 可行性预研阶段,此阶段评估需求是否合理,能否实现;OOA阶段,此阶段分析用…

【Lilishop商城】No2-5.确定软件架构搭建四(本篇包括消息中间件RocketMQ)

仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在: 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇只介绍重点架构逻辑,具体编写看源代码就行,读起来也不复杂~ 谨慎&#xff…

Python:如何在 CentOS 8 服务器上运行 Selenium 代码?

前言 因项目需求,需要在 CentOS 8 服务器上运行 Python-Selenium 代码,那么该如何操作呢? 运行环境 CentOS Stream 8Python 3.9.13selenium4.6.0Google Chrome 107.0.5304.121 操作步骤 安装 Google Chrome 下载 Linux 版本的 Chrome 将下…

怎么合并视频?快把这些方法收好

小伙伴们平时会在通过网课来提高自己的技能吗?我经常会在网上保存一系列的视频进行学习,可是当保存的网课视频数量多起来后,每次想要找对应的视频,都得花上不少的时间。其实我们可以通过将相同系列的视频合并起来的方法&#xff0…

java word,excel,ppt转pdf

准备工作 1.下载 jacob.jar 链接:https://pan.baidu.com/s/1TWIGyX9A3xQ6AG9Y3mVlVg 提取码:abcd 2.下载安装wpsWPS Office-支持多人在线编辑多种文档格式_WPS官方网站 3.添加 jar到项目和ddl文件放在jdk的jre/bin目录下,记得自己系统是…

13_cgi

知识点1【cgi实现计算器案例】 2、GET的同步方式&#xff1a; index.html <html><head><title>table</title><meta charset"UTF-8"><!--这是描述 js中的函数来之哪个js文件--><script type"text/javascript" sr…

Kafka基础与核心概念

本文&#xff0c;我们将试图回答什么是apache kafka。 kafka是一个分布式流平台或者分布式消息提交日志 分布式 Kafka 由一个或多个节点组成的工作集群&#xff0c;这些节点可以位于不同的数据中心&#xff0c;我们可以在 Kafka 集群的不同节点之间分布数据/负载&#xff0c;并…

【学习笔记47】开关变量和拖拽效果

一、开关案例 <button>点击获取验证码</button>&#xff08;一&#xff09;基本功能的实现 // 获取标签对象const oBtn document.querySelector(button);// 给按钮添加点击事件oBtn.addEventListener(click, function () {// 定义变量 用于获取验证码let count 5…

javaSE- 方法的使用

一、方法的基本用法 方法就是一个代码片段. 类似于 C 语言中的 “函数”. 方法存在的意义(不要背, 重在体会): 是能够模块化的组织代码(当代码规模比较复杂的时候).做到代码被重复使用, 一份代码可以在多个位置使用.让代码更好理解更简单.直接调用现有方法开发, 不必重复造轮…

04_SpringBoot整合Mybatis

文章目录SpringBoot整合Mybatis0x01_创建项目导入依赖0x02_编写配置文件0x03_编写功能代码SpringBoot整合Mybatis 欢迎关注公众号“小东方不败” 0x01_创建项目导入依赖 创建项目&#xff1a; 目前稳定的最新版本是2.7.5,勾选两个依赖&#xff1a;Lombok和Spring Web 然后需…

Nodejs -- Express 路由原理及设置模块化路由

文章目录1. 路由的概念1.1 什么是路由1.2 显示生活中的路由1.3 Express中的路由1.4 Express中路由的例子1.5 路由的匹配过程2 路由的使用2.1 最简单的用法2.2 模块化路由2.3 为路由模块添加统一前缀1. 路由的概念 1.1 什么是路由 广义上来讲&#xff0c;路由就是映射关系 1.…

yarn : 无法加载文件 C:\Users\sunlight\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。

问题&#xff1a; yarn安装好了&#xff0c;vscode报错 报错问题&#xff1a;yarn 无法加载文件 C:\Users\sunlight\AppData\Roaming\npm\yarn.ps1&#xff0c;因为在此系统上禁止运行脚本。 具体问题&#xff1a;cmd&#xff08;管理员运行&#xff09;中安装好了yarn &…

Angular使用管道和指令进行多语言切换

工作中经常遇到需要进行多种语言切换的项目。本文记录了一种在Angular页面中通过使用管道和自定义指令实现的语言切换方案。 1、实现效果 页面显示文字根据选择的语言自动进行翻译切换&#xff0c;如下图所示&#xff1a; 此时&#xff0c;页面模板的字符串全部按照管道格式书…

2023年IB生物有什么变化?

今天我们详细了解下2023年IBDP生物新课程内容、考试评估、内容、技能发展、科学本质等详细内容。IBDP生物新课程概述 IBDP新生物课程将于2023年2月开课&#xff0c;2023年8月首次授课&#xff0c;2025年5月进行首次考试。新课程反映社会变革&#xff0c;更加关注技能和概念、背…

【iMessage苹果推群发】苹果相册推archive到appstore开发证书(Development certificate)

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

DCHP通讯协议

从通讯TCP/IP的构成传输&#xff0c;到IP地址的分类&#xff0c;再到局域网与广域网的设置。 通讯协议的构成概述IPDHCP-设定动态IPDNS数据的流动广域网 网关局域网 交换机NAT桥接模式实操概述 前景知识&#xff1a;虚拟机与工艺库管理 扩展&#xff1a;NAT模式的实操。 1、T…