【论文简述】 Point-MVSNet:Point-Based Multi-View Stereo Network(ICCV 2019)

news/2024/5/19 5:14:52/文章来源:https://blog.csdn.net/qq_43307074/article/details/128168241

一、论文简述 

1. 第一作者:Rui Chen、Songfang Han

2. 发表年份:2019

3. 发表期刊:ICCV

4. 关键词:MVS、深度学习、点云、迭代改进

5. 探索动机:很多传统方法通过多视图光度一致性和正则化优化迭代更新,但是需要繁琐的手动超参数调优;3D CNN的实现对于模型内存是立方级的增长,这可能潜在影响性能;近期一种新型的深度网络体系结构可以直接处理点云,而不需要将点云转换为体素网格。与基于体素的方法相比,这种架构集中在点云数据上,节省了不必要的计算。同时,在这个过程中保持了空间的连续性。

6. 工作目标:是否可以基于点云的结构,结合迭代优化以及3DCNN的优势,提出一种新的更高效的结构呢?

3D代价体的优势:The key advantage of 3D cost volume is that the 3D geometry of the scene can be captured by the network explicitly, and the photometric matching can be performed in 3D space, alleviating the influence of image distortion caused by perspective transformation and potential occlusions, which makes these methods achieve better results than 2D learning based methods.

7. 核心思想:提出了一种全新的基于点云的多视图立体网络,将目标场景直接处理为点云,在分辨率较高的情况下是一种更有效的表示方法。该方法以从粗到细的方式预测深度。首先生成一个粗深度图,将其转换为点云,并通过估计当前迭代深度与真实深度之间的残差来迭代改进点云。该网络结合了三维几何先验和二维纹理信息,将它们融合成一个特征增强的点云,并对点云进行处理,估计每个点的三维流。这种基于点的结构比基于代价体的结构具有更高的精度、计算效率和更大的灵活性。

8. 实验结果:在DTU和Tanks and Temples数据集上与最先进的方法相比,该方法达到了最好的性能,在完整性和整体质量方面都取得了更好的结果,显著提高了重建质量。此外,该方法还有潜在应用,如视点渲染(foveated)深度推理。

9. 论文下载:

https://openaccess.thecvf.com/content_ICCV_2019/papers/Chen_Point-Based_Multi-View_Stereo_Network_ICCV_2019_paper.pdf

https://github.com/callmeray/PointMVSNet

二、实现过程

1. Point-MVSNet概述

该结构主要分为两部分,第一是粗糙深度预测,第二是迭代深度改进。首先通过现有的MVSNet(分辨率设置较低,计算资源消耗较低预测出较为粗糙的深度图作为初始深度图,并将基于假设点将其反投影为点云。针对每个点,算法从多视角图像中动态的抽取特征,并将2D图像特征与3D几何先验相关联,构成2D-3D特征,最后利用PointFlow基于这些特征来增强点云的精度,估计出当前深度图与GT间的残差,不断迭代优化深度图。

2. 粗糙深度预测

延续MVSNet方法构建低分辨率的代价体。考虑到内存和时间,分辨率由1/4减至1/8,深度采样数由256减少至48或96,代价体的内存减小为原先的1/20。然后通过多尺度3D CNN和soft argmin回归得到参考视图的初始深度图。

3. 迭代深度改进

3.1. 2D-3D特征挖掘(2D-3D feature lifting)

网络中的点云特征是由从特征金字塔输出的三个尺度下提取出来的图像2D特征和归一化的3D坐标组成的,这就是所谓的2D-3D特征。

图像特征金字塔:为了在多个尺度上赋予点更大的上下文信息的感受野,该网络构建了3层的特征金字塔。采用步幅为2的2D卷积网络对为N张原始视图进行3次下采样,提取下采样前的每一层特征图,构造3个不同层级的特征图Fi=[Fi1,Fi2,Fi3],形成最终的特征金字塔(参数共享)。图像特征金字塔的特征用于后续的迭代优化。

动态特征提取(Dynamic Feature Fetching):

由于迭代优化深度图,即推断出新的深度图之后会利用它生成新的点云(unprojected点和它同方向上产生的hypothesized点,下文会讲),然后再次执行该步骤为其中每个点找到2D特征,新的点云中的点3D坐标会发生变化,各点对应的图像上的特征也会随之变化,因此被称为动态特征提取(dynamic feature fetching)。由于每个unprojected点、和它同方向上产生的hypothesized点对应的各视图上对应的2D特征是一样的,因此实际是找点云X中每个点的2D特征。

已知相机参数,可以利用可微反投影法(unprojection)从多视点特征图中提取点云中每个3D点的2D坐标,进而找出图像外观特征。由于特征Fi1,Fi2,Fi3在不同的图像分辨率上,因此,在变化过程中需要缩放每一层级的相机内参。对于每个3D点的2D特征点的特征,延续MVSNet,使用基于方差的代价度量,即不同视图之间的特征方差,以聚合来自任意数量视图的变化后的特征。对于第 j 层的金字塔特征,N个视图的方差度量为定义如下:

此时点云中每个点Xp都对应了2D方差特征Cp j(j=1,2,3)。为了得到每个3D点上的特征,连接2D特征和归一化点坐标[Cp,Xp],得到特征增强点,即后文PointFlow模块的输入,此时点云上每个点的特征都是2D-3D的,公式表述为

该部分为每个3D点构造特征表示向量,传统的3D点p可表示为Xp(x,y,z)包含了空间几何位置的先验信息,而论文又使用卷积网络提取了多个视角下图片的2D高级视觉特征,并通过方差法来提取属于点P的多视角2D特征Cp,两者做连接[Cp,Xp]即构成了所谓的2D-3D特征。

3.2. PointFlow模块

动机:For each point, we aim to estimate its displacement to the ground truth surface along the reference camera direction by observing its neighboring points from all views, so as to push the points to flow to the target surface.

PointFlow是论文中的核心模块,首先将深度图投影为3D点云,即为unprojected point点(通过深度图外加相机参数,通过反投影的方式生成的点),并生成一系列假设点,利用这些点构造出一个有向图,进行多层边缘卷积进一步提取邻域特征,然后经过MLP判断unprojected point的位移概率,最终算加权和得到各点的位移向量。

3.2.1. 生成假设3D点集

这一步包括深度图反投影到3D点云变换和假设点生成。

由于透视变换,2D特征图的上下文信息无法反应3D欧几里得空间的邻域点的距离。利用1中所得的初始深度图,可以通过反投影的方式来生成初始的空间点云X=[X1,X2,…,Xn],其中点云中点数目n为图像像素点数即H/8xW/8,每个点Xp包含了其3D特征[x,y,z]。对该初始空间点云X,我们称这些点为unprojected点,接下来要生成与这些点沿着参考相机的方向一致、但存在深度位移的假设点(hypothesized point),具体如下图所示:

该图可以看作一个俯视图,红色点p是初始unprojected点,连接参考相机和红点这条射线称为归一化参考相机方向,s表示单位位移步长。在每个红点前后m个位移间隔处设置蓝色hypothesized点p’ ,此时每个unprojected点的假设点集{p~k}表述如下:

此时的点云X’包含了原始的unprojected点(n个)和每个unprojected点对应的2m个hypothesized点,即共计n*(2m+1)个。

3.2.2. 边缘卷积

动机:Classical MVS methods have demonstrated that local neighborhood is important for robust depth prediction.

没有理解:such that local geometric structure information could be used for the feature propagation of points.使得局部几何结构信息可用于点的特征传播。就是说信息聚合了?

本文采用DGCNN的策略来聚合相邻点之间的特征丰富点云信息,即使用中心点的特征和中心点与领域点的“残差特征”。使用k最近领域为点云中的点构造有向图(kNN),使得局部几何结构信息可用于点的特征传播。特征增强点云表示为Cp~={Cp~1,…, Cp~n},也就是上文提到的2D-3D特征。则边卷积定义为:

其中hΘ是由Θ参数化的可学习的非线性函数,而□是通道对称聚合操作(聚合函数),所谓对称是指输入的顺序并不影响结果。聚合方式包括最大池化、平均池化和加权和。总的含义是点p与最邻近的k个点计算边缘特征并进行聚合。调参后发现最大池化和平均池化有相似的性能。此时的Cp’即为对中心点边缘卷积后的新特征点,其包含了该点的局部几何信息。

参考:https://blog.csdn.net/qq_41794040/article/details/127917341?spm=1001.2014.3001.5502

3.2.3. 流预测

流预测的网络架构如下图所示。输入为特征增强点云,输出为深度残差图。

a) 使用3个边缘卷积(EdgeConv层)在不同尺度上聚合邻域的局部特征,并将每一层输出短连接(shortcut connect)来作为局部点特征;

b) 包含各unsample点多尺度局部2D-3D特征的边缘卷积的结果输入至共享参数的多层感知器MLP,进行点向特征变换,通过softmax输出unprojected点的各个假设点(2m+1个)的概率标量;

c) softmax之后的2m+1个概率标量代表了各假设点为真实表面上点的概率,unprojected点的预测位移为所有假设点位移的概率加权和:

​这个操作是可微的。随后将各点的位移投影回去,输出深度残差图,并将其与初始输入深度图相加得到改进的深度图。 

3.2.4. 上采样迭代改进

优势:Because of the flexibility of our point-based network architecture, the flow prediction can be performed iteratively, which is much harder for 3D cost-volume-based methods, because the space partitioning is fixed after the construction of cost volume.

对于粗预测的或前面残差预测得到的深度图D(i),可以先利用最近邻上采样到更高的空间分辨率,然后进行流预测得到D(i+1)。此外,随着迭代进行反投影点和假设点之间的深度间隔s渐减小,从而通过从更近的假设点获取更详细的特征来预测更准确的位移,以达到更高精度的深度预测。

3.2.5. 总结迭代深度改进,该过程可分:

  1. 通过粗糙代价体,得到初始深度图
  2. 初始深度图反投影出点云
  3. 构造假设点生成3D点云集
  4. 为点云集提取2D-3D特征得到特征增强点云
  5. 输入pointFlow模块
  6. 进行边缘卷积聚合点的局部特征
  7. 输入共享参数的MLP回归得到残差图
  8. 残差图与初始深度图相加得到优化后的深度图
  9. 优化后的深度图反投影出点云......

4. 训练损失

与MVSNet类似,将深度预测看作一个回归问题,使用L1损失来预测深度图和真实深度图间的绝对差值,由于是迭代进行优化,通过设置权重参数考虑初始深度图和迭代改进深度图的损失:

其中,Pvalid表示有效的groundtruth像素集,l为迭代次数。训练时将权重λ(i)设为1.0。s(i)为第i次迭代中单位位移。s(i)作为分母随着迭代进行不断减小,则该次迭代损失权重会增大,即让高分辨率的深度预测比重增加。

5. 实验

5.1. DTU数据集

5.2. 实现细节

训练:使用DTU数据集训练,训练图像大小设置为W × H = 640 × 512,输入视图数N = 3,深度假设的采样范围为425mm至921mm,D = 48。对于深度改进步骤,我们设置流迭代次数 l = 2,深度间隔分别为8mm和4mm。最近邻点数= 16。先对粗预测网络进行单独训练4个epoch,再对模型进行端到端训练12epoch。batch size为4,在4个NVIDIA GTX 1080Ti显卡上训练。RMSProp作为优化器,学习率设置为0.0005,每2epoch下降0.9。

评估:初始深度预测时,深度采样数D = 96,并设置流迭代次数l = 3进行深度改进。输入视图数N = 5。使用MVSNet相同后处理将所有深度图融合成点云。我们在两种不同的输入图像分辨率下评估了我们的方法:1280 × 960(Ours)和1600 × 1152(Ours-HiRes)

5.3. 在DTU数据集上进行基准测试

accuracy 、completeness、overall score

顶部:整个点云。下:放大局部区域的法线可视化。Point-MVSNet比MVSNet生成具有更多的高频分量的细节点云。特别是在边缘区域,可以获得更多高频几何特征。

 5.4. PointFlow迭代

目的:Because of the continuity and flexibility of point representation, the refinement and densification can be performed iteratively on former predictions to give denser and more accurate predictions.

方式:For each iteration, we upsample the point cloud and decrease the depth interval of point hypotheses simultaneously, enabling the network to capture more detailed features.

5.5. 消融实验

Edge Convolution

Euclidean Nearest Neighbour

使用参考图像中相邻像素点来构造有向图,效果很差。原因是:for images of 3D scenes, near-by pixels may correspond to distant objects due to occlusion. Therefore, using neighboring points in the image space may aggregate irrelevant features for depth residual prediction, leading to descending performance.

Feature Pyramid

5.6. 对初始深度图的依赖

实验表明,该方法在一定范围内对噪声初始深度估计具有鲁棒性。我们在初始深度图中加入不同尺度的高斯噪声,并评估重建误差。从图中可以看出,在6mm噪声范围内,误差增长缓慢,小于MVSNet。AVG表示平均池化,MAX表示最大池化

 

5.7. 与点云上采样的比较

引入了流机制,使得点云上采样的效果比PU-Net 更为出色。

5.8. Foveated深度推理

最后这种基于点云的方法可以处理任意数目的点云,对于不同的密度都可以有效处理。对于感兴趣区域(ROI)可以实现更为精细的重建,下图中显示了三种不同的点云密度预测结果:

 5.9. PointFlow模块的泛化性

Tanks and Temples,效果很好。

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

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

相关文章

【Java实战】大厂都是怎样进行单元测试的

目录 一、前言 二、单元测试 1.【强制】好的单元测试必须遵守 AIR 原则。 2.【强制】单元测试应该是全自动执行的,并且非交互式的。测试用例通常是被定期执行的,执行过程必须完全自动化才有意义。输出结果需要人工检查的测试不是一个好的单元测试。不…

清华、北大、中科大、UMA、MSU五位博士生畅聊深度学习理论

点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入!伴随着深度学习的蓬勃发展,进入人们视线的好像都是算法或AlphaGo等应用层面的东西。但是在理论上,深度学习似乎却没有很出圈的相关理论。因此,部分人也在批评深度学习是缺乏理论…

蓝海创意云·11月大事记 || 12月,暖心相伴

秋尽冬生,日短天寒 告别了立冬与小雪 时光不紧不慢开启了新一月的篇章 万物冬藏,沉淀酝酿 站在十二月的路口 蛰伏打磨,静待厚积而薄发 导 读 ● 客户端更新:新增PSD通道合成选项 ● 渲染案例:绝代双骄重启江湖…

Reading Note(10)——AutoBridge

这篇论文是FPGA 2021年的best paper award,主要解决的是在HLS编译过程中优化布局和布线,最终达到整个multi-die的FPGA板上的大规模HLS设计时钟频率尽可能提升的目的,这篇工作在当前chiplet工艺铺展开来的当下更加有现实意义,通过这…

浅谈ES标准的演变

ECMAScript从1997年第一版诞生依赖,经过无数人的“踩坑”和“填坑”,到现在,ES12呼之欲出。那么我们不妨讨论一下ES的发展历程,看它如何统一江湖,看它“曲折”而又令人期待的发展之路。 最近分析typescript&#xff0c…

jsp网络申报审批系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 网络申报审批系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用…

16S全长测序揭示绿头虻肠道微生物及共生细菌

论文题目:Greenhead (Tabanus nigrovittatus) Wolbachia and Its Microbiome: A Preliminary Study 期刊:Microbiol Spectrum 研究背景 绿头虻(Tabanus nigrovittatus)的雌虫刺吸牲畜的血液,危害家畜,是美…

【从零开始学习深度学习】6.使用torchvision下载与查看图像分类数据集Fashion-MNIST

目录1.1 获取Fashion-MNIST数据集2.2 读取小批量小结图像分类数据集中最常用的是手写数字识别数据集MNIST。但大部分模型在MNIST上的分类精度都超过了95%。为了更直观地观察算法之间的差异,我们将使用一个图像内容更加复杂的数据集Fashion-MNIST。 本节我们将使用to…

分享几款免费实用的国产内网穿透工具

对于没有公网IP的用户来说,如何实现远程管理或让局域网的服务可以被公网访问到是一个问题。当然,也有很多类似的需求,比如: 微信公众号小程序开发调试公网访问本地web项目异地远程处理公司服务问题异地访问公司内网财务/管理系统…

什么是代码签名证书?

使用代码签名证书,您可以保证签名者的身份和软件的完整性,这可以防止在下载和安装软件时出现警告。 代码签名证书是软件开发人员用来签署其软件、应用程序和驱动程序代码的数字证书。它使用公私密钥基础设施(PKI)将实体绑定到公钥和私钥。 申请代码签名…

好用的数据恢复软件EasyRecovery2023最新版

实用的数据恢复软件有什么?电脑中的数据文件对很多的小伙伴来说都是非常重要的,在下载安装新的软件设备时都需要非常谨慎,一旦碰到一些病毒就可能会导致文件丢失,想要恢复这些文件并不是很容易,需要使用专业的数据恢复…

西部学刊杂志西部学刊杂志社西部学刊编辑部2022年第22期目录

百年党建与马克思主义中国化研究 党的纪律建设的实践、启示与创新——基于“三大纪律八项注意”的研究 武艳; 5-8 西部研究《西部学刊》投稿:cn7kantougao163.com 新疆红色资源运用现状调查研究——以南疆部分地区为例 王艺潼;努尔古扎丽阿不都克里木; 9-12…

毕业设计-基于机器视觉的深蹲检测识别-TensorFlow-opencv

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

Flink

文章目录1. 概述1.1 Apache Flink1.2 特点1.3 Flink VS Spark Streaming2. 安装与部署2. Flink运行时的组件2.1 作业管理器(JobManager)2.2 任务管理器(TaskManager)2.3 资源管理器(ResourceManager)2.4 分发器(Dispatcher)3. 任务提交流程4. Flink API4.1 不用级别…

红石外汇|每日汇评:在中国重新开放和OPEC+的推动下,欧元受到高度关注

1、本周开始欧元再次上涨,而美元则暴跌; 2、积极的美国就业数据和OPEC稳定的产量提升为经济回升提供前景; 3、市场对中国重新开放的渴望可能很快就会实现; 今天,由于美元再次面临压力,欧元兑美元在亚盘市…

window和linux的nacos安装

Nacos注册中心 Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高 Nacos的下载 在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码: …

代码随想录刷题Day55 | 392. 判断子序列 | 115. 不同的子序列

代码随想录刷题Day55 | 392. 判断子序列 | 115. 不同的子序列 392. 判断子序列 题目: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形…

闲人闲谈PS之三十六——项目状态控制

**惯例闲话:**最近感觉时间不够用,脑子有很多想法,但是到下笔却感觉总是下不了手,写完一段,感觉和自己想的差距很大,然后有全部删除…这难道就是传说中年纪大了,手脚不停使唤…这让闲人更加焦虑…

SSM框架学习记录-Spring_day02

1.IOC/DI配置管理第三方bean 之前都是基于自己写的类,如果有需求去管理第三方Jar包中的类,该如何管理? 案例:数据源对象管理 使用Spring的IOC容器来管理Druid连接池对象 思路分析 要使用第三方的技术,需要在pom.xml添加依赖 在配置文件中将…

简单学校网页设计作业 静态HTML校园博客主页 DW大学网站模板下载 大学生简单我的学校网页作品代码 个人网页制作 学生个人网页设计作业

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…