《论文阅读》DeepSFM: Structure From Motion Via Deep Bundle Adjustment

news/2024/4/20 16:03:56/文章来源:https://blog.csdn.net/qq_43310834/article/details/128093024

留个笔记自用

DeepSFM: Structure From Motion Via Deep Bundle Adjustment

做什么

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

做了什么

在这里插入图片描述
这张图展示了DeepSFM和其他方法的区别,a是传统的回归方式,就是分别用depth模块和pose模块分别估计深度图和pose,它文章里说的这种方法会存在泛化性问题,就是在不同场景下效果会差距很大。b是常规的深度估计方法,这里的意思就是已经通过某些设备(动捕、IMU之类的东西)知道了GT的pose,然后就可以通过这个pose作为一种正则化或者约束得到depth。c图就是它这里说的受BA框架启发而设计的模式,使用当前camera的pose优化像素的深度值,同样又使用深度值优化pose,说白了,就是传统BA的设计方式,同时优化深度图和pose。
除此之外,这里可以说上比较特殊的就是不需要一个良好的初始化值,因为在计算过程中它采样了多个虚拟可能值,然后对这些虚拟可能值打分,得到质量最高的那种可能

怎么做

在这里插入图片描述
整个框架的overwivew↑,输入是一个图像序列,输出是每帧的深度图和到世界坐标系的pose,值得注意的是这里也假设的是又一个效果还可以的深度图和pose的初始化的值,可以说是完全作为一个slam的后处理来做。整体框架上,首先用一个encoder提取feature,然后利用这个feature进行depth估计和pose估计。
在这里插入图片描述
首先是这里的feature extraction模块,这里构造的方式是先构造N个CNN,然后最后接一层spatial pyramid pooling层使输出变成一个固定的维度,方式看起来和SPP原文设计的很类似,说白了就是一个多尺度的特征聚合方式。
在这里插入图片描述
然后是第二个模块,DCV模块,深度估计模块
在这里插入图片描述
DCV模块由三个部分构成,目标图像特征,变换之后的源图像特征和深度性一致图。其实从名字上就很好理解,这里监督的就是变化图像(利用pose)的每个像素特征和目标图像特征之间的一致性误差。
具体来说,为了将源图像的特征和深度图投影到目标图像的3D空间,先是在逆深度空间中均匀采样一组垂直于目标图像z轴的虚拟平面,就是在源图像的深度图对着目标图的方向进行采样出多个平面,目的就是为了判断每个平面的质量。逆深度空间是近年来SLAM研究中出现的一种广泛使用的参数化技巧。它使用深度的倒数(也就是逆深度)来进行参数化,因为逆深度的分布更贴近高斯分布。
然后就是将feature转换到前面采样出来的所有虚拟平面上
在这里插入图片描述
在这里,u是目标图像上每个像素的坐标,ul是源图像上相应点的坐标,F~值得就是变换之后的整体特征,这里的生成方式是双线性插值。
至此,就完成了前两步,目标图像特征和源图像特征,这两个就是特征层次的一致性。接下来还构造了另外一个就是深度层次的一致性,来判断深度预测的质量,或者说给每个虚拟平面打分。这里的方式其实跟特征差不多,对源图像的深度图进行采样,然后也变换到目标图像坐标系下,还有另一个,这里用了个函数
在这里插入图片描述
简单来说,就是将这些虚拟深度图转换为源图像的坐标系,至此,就完成了两个一致性目标,特征层次的一致性和深度层次的一致性,然后就用这俩特征进行后续的decode
在这里插入图片描述
之后是第三模块,PCV模块,这里的方式也跟DCV类似,也是使用的采样的方法
在这里插入图片描述
从图上就能更好地理解,给定一个初始的pose,在保证一个不变的情况下对另外一个进行采样,获得N个虚拟pose,接下来就是给这些虚拟pose打分。
在这里插入图片描述
之后,像DCV一样,构造深度层次的一致性和特征层次的一致性,就是直接将源图像的这两个通过虚拟pose转换到目标坐标系下,同样的,特征层次的转换也使用的插值,深度层次的转换使用的最近邻方法。最后,也通过一序列3D卷积回归出pose在这里插入图片描述
最后是训练方式,既然是同时优化深度和pose,那么loss就很简单了,经典的Lrotation和Ltranslation还有Ldepth在这里插入图片描述

效果

在这里插入图片描述
scannet上配准效果的对比,demon是一个同时进行深度估计和运动估计的baseline《DeMoN: Depth and Motion Network for Learning Monocular Stereo》,和BANet一样都是把它作为的baseline,当前网络作为后处理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同样的,也在ETH3D做了轨迹精度上的对比

总结

1.框架构造的方式就是按BA那样进行的设计,加入了光度一致性(目标特征图和转换后的源特征图的一致性)、几何一致性(深度图一致性)和相机约束(初始化一个pose,然后迭代更新)
2.一个很有趣的采样方式,可以让它在初始值不太理想的情况下进行空间采样,获得更多值的可能,但其实这种方式应该也只是在局部进行小改动,而且感觉会有点影响时间复杂性

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动跨平台开发跨家选型参考建议

从 iPhone 诞生至今,智能手机风靡全球已将近20年,智能手机操作系统 iOS 和 Android 也成为当仁不让的顶流般的存在,而作为其背后的灵魂,移动应用也随着技术的发展已经越来越丰富。如果从技术层面来讲,移动 App 也从最开…

(1)点云库PCL学习——点云的格式、PCD文件的打开和显示

1、主要参考 (1)格式说明: 点云库PCL学习——点云的格式、PCD文件的打开和显示 ROS知识:点云文件.pcd格式_无水先生的博客-CSDN博客_pcd文件 (2)点云滤波,对nan的滤波 Python点云数据处理(三)滤波与RANSAC分割 - …

省 市 县 三级联动

大纲 一、导入省市县数据表(t_region) 二、引入jar包 三、导入所需util类(整体框架) 四、编写代码 1、配置数据库相关信息(数据库名、用户名、密码) config.propreties #oracle9i #driveroracle.jdbc.driver.OracleDriver #urljdbc:oracle:thin:loca…

jsp393学生宿舍管理系统mysql

两个权限 管理员和 学生 1. 学生信息管理 添加学生信息(学生号,姓名 院系 班级入学日期 )修改学生信息 学生退宿舍(可以删除指定的学生也可以成批删除) 2. 宿舍信息管理 宿舍的基本信息(公寓数 宿舍…

第五届“强网”拟态防御国际精英挑战赛——特邀战队篇

第五届“强网”拟态防御国际精英挑战赛即将在南京隆重开赛!本届大赛面向全球顶尖CTF战队,在创新应用场景与技术的基础上,拓展升级赛道,全面覆盖典型网络设备。大赛汇集国内外60支精英战队,参赛阵容、数量再创新高。 本…

科普下抖音的规则,为什么别人的内容很容易火,而我的很难?

今天给大家科普下抖音的规则,为什么别人的内容很容易火,而我的很难? 上一篇给大家讲了现在做抖音还来得及么?肯定的回答,一直都来得及。 既然来得及,那么我们怎么才能做好抖音呢? 在我看来&a…

5 - 2 单选题

1.下列线索二叉树中(用虚线表示线索),符合后序线索树定义的是:B 后序线索二叉树的构建流程就是: 1.后序遍历二叉树:d b c a 2.第一个结点的前驱是NULL,即d的前驱,d的左孩子为NULL …

web表单(详解)

目录 1. 表单的概述 1.1 表单组成 2. 表单标记 2.1 input标记 2.2 select标记 2.3 textarea标记 3.HTML5新增标记 3.1 datalist标记 3.2 date 输入类型 3.3 color输入类型 3.4 button标记 3.5 details标记和summary标记 3.6 progress标记 3.7 meter标记 4 综合…

云原生微服务治理技术朝无代理架构的演进之路

摘要:本文基于对微服务治理技术从SOA, 微服务框架,到云原生架构的历史发展总结,提出了一种新的基于Javaagent技术的新一代无代理架构的服务治理技术,并介绍了其相关的代表性开源项目Sermant。本文分享自华为云社区《云原生微服务治…

Docker安装Redis集群失败经历汇总

在程序员的开发过程中,Redis可以说基本上是必不可少的缓存中间件。不管是二进制包还是docker安装Redis的文章在网上都是数不胜数。我之前自己玩Redis的时候基本不是二进制包安装就是docker安装,也没有尝试过集群方式。每次需要的时候,网上百度…

Cloud-computing 实验镜像 chinaskills_cloud_iaas.iso chinaskills_cloud_paas.iso

Cloud-computing 实验镜像 最近因新项目再次进行云计算环境的搭建, 找这两个镜像( 找chinaskills_cloud_paas.iso chinaskills_cloud_iaas.iso)颇为费劲,用尽九牛二虎之力总算找到了,该大侠还分享了诸多系统镜像和完…

Centos7搭建SVN代码控制服务器

Centos7搭建SVN代码控制服务器检查SVN是否安装创建SVN版本库配置代码库设置允许访问远程仓库的用户帐号密码设置权限控制设置SVN服务配置启动svn与停止启动SVN关闭SVN访问拉取远程仓库代码检查SVN是否安装 1、centos7系统自带SVN rpm -qa subversion2、如果没有则通过yum安装 …

Day15--加入购物车-初始化vuex

1.加入购物车: 我的操作: ************************************************************************************************************* 2.购物车里面的商品数据在多个页面都会用到。所以把购物车里面的商品数据存储在vuex里面, 我的…

Windows10安装配置allure

1、allure官方文档: https://docs.qameta.io/allure/#_about 官方文档中,windows部署allure步骤: 奈何提示scoop不是內部命令 2、安装scoop scoop官方文档:https://scoop.sh/ 需要打开power shell,执行提示的两条…

外汇天眼:英国研究人员与南非合作应对气候变化

随着南非对气候变化的担忧加剧,英国卫生部已同意与南非就九个不同项目组建一个合作研究团队,旨在拯救生命。 南非总统西里尔拉马福萨 (Cyril Ramaphosa) 与英国卫生大臣在克里克研究所会面后达成了合作协议,克里克研究所如今被称为欧洲最大的…

BUUCTF Misc 来首歌吧 荷兰宽带数据泄露 面具下的flag 九连环

来首歌吧 下载文件 使用Audacity打开 可以发现框出来的一串,放大查看 有长有短有空格,大概率是摩斯密码 ...../-.../-.-./----./..---/...../-..../....-/----./-.-./-.../-----/.----/---../---../..-./...../..---/./-..../.----/--.../-../--.../-----/----./.…

汽车蓄电池低压报警设计

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1 选题背景及意义 1 1.2 国内外发展状况 2 1.2.1国内发展现状 2 1.2.2 国外蓄电池监测系统研究现状 2 1.3 研究主要内容 4 第2章 系统总体设计与算法确定 5 2.1 监测系统总体设计原理 5 2.2 主控芯片的选择 6 2.2.1 89C51单片机的概…

IPv6进阶:IPv6 过渡技术之IPv6 over IPv4 手动隧道

实验拓扑 R1-R3-R2之间的网络为IPv4环境;PC1及PC2处于IPv6孤岛。 实验需求 R1及R2为IPv6/IPv4双栈设备;在R1及R2上部署IPv6 over IPv4手工隧道使得PC1及PC2能够互相访问。 配置及实现 R3的配置如下 [R3] interface GigabitEthernet0/0/0 [R3-Gigabi…

集合框架----源码解读LikedHashSet篇

1.官方介绍 Hash表和链表实现了Set接口,具有可预测的迭代顺序。该实现与HashSet的不同之处在于它维护了一个贯穿其所有条目的双向链表。该链表定义了迭代顺序,即元素插入集合的顺序(插入顺序)。注意,如果一个元素重新插入到集合中&#xff0c…

【JAVA案例】作业管理系统(控制台版本)

博主:👍不许代码码上红 欢迎:🐋点赞、收藏、关注、评论。 格言: 大鹏一日同风起,扶摇直上九万里。 文章目录一、JAVA面向对象程序设计1.1 工程分包1.2 各类属性及功能二、数据初始化三、学生模块四、教师…