高精度,高效率点云三维重建,清华等联合提出PointMVSNet网络框架

简介: 本文介绍了一种基于点云的 MVS 神经网络框架 PointMVSNet。通过对场景的点云进行处理,融合三维深度和二维纹理信息,提高了点云重建的精度。论文作者来自清华、港科大、加州大学圣地亚哥分校等,已被 ICCV 2019 大会接收。

微信图片_20211201214134.jpg


背景


多视角三维重建(MVS)是计算机领域的一项基础任务,目标是通过相机拍摄的图像和相机参数推导出现实环境中物体的三维信息。不同角度拍摄的图像会存在一些公共部分,合理分析并利用不同图像的关联是三维重建的基础。


近年来,基于深度学习的一系列研究在该任务上取得了卓越的成绩,受到广泛关注。然而,现有的方法需要在相机参考空间或物体空间构建一个三维卷积网络。这个三维卷积网络会随着场景精细度的增加而显著增加。现有方法的主要瓶颈在于空间复杂度和时间复杂度。


为了解决这一瓶颈,本文介绍了一种全新的基于点云的 MVS 神经网络框架 PointMVSNet。区别于之前的深度学习方法,该网络直接将目标场景作为点云进行处理,而不是整个三维空间,从而降低了网络复杂度。该方法首先生成粗粒度的深度图,通过相机参数转化成初始点云。在这组初始点云上估计当前深度图与真实深度图之间的残差,从而对点云迭代优化。该方法将二维纹理信息与三维几何信息进行融合,生成特征增强的点云,并迭代更新点云位置。实验证明,该基于点云的网络结构可以达到更高的精度,计算效率与灵活性。

微信图片_20211201214131.jpg



方法

微信图片_20211201214128.jpg


本文中,我们创新性地提出了基于三维点云的多视角三维重建神经网络结构 PointMVSNet。首先,我们用现有的方法生成一个初始粗粒度点云。之后,利用我们所提出的 PointFlow 模块作用于点云以及点云附近的局部区域优化。点云特征包含从图像多尺度二维神经网络中提取的纹理特征和从点云中提取的几何特征。PointFlow 模块会通过这些特征优化点云位置。这个优化过程会经过几次迭代,每次迭代都会更新点云特征,以获得更准确的位置预测。


图像特征提取


高质量的纹理特征对于 MVS 具有重要意义。因此我们选择采用图像金字塔网络,并融合不同尺度的纹理特征。之后,我们利用动态特征提取从图像金字塔网络中提取三维点云中每个点在各视角图像中的纹理特征,构建特征增强点云。值得注意的是,这一步骤与基于 cost volume 的网络结构存在显著区别,其中基于 cost volume 的方法中每个体素所对应的图像特征由其空间划分所确定并无法改变,而这里我们方法会根据更新后的点云位置动态从图像中提取纹理特征,因此可以集中于图像中感兴趣的区域。


PointFlow

微信图片_20211201214126.jpg


为了使网络更好地更新点云位置,我们提出使用猜想点辅助网络预测。如上图所示,对于点云中的每一个点,我们沿着相机方向采样等步长的若干猜想点。为预测每个点的三维位移,我们利用 EdgeConv 处理由猜想点所构成的特征增强三维点云,学习猜想点的概率分布,将猜想点的期望位移作为每个点的预测位移。相比于简单的点云神经网络,EdgeConv 利用图神经网络将邻域的三维结构信息用于点云中各点间的特征传播,可以更有效的传播有效信息。PointFlow 可以迭代地作用于更新的三维点云,从而逐步优化点云位置,以达到更好的预测效果。


实验结果


首先是 PointMVSNet 在 DTU 数据集上重建结果,这里对比了现有的传统算法和深度学习算法。可以看出,PointMVSNet 取得了更好的重建完整度和整体效果。

微信图片_20211201214123.jpg


下图展示了 MVSNet, PointMVSNet 的重建效果。第一行是点云图,第二行展示了局部区域法向量图。可以看出 PointMVSNet 重建效果更加锐利,细节更好。

image.gif


接下是 PointMVSNet 和 MVSNet 的计算效率比较,见下表。通过改变 PointFlow 迭代次数,PointMVSNet 可以在高效与高精度之间灵活选择。此外,PointMVSNet 的显存使用效率高于 MVSNet, 能在同样的显存使用下生成更高分辨率的深度图像。


微信图片_20211201214121.jpg


最后我们展示了基于点云的三维重建网络的灵活性。如下图所示,我们可以选择进行仅优化我们所感兴趣区域的点云,从而节约不必要的计算。

微信图片_20211201214118.jpg

相关文章
|
23天前
|
存储 算法 Java
Java中的集合框架深度解析云上守护:云计算与网络安全的协同进化
【8月更文挑战第29天】在Java的世界中,集合框架是数据结构的代言人。它不仅让数据存储变得优雅而高效,还为程序员提供了一套丰富的工具箱。本文将带你深入理解集合框架的设计哲学,探索其背后的原理,并分享一些实用的使用技巧。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往高效编程的大门。
|
1月前
|
数据采集 存储 中间件
Python进行网络爬虫:Scrapy框架的实践
【8月更文挑战第17天】网络爬虫是自动化程序,用于从互联网收集信息。Python凭借其丰富的库和框架成为构建爬虫的首选语言。Scrapy作为一款流行的开源框架,简化了爬虫开发过程。本文介绍如何使用Python和Scrapy构建简单爬虫:首先安装Scrapy,接着创建新项目并定义爬虫,指定起始URL和解析逻辑。运行爬虫可将数据保存为JSON文件或存储到数据库。此外,Scrapy支持高级功能如中间件定制、分布式爬取、动态页面渲染等。在实践中需遵循最佳规范,如尊重robots.txt协议、合理设置爬取速度等。通过本文,读者将掌握Scrapy基础并了解如何高效地进行网络数据采集。
124 6
|
1月前
|
机器学习/深度学习 人工智能 PyTorch
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
AI智能体研发之路-模型篇(五):pytorch vs tensorflow框架DNN网络结构源码级对比
58 1
|
20天前
|
测试技术 数据库
探索JSF单元测试秘籍!如何让您的应用更稳固、更高效?揭秘成功背后的测试之道!
【8月更文挑战第31天】在 JavaServer Faces(JSF)应用开发中,确保代码质量和可维护性至关重要。本文详细介绍了如何通过单元测试实现这一目标。首先,阐述了单元测试的重要性及其对应用稳定性的影响;其次,提出了提高 JSF 应用可测试性的设计建议,如避免直接访问外部资源和使用依赖注入;最后,通过一个具体的 `UserBean` 示例,展示了如何利用 JUnit 和 Mockito 框架编写有效的单元测试。通过这些方法,不仅能够确保代码质量,还能提高开发效率和降低维护成本。
35 0
|
1月前
|
Java 应用服务中间件 Linux
(九)Java网络编程无冕之王-这回把大名鼎鼎的Netty框架一网打尽!
现如今的开发环境中,分布式/微服务架构大行其道,而分布式/微服务的根基在于网络编程,而Netty恰恰是Java网络编程领域的无冕之王。Netty这个框架相信大家定然听说过,其在Java网络编程中的地位,好比JavaEE中的Spring。
|
1月前
|
监控 安全 网络安全
网络安全法中的 HITRUST 框架是什么
【8月更文挑战第19天】
28 0
|
1月前
|
人工智能 物联网 异构计算
AI智能体研发之路-模型篇(一):大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用
AI智能体研发之路-模型篇(一):大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用
96 0
|
3月前
|
缓存 前端开发 API
了解python中几个主流的网络框架
【6月更文挑战第21天】探索Python Web几个流行框架,了解各框架特性以适应不同场景需求。
55 1
|
3月前
|
网络协议 Java 物联网
Netty是什么?深入理解高性能网络框架
Netty是什么?深入理解高性能网络框架
281 1
|
3月前
|
数据采集 存储 中间件
Scrapy,作为一款强大的Python网络爬虫框架,凭借其高效、灵活、易扩展的特性,深受开发者的喜爱
【6月更文挑战第10天】Scrapy是Python的高效爬虫框架,以其异步处理、多线程及中间件机制提升爬取效率。它提供丰富组件和API,支持灵活的数据抓取、清洗、存储,可扩展到各种数据库。通过自定义组件,Scrapy能适应动态网页和应对反爬策略,同时与数据分析库集成进行复杂分析。但需注意遵守法律法规和道德规范,以合法合规的方式进行爬虫开发。随着技术发展,Scrapy在数据收集领域将持续发挥关键作用。
89 4