三维重建 几何方法 深度学习_基于深度学习的三维重建算法:MVSNet、RMVSNet、PointMVSNet、Cascade系列...

0482dac9a25267607190cbba5d586a04.png

欢迎关注微信公众号“3D视觉学习笔记”,分享博士期间3D视觉学习收获

MVSNet:香港科技大学的权龙教授团队的MVSNet(2018年ECCV)开启了用深度做多视图三维重建的先河。2019年,2020年又有多篇改进:RMVSNet(CVPR2019),PointMVSNet(ICCV2019),P-MVSNet(ICCV2019),MVSCRF(ICCV2019),Cascade(CVPR2020),CVP-MVSNet(CVPR2020),Fast-MVSNet(CVPR2020),UCSNet(CVPR2020),CIDER(AAAI2020),PVAMVSNet(ECCV2020),D2HC-RMVSNet(ECCV2020),Vis-MVSNet(BMVC2020)。

一 MVSNet:目标是预测图片上每个像素的深度信息

MVSNet: Depth Inference for Unstructured Multi-view Stereo

MVSNet本质是借鉴基于两张图片cost volume的双目立体匹配的深度估计方法,扩展到多张图片的深度估计,而基于cost volume的双目立体匹配已经较为成熟,所以MVSNet本质上也是借鉴一个较为成熟的领域,然后提出基于可微分的单应性变换的cost volume用于多视图深度估计。

论文实现了权龙教授多年的深度三维重建想法。

过程:

(1)输入一张reference image(为主) 和几张source images(辅助)

(2)分别用网络提取出下采样四分之一的32通道的特征图;

(3)采用立体匹配(即双目深度估计)里提出的cost volume的概念,将几张source images的特征利用单应性变换( homography warping)转换到reference image,在转换的过程中,类似极线搜索,引入了深度信息。构建cost volume可以说是MVSNet的关键

具体costvolume上一个点是所有图片在这个点和深度值上特征的方差,方差越小,说明在该深度上置信度越高。

(4)利用3D卷积操作cost volume,先输出每个深度的概率,然后求深度的加权平均得到预测的深度信息,用L1或smoothL1回归深度信息,是一个回归模型。

(5)利用多张图片之间的重建约束(photometric and geometric consistencies)来选择预测正确的深度信息,重建成三维点云。

该论文最重要的单应性变换( homography warping)的公式写错了,误导了好几篇后续改进的顶会论文,不过神奇地是提供的代码没有错

0d6a2eec2a04947f11ca8eefd4485988.png
该公式错了!!!

1fb6ce5653ab26fe923933879b11cd8b.png
MVSNet框图

二 MVSNet的后续改进论文

MVSNet开启了深度学习做三维重建的先河,2019/2020又出现了多篇对其的改进,改进思路主要是把回归网络改成cascade,即改成层级的,先预测下采样四分之一的,再利用得到的结果预测二分之一,最后输出原图片大小的深度信息,或减小深度范围,或减小cost volume的范围。

9b47b01a93b61bc74b05eb09784c1d73.png
深度MVS系列论文

目前dtu数据集上精度已经很高了,再提高也比较难,另外由于dtu数据集的ground truth本身就是不完整的,所以和这个ground truth比的话,也有问题,结果高并不表明效果好。

还有就是tanks榜单也有问题,评价系统存在问题导致需要一些技巧才能提高排名,需要平衡点云的完整度和正确性即recall和precision,不能太稀疏,但是太稠密了错的又会多。

https://www.tanksandtemples.org/leaderboard/​www.tanksandtemples.org

MVSNet后续改进论文介绍:

1.RMVSNet(CVPR2019)

Recurrent MVSNet for High-resolution Multi-view Stereo Depth Inference

权龙教授团队Yao Yao对自己的MVSNet的后续改进,主要是将3D 卷积换成了一个GRU时序网络来降低显存消耗。

代码是用tensorflow写的,和MVSNet代码合到一起了,github链接:

https://github.com/YoYo000/MVSNet​github.com

2. MVSNet(pytorch版本)

这里需要特别强调一下,提出双目立体匹配GwcNet的Guo Xiaoyang 同学把原来MVSNet的tensorflow代码改成了pytorch框架,这为几乎后续所有改进MVSNet的论文提供了极大的帮助,后续的论文几乎都是在Xiaoyang Guo同学的MVSNet_pytorch上改的。而且Guo Xiaoyang同学的MVSNet_pytorch已经比原来的MVSNet的效果好了不少,而后续的改进都是对比MVSNet论文里的结果,所以真正的提升其实并不大,后续改进应该对比Guo Xiaoyang同学的MVSNet_pytorch。

MVSNet论文里的结果和Guo Xiaoyang同学的MVSNet_pytorch在DTU数据集上的对比结果,可以看出Guo Xiaoyang已经提升了不少MVSNet的效果。

87ffb30f0d11dcc0232d66e41f17aeb5.png

Guo Xiaoyang同学的MVSNet_pytorch 链接:

https://github.com/xy-guo/MVSNet_pytorch​github.com

3 PointMVSNet(ICCV2019)

Point-Based Multi-View Stereo Network ,清华大学

改的MVSNet_pytorch的代码,PointMVSNet github链接:https://github.com/callmeray/PointMVSNet

4 P-MVSNet(ICCV2019)

P-MVSNet: Learning Patch-wise Matching Confifidence Aggregation for Multi-View Stereo 华中科技大学

P-MVSNet对MVSNet的改进主要在于采用传统三维重建算法中Patch-wise。还没有找到其代码。

5 MVSCRF(ICCV2019)

MVSCRF: Learning Multi-view Stereo with Conditional Random Fields

改进点:接入了一个CRF模块

清华大学。没有找到其代码。

6 cascade MVSNet(CVPR2020)

Cascade Cost Volume for High-Resolution Multi-View Stereo and Stereo Matching

阿里,GitHub链接:https://github.com/alibaba/cascade-stereo

改的MVSNet_pytorch的代码,主要是把MVSNet的模型改成了层级的,先预测下采样四分之一的深度,然后用来缩小下采样二分之一的深度,再用其缩小原始图片大小的深度,这样层级的方式,可以采用大的深度间隔和少的深度区间,从而可以一次训练更多数据。

另外由于双目立体匹配和MVSNet的MVS都是用了cost volume,双目立体匹配是用两张图片估计’深度‘,MVS的MVSNet是用三张及以上图片预测深度,所以其实模型差不多,都是相同的,cascade MVSNet也把改进思想用到了双目立体匹配上,一篇论文做了两份工作。

7 CVP-MVSNet(CVPR2020)

Cost Volume Pyramid Based Depth Inference for Multi-View Stereo

澳大利亚国立和英伟达,github链接:https://github.com/JiayuYANG/CVP-MVSNet

也是改的MVSNet_pytorch的代码,和上一个cascade MVSNet比较类似,也是先预测出深度信息然后用来缩小更大的图片的深度,CVP-MVSNet相比cascade MVSNet也缩小了cost volume的范围。

8 Fast-MVSNet(CVPR2020)

Fast-MVSNet: Sparse-to-Dense Multi-View Stereo With Learned Propagation

and Gauss-Newton Refifinement,上海科技大学

也是改的MVSNet_pytorch的代码,github链接:https://github.com/svip-lab/FastMVSNet

Fast-MVSNet采用稀疏的cost volume以及Gauss-Newton layer,目的是提高MVSNet的速度。

9 CIDER(AAAI 2020)

Learning Inverse Depth Regression for Multi-View Stereo with Correlation Cost Volume , 华科的

GitHub链接:https://github.com/GhiXu/CIDER

CIDER主要采用采用group的方式提出了一个小的cost volume

10 UCSNet(CVPR2020)

Deep Stereo using Adaptive Thin Volume Representation with Uncertainty Awareness

github链接:

https://github.com/touristCheng/UCSNet​github.com

UCSNet和cascade/CVPMVSnet差不过,只是depth interval可以自动调整,最大层度的进行网络层级,通过下采样四分之一的深度结果来缩小cost volume和深度的范围,从而让模型尽可能小。

11 PVA-MVSNet(ECCV2020)

Pyramid Multi-view Stereo Net with Self-adaptive View Aggregation

北大,GitHub链接:https://github.com/yhw-yhw/PVAMVSNet

主要采用attention机制来自适应学习一些权重,比如不同view的权重。

12 D2HC-RMVSNet(ECCV2020 Spotlight)

Dense Hybrid Recurrent Multi-view Stereo Net with Dynamic Consistency Checking

github链接(还未提供):

yhw-yhw/D2HC-RMVSNet​github.com
4b573ff73a7ebd245b4b0167acaf7e94.png

还没细看,大概和RMVSNet差不多,只不过换成用LSTM来处理cost volume,同时提出一种Dynamic Consistency Checking来后融合。

可能因为在Tanks榜单上排名较高(目前滑落到第二,论文提交时第一),所以拿了ECCV2020的Spotlight。

13 Visibility-aware Multi-view Stereo Network(BMVC2020 oral)

github:https://github.com/jzhangbs/Vis-MVSNet

香港科技大学的权龙教授团队的最新的一篇论文,发表在BMVC2020上,主要是考虑了别的基于深度学习的论文都没考虑的一个问题:多视图构建cost volume的可见性问题。代码融合多阶段和group Cost Volume等技巧。

目前在tanks榜单的intermediate上排名第一。

总结:

香港科技大学的权龙教授团队的Yao Yao把双目立体匹配的cost volume,引入了基于深度学习的三维重建领域,提出了MVSNet,并整理了DTU数据集,开创了通过深度模型预测深度进行三维重建的一个新领域。

后续提出双目立体匹配GwcNet的Guo Xiaoyang同学把原来MVSNet的tensorflow代码改成了pytorch框架,极大地增加了代码的可读性,方便了后续一系列对MVSNet的改进。也提高了改进的基点。

得特别感谢香港科技大学的权龙教授团队和Guo Xiaoyang同学。

由于tanks and temples榜单评价的是点云,阻碍tanks and temples榜单上排名的可能并不是深度值预测的不好,而是其他的问题。三维重建涉及的东西很多。榜单上排名高的模型可能是因为在模型以外的地方做了东西。。

0482dac9a25267607190cbba5d586a04.png
欢迎关注微信公众号“3D视觉学习笔记”,分享博士期间3D视觉学习收获

欢迎关注微信公众号“3D视觉学习笔记”,分享博士期间3D视觉学习收获

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

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

相关文章

easypoi list中的map导出_如何优雅的导出 Excel

作者:你在我家门口来源:https://juejin.im/post/5c6b6b126fb9a04a0c2f024f前言公司项目最近有一个需要:报表导出。整个系统下来,起码超过一百张报表需要导出。这个时候如何优雅的实现报表导出,释放生产力就显得很重要了…

c++ list容器获取第n给元素_Java总结之容器家族--Collection*

一、概述Collection是[收集品]的意思,这里称[容器],是java中的一个接口,位于java.util包下Collection下有三大接口:List(列表)、Set(集合)、Queue(队列)容器接口子类及方法二、List接口List:列表,顾名思义是一种表结构&#xff0c…

eclipemaven本地仓库依赖_只用一招,让你Maven依赖下载速度快如闪电

一、背景众所周知,Maven对于依赖的管理让我们程序员感觉爽的不要不要的,但是由于这货是国外出的,所以在我们从中央仓库下载依赖的时候,速度如蜗牛一般,让人不能忍,并且这也是大多数程序员都会遇到的问题。今…

和华为杯_2019全国大学生物联网设计竞赛(华为杯)拉开序幕

由教育部高等学校计算机类专业教学指导委员会主办,四川大学承办,华为协办,上海交通大学和机械工业出版社华章公司联合支持的2019年全国大学生物联网设计竞赛(华为杯)全国巡回技术讲座暨宣传活动5月9日在郑州大学拉开序幕。全国大学生物联网设…

e.printstacktrace()为什么没有输出信息_不输入内容,能不能直接输出内容?

这段时间,我确信了一件事。想要输出内容,不需要“先输入”。直接输出,是能做到的。网络上流行一种观点:先输入,再输出!我认为这是错的。人可以不输入知识,直接输出内容。人在世界上活了这些年。…

int mysql_「MYSQL」MYSQL中的int(11)到底代表什么意思?

一、前言在工作中经常要与mysql打交道,但是对mysql的各个字段类型一直都是一知半解,因此写本文总结记录一番。二、简介对于int类型的一些基础知识其实上图已经说的很明白了,在这里想讨论下常用的int(11)代表什么意思,很长时间以来…

mysql初级数据库_MYSQL初级数据库操作

MYSQL是个好东西啊,只是比较会折腾人,所以我先记录一下MySQL 数据备份的基础知识,省得以后又去东找西找Windows文件名、目录名不区分大小写,Linux区分大小写查看MySQL中的数据库这里有一个shop的数据库,information_sc…

java中的mod运算_Java中的运算符与控制语句

运算符与控制语句是Java语言中运用最为基础也是最为广泛的,所以今天就详细的介绍下运算符与控制语句。一、运算符1.算数运算符1).单目运算符: 、- 、 、-- A: 表示 a.正号(一般省略);b.加法运算&#xff1b…

mysql如何查看表拥有的键_如何查看表或列的所有外键?

白板的微信表:SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAMEFROMINFORMATION_SCHEMA.KEY_COLUMN_USAGEWHEREREFERENCED_TABLE_SCHEMA ANDREFERENCED_TABLE_NAME TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFER…

laravel 自带的用户登录视图路径_Laravel实现找回密码及密码重置,详细操作

Laravel实现找回密码及密码重置功能在php实现与在这里实现会有什么区别呢,下面我们来看看Laravel中的例子,在php中就不介绍了大家都懂的。忘记密码是应用中常见的场景之一,Laravel5也提供了对密码重置的支持,我们只需稍微做一下配…

yii不能没有提示验证错误信息_安装Mac系统时提示”应用程序副本不能验证 它在下载过程...”的解决方法...

在安装旧版本macOS系统时,比如macOS Mojave 10.14、macOS Sierra、OS X El Capitan、OS X Yosemite、OS X Mavericks等系统,会出现错误无法安装:“应用程序副本不能验证 它在下载过程中可能已遭破坏或篡改”,“This copy of the I…

mysql hugepage_因未配置Hugepage会话数添增悲剧案例

今天一朋友反馈他们的一个数据库hang住了,通过ssh也不能登录系统,他们没有办法重启系统解决问题,现在想让我帮忙找出问题原因分析awr得出询问朋友,他们的库一般session保持在200个左右,这次突然飙升到750以上,属于异常情况分析监听日志看到在截图的时间内,整体访问较频繁,某个i…

ip地址自动切换器_网络IP切换器IPProviders下载_IPProviders官方版下载1.1.22

IPProviders官方版是非常强大的ip切换器助手,可以进行ip地址更换,网关和dns更改。使用方法很简单,用户只需要提前设置好ip地址,需要切换的时候就可以任意切换了,让你可以随意切换更改自己的IP地址,非常方便…

mysql心得体会一百字_MYSQL CPU 100%实例详解

MYSQL CPU 100%实例详解2011/7/2 11:19:19作者:xy我要评论(0)自己的一台主机(Windows 2003 IIS PHP MYSQL )近来 MySQL 服务进程 (mysqld-nt.exe) CPU 占用率总为 100% 高居不下。此主机有10个左右的 database, 分别给十个网站调用。据朋友测试,导致 …

mysql联合索引like_MySQL全文索引、联合索引、like查询、json查询速度大比拼

查询背景有一个表tmp_test_course大概有10万条记录,然后有个json字段叫outline,存了一对多关系(保存了多个编码,例如jy1577683381775)我们需要在这10万条数据中检索特定类型的数据,目标总数据量:2931条SELECTCOUNT(*) …

python在线包安装mysql_python安装mysql的依赖包mysql-python操作

一般情况下,使用pip命令安装即可:[rootdthost27 ~]# pip install mysql-python但是在实际工作环境中,往往会安装失败,这是因为系统缺少mysql的相关依赖组件。所以必须先安装mysql-devel类的包,而且必须要对应好mysql客…

收藏列表放入MySQL还是redis_mysql导入redis

程序遍历MySQL然后插入Redis,效率极低。利用redis-cli命令行工具有一个批量插入模式,是专门为批量执行命令设计的。可以把Mysql查询的内容格式化成redis-cli可用数据格式。1, 根据表创建一个sql,将数据转换为redis可用的格式(1) 表…

java markdown转word_一键将 Word 转换为 Markdown

李缘 | | Stata 连享会 (知乎 | 简书 | 码云方法一:Writage Pandoc -- 双剑合璧!打开 Writage网页,点击Download,再点击Download Now完成下载网页下载运行安装程序,一般按照默认选项安装就好啦安装重启电脑&#xff0…

deepin安装java_Deepin安装Eclipse

Deepin安装Eclipse系统环境:Deepin 15.5软件环境:Eclipse 4.7官网下载最新版elipse(4.7)安装板或压缩版均启动失败(弹框报错),原因是deepin默认安装的openjdk1.9的版本,而eclipse支持的最低版本为jdk1.8版本,本机又需要jdk1.7版本的,因此需要修改eclipse启动vm参数才…

简述java在安卓开发中的应用_Java 自定义注解在安卓开发中的简单运用

定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、接口、枚举、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说…