DISN:Deep Implicit Surface Network for High-quality Single-view 3D Reconstruction

article/2025/10/11 3:43:22

时间:2019年

作者:Weiyue Wang ,University of Southern California etc.

Abstract:

1.DISN 通过预测基本符号距离场来从二维图像中生成高质量的细节丰富的三维网格;

2.DISN 在二维图像上预测每一个三维点的投影位置,以及从图像特征映射中提取局部特征。将全局特征与局部特征相结合,可以提高符号距离场的预测精度,尤其对于细节丰富的区域。

1.Introduction

1.体素与点云方法通常在分辨率上受到限制;

2.一些方法在神经网络中使用显式曲面表示,但假设了固定拓扑,限制了方法的灵活性;

3.基于点和网格的方法使用倒角距离(Chamfer Distance:CD)和 Earth-mover Distanc(EMD)作为训练损失,但这些距离只提供用于测量形状相似性的近似度量;

4.SDF 仅对三维中每个点采样距基础形状边界的有符号距离进行编码。给定一组有符号距离值,可以通过使用Marching Cubes等方法识别等值面来提取形状;

5.大致思路:首先可以通过 CNN 来提取输入图像的特征,得到一个特征向量;然后 DISN 通过使用该特征向量来预测给定三维点的 SDF 值;通过对不同三维点位置的采样, DISN 可以生成具有无限分辨率的基本表面隐式场。而且不需要固定的拓扑假设,回归得到的目标值与GT相同而不是其近似值;

6.使用从二维图像中学习到的形状嵌入可以捕捉到全局形状属性,但是容易忽略孔洞以及细薄结构这样的细节;

7.因此提出了一个局部特征提取模块,该模块使网络能够学习投影像素和三维空间之间的关系,并显著提高生成的三维形状中细粒度细节的重建质量。

2.Related Work

1.AtlasNet使用一组参数化曲面元素生成三维形状的曲面,基于图形的网络Pix2Mesh从输入图像重建三维流形并提出了通过变形给定源网格来重建3D形状的3DN。这些方法使用显式三维表示,通常会遇到分辨率有限和网格拓扑固定等问题。隐式表示为克服这些限制提供了另一种表示方式;

2.使用基于体素的SDF表示进行形状修复。然而,已知3D CNN存在高内存使用率和计算成本;

3.使用自动解码器结构引入DeepSDF以完成形状。然而,它们的网络不是前馈的,需要在测试阶段优化嵌入向量,这限制了方法的效率和能力;

4.在深度网络中使用SDF执行形状生成任务。虽然他们的方法在生成任务中取得了令人满意的结果,但无法恢复用于单视图重建的三维对象的细粒度细节。

3.Method

SDF: SDF 是一个将给出的三维空间坐标点p = (x,y,z)\epsilon \mathbb {R}^{3}映射为一个实数值s\epsilon \mathbb{R}的连续函数:s=SDF(p),它所得到的结果的绝对值是该三维坐标点距离表面的距离,结果的符号代表该点所在表面的内侧还是外侧(s>0在表面外侧,s<0在表面内侧)。等值面s = 0隐式地表示基础三维形状。与3D CNN方法不同,3D CNN方法生成具有固定分辨率的体积网格,DISN生成具有任意分辨率的连续场。

 1.DISN:

DISN由两部分组成:相机位姿估计 SDF预测

DISN首先估计相机参数将三维世界坐标中的物体映射到二维图像平面的摄影机参数;给定预测得到的相机参数,我们将每一个三维 query 点投影到图像平面上,然后收集对应图像块的多尺度 CNN 特征,然后 DISN 使用多尺度的局部特征和全局特征将给出的三维点解码为 SDF 值。

(1)相机位姿估计:

  

与更常用的表示法(如四元数和欧拉角)相比,6D旋转表示法是连续的,神经网络更容易回归。

文中应用了一个六维旋转表示 b=(b_{x},b_{y}),b\epsilon \mathbb{R}^{6},b_{x},b_{y}\epsilon \mathbb\mathbb{R}^{3},给出 b ,旋转矩阵 R = (R_{x},R_{y},R_{z})^{^{T}}\epsilon \mathbb{R}^{3\times 3}R_{x} = N(b_{x}), R_{z} = N(R_{x}\times b_{y}), R_{y} = R_{z}\times R_{x},其中N(·)为归一化函数(the normalization function)。

损失函数:

PC_{w} 为在世界空间的点云,N为点云中点的数量,p_{w}\epsilon PC_{w}P_{G}表示相机空间中相应的地面真值点位置。

(2)SDF 预测:我们的解决方案是使用多层感知器将给定的点位置映射到更高维的特征空间。然后将该高维特征分别与全局和局部图像特征连接,并用于回归SDF值。

特征提取:仅仅使用全局特征很难捕捉到类似于孔洞,细薄结构等形状细节,因此引入了局部图像特征集中于细粒度的细节重建:

通过估计的摄影机参数,三维点p∈ R3被投影到二维位置q∈ R2位于图像平面上。我们检索每个特征映射上对应于位置q的特征,并将它们连接起来以获得局部图像特征。由于后层中的特征图的尺寸小于原始图像,因此我们使用双线性插值将其调整为原始尺寸,并在位置q处提取调整后的特征。然后,两个解码器分别将全局和局部图像特征作为点特征的输入,并进行SDF预测。最终SDF是这两个预测的总和。

有无局部特征的效果对比:

 损失函数:

2.表面重建:为了生成网格曲面,我们首先定义一个密集的三维网格,并预测每个网格点的SDF值。一旦我们计算了密集网格中每个点的SDF值,我们就使用Marching Cubes来获得对应于等值曲面S0的3D网格。 


http://chatgpt.dhexx.cn/article/v42WQFdg.shtml

相关文章

Dist

这道题只要找到我们距离的规律就行了&#xff0c;我们可以发现&#xff0c;当行数小于列数时,列数(列数-1)/k,否则&#xff0c;行数(行数-1)/k&#xff0c;没记算一次我们的距离就会增加1&#xff0c;应为行数一减你就往下了一个&#xff0c;所以这个要加1. #include<bits/…

unity3D 如何提取游戏资源 (反编译)+代码反编译【P.M.出品】

转自&#xff1a;https://blog.csdn.net/LANGZI7758521/article/details/52291564 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资源。教我们初步的破解unity3d资源的基本方法 附上原帖的链接&#xff1a;http://www.xuanyusong.com/archives/2584 下面我会从头…

Unity游戏资源逆向工具

Unity游戏资源逆向工具 https://www.cnblogs.com/kekec/p/12175547.html disunity是一款Java编写&#xff08;需安装jdk1.8&#xff0c;即Java8&#xff09;的解析Unity asset和asset bundle文件&#xff08;流式加载&#xff0c;支持热更新&#xff09;的命令行工具&#xf…

Distillation

蒸馏&#xff0c;把有杂质的东西变成纯度高的 知识从教师网络集成到学生网络&#xff0c;这个过程叫迁移&#xff0c;这么做的原因是终端的算力有限&#xff0c;需要高效率 有关嵌入式开发也有教程&#xff01;&#xff01; 问题的引入&#xff1a;标签有问题&#xff0c;马更…

Unity 提取资源 Disunity、Unity Studio

提取Unity3d资源&#xff0c;用过2个工具 Disunity https://github.com/ata4/disunityUnity Studio https://github.com/RaduMC/UnityStudio 解压XXX.apk.&#xff0c;如果能在XXXX\assets\bin\Data\Managed路径下找到UnityEngine.dll&#xff0c;则表明该游戏由Unity3d打包。…

【逆向工程】 disunity的使用

1. 下载并安装好jdk: 下载地址&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装教程&#xff1a;http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html 2.下载disunity: https:/…

oracle怎么ping监听,请教TNSPING无监听的问题

请教各位高人&#xff0c;我在自己的虚拟机上装的是solaris10&#xff0c;数据库是oracle10.1.0.3.0&#xff0c;主机名如下&#xff1a; $ hostname fanww $ 在TELNET到虚拟机上之后可以正常启动监听&#xff0c;数据库也能启动&#xff0c;如下&#xff1a; $ lsnrctl start …

oracle数据库怎么ping,Oracle中tnsping命令解析

Oracle Net 工具(命令)tnsping&#xff0c;是一个OSI会话层的工具&#xff0c;它用来&#xff1a; 1)验证名字解析(name resolution&#xff0c;是oracle自己的网络服务名) 2)远程的listener是否启动 1.远程tnsping 2.关闭监听 3.启动监听&#xff0c;重新验证 总结&#xff1a…

Linux下Oracle的tnsping不显示sqlnet.ora文件路径

Tnsping在Linux与Windows下显示不一样 我的环境是&#xff1a;Centos7.6Oracle11.2.0.4 区别是&#xff1a;Linux下没有显示sqlnet.ora的路径名。 Linux下&#xff1a;Used parameter files:是空的 Windows下&#xff1a;Used parameter files显示路径名。 误导 因为我经常…

Oracle中tnsping无响应

1、tnsping 127.0.0.1&#xff08;数据库服务器地址&#xff09;无返回结果&#xff1b; 2、重启数据库服务或者重启数据库服务器问题依然不能解决&#xff1b; 3、最后发现&#xff0c;是 listener.log文件到4G了&#xff0c;删了这个文件 就正常了&#xff1b; 文件路径&…

tnsping命令解析

tnsping命令格式: tnsping <service_name> n n的意义是可以让tnsping ping多次 例: c:\Documents and Settings\Tony>tnsping orcl Oracle Net 工具&#xff08;命令&#xff09;tnsping&#xff0c;是一个OSI会话层的工具&#xff0c;它用来&#xff1a; 1&…

DOM4J及SAXReader解析xml文件数据

1、DOM4J简介 DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台&#xff0c;采用了 Java 集合框架并完全支持 DOM&#xff0c;SAX 和 JAXP。DOM4J 使用起来非常简单。只要了解基本的 XML-DOM 模型&#xff0c;就能使用。Dom&#xff1a;把整个文档作为一个…

告别996-SAXReader读取xml配置文件

在公司某一模块开发中,可以获取全部字段,但是需要取出某些不需要的字段,于是采取动态方法结合xml,将不需要的字段写在xml里面.或者根据下拉框中的值动态的获取某一个筛选条件集合sql筛选出需要的条件 前提准备 文件名:xxxxxxx.xml <?xml version"1.0" encoding…

Java 应用SAXReader 解析网络地址 XML

xml格式&#xff1a; 依赖于dom4j 框架自带该依赖包springboot框架中 工具类如下&#xff1a; import com.alibaba.fastjson.JSONObject; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader;import java.net.URL;/*** SAXReader 解析 xml 工…

XML学习总结(三)——SAXReader解析xml文件数据

第一种方式&#xff1a; 1. 加入jar包 注意 1.1 xml文件解析时编码要一致&#xff08;默认UTF-8&#xff09;&#xff0c;出现报错可以在记事本中另存为来更改编码格式。 2.2 jar包两个都需要。 2.gao.xml数据如下&#xff1a; <?xml version"1.0" encoding&qu…

SAXReader解析xml

SAXReader解析xml文件 要使用SAXReader解析xml文件&#xff0c;就需要导入两个架包&#xff1a;版本自己选择。 &#xff08;1&#xff09;dom4j-1.6.1.jar dom4j下载地址 &#xff08;2&#xff09;jaxen-1.1-beta-6.jar jaxen下载地址 项目的搭建如下&#xff1a; 项目的配置…

SAXReader的使用

一&#xff1a;导入依赖 <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version> </dependency>假设xml文件内容如下 <?xml version"1.0" encoding"utf-8"?…

SAXReader解析xml文件

dom4j是Java的XML API&#xff0c;作用是读写XML文件 第1步&#xff1a;导入maven依赖 <!--测试SaxReader解析xml文件--> <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version> &l…

AWS 创建 pem 文件

创建后会根据你输入的名字创建一个pem文件&#xff0c;并根据提示下载到本地&#xff0c;然后上传到 Linux 服务器上&#xff0c; 用 pscp 命令&#xff1a; 1. 下载 pscp.exe, 存放在 windows/system32 目录下, 下载地址&#xff1a;https://www.chiark.greenend.org.uk/~sgta…

openssl cer文件转pem文件

在windows机器上安装openssl工具&#xff0c;如果已经安装Loadrunner工具&#xff0c;则可以直接使用。因为在Loadrunner的安装目录bin下&#xff0c;已经有openssl工具直接点击运行即可 如果没装LR,在windows中&#xff0c;点击【开始】&#xff0c;在输入框输入【cmd】&#…