简介

随着深度神经网络的到来,基于学习的三维重建方法逐渐变得流行。但是和图像不同的是,在3D中没有规范的表示,既能高效地进行计算,又能有效地存储,同时还能表示任意拓扑的高分辨率几何图形。很多先进的基于学习的三维重建方法只能表示粗糙的三维几何,或者限制于一个特定的领域。在这篇论文中,作者提出了占用网格,一种新的基于学习的三维重建方法。占位网络隐式地将三维曲面表示为深度神经网络分类器的连续决策边界。与现有方法相比,该表示方式编码了高分辨率的3D输出,并且没有过多的内存占用。同时该方法能够高效地编码三维结构,并且能够从不同种类的输入推断出模型。实验证明,无论是在质量上还是在数量上,对于从单个图像、有噪声的点云和粗糙的离散体素网格进行三维重建,该方法都获得了具有竞争力的结果。

和传统多视图立体几何算法相比,学习模型的方法能够编码3D形状空间中的丰富先验信息,这有助于解决输入的模糊性。生成模型的方法在高分辨率的图像上已经取得了很好的效果,但是还没有复制到3D领域。与2D领域相比,暂时还没有就3D输出表示达成一致,这种表示既能提高内存效率,又能从数据中有效推断

现存的表示方法能够大概分成三类:体素、网格、点云

贡献点

  • 介绍了一种基于学习连续三维映射的三维几何表示方法
  • 使用此表示法重建各种输入类型的3D几何图形
  • 此表示方法能够生成高质量的网格,并且达到先进技术水平

实现思路

占用网格

理想情况下,我们不仅要在固定的离散的3D位置(就像在体素表示中)考虑占用率,而且要在每一个可能的3D点p考虑占用率。称以下函数为3D物体的占用函数

这个函数的关键是,可以用一个神经网络来近似这个3D函数,该神经网络分配给每个位置p一个在0到1之间的占用概率。这个网络相当于一个用于二分类的神经网络,而我们关注的是对象表面的决策边界

根据对物体的观察(如图像、点云等),当使用这样的网络对物体进行三维重建时,必须以输入作为条件。作者使用了下面的简单的功能对等:一个函数,它接受一个观察x作为输入,输出一个从点p到R的函数,这可以通过一个函数等价描述:一对(p, x)作为输入和输出一个实数。后一种表示可以用一个神经网络参数化,该神经网络以一对(p,x)作为输入,输出一个表示占用概率的实数

训练

为了学习神经网络的参数,考虑在对象的三维边界体中随机采样点,对于第i个样本,采样K个点,然后评估这些位置的小批量损失Lb

xi是B批次的第i个观测值,Oij是点云的真实位置,L是交叉熵损失

该方法的性能取决于用于绘制用于训练的pij位置的采样方案,在带有附加小填充的对象的边界框内均匀采样会产生最好的结果。这个三维表示方法也可以用于学习概率潜在变量模型,定义损失函数如下

KL表示KL-散度,p0(z)是潜在变量zi(通常为高斯分布)的先验分布,编码器网络gψ(·),位置pij,占位oij,预测潜在z∈RL上高斯分布的qψ(z|(pij, oij)j=1:K)的平均μψ和标准偏差σψ,负对数似然的下界,p((oij )j=1:K |(pij )j=1:K )

推论

为了提取给定训练过的占用网络的新观测对应的等值面,引入了多分辨率等值面提取(MISE),这是一种层次化的等值面提取算法。通过增量构建八叉树,MISE使我们能够从占用网络中提取高分辨率网格,而无需密集评估高维占用网格的所有点

  • 把要判断的范围按一个粗粒度的初始分辨率分成grid。每个grid有一些角点(三维的话相当于一个cube,有8个顶点)
  • 所有这些角点,用训练好的网络计算出occupancy value (0-1之间的实数).
  • 网络超参数τ ,物体厚度。大于等于τ 的为occupied,否则为unoccupied. (可以认为边界点的occupancy value 为τ。)
  • 如果一个grid,他有的角点是occupied,有的是unoccupied,那他就是active的grid。(淡红色的那些grid)
  • 把所有active的grid再次细分,(对半分,最后一共八个)。重复以上步骤,直到满足目标分辨率。
  • 用marching cubes 算法来得到mesh。(线性插值认为一个grid的一条边中,和等值面的交点由顶点值做线性插值计算。(等值面是occupancy value为τ 的面)
  • 用一阶和二阶梯度来优化一下得到的mesh
  • 从输出网格的每个面随机采样点pk,并将损失降到最低

    n(pk)为pk处网格的法向量,λ = 0.01

15、三维表面重建-Occupancy Networks相关推荐

  1. 14、三维表面重建-DeepSDF

    简介 传统的‎表面重建‎技术中,SDF是基于离散化体素对物体或者场景表面的一种表达,而现实中表面是连续的,DeepSDF是一种学习过的连续符号距离函数(SDF)表示一类形状,可以从部分和有噪声的3D输 ...

  2. 30、三维表面重建-Convolutional Occupancy Network

    简介 论文:https://arxiv.org/pdf/2003.04618.pdf github:https://github.com/autonomousvision/convolutional_ ...

  3. 滚球法(Ball Pivoting)三维表面重建论文笔记

    文章目录 参考资料 相关问题 相关参数 原理介绍 1.基本概念 1.1 顶点表示 1.2 边表示 1.3 数据结构 1.3.1 元素 1.3.2 存储方式 1.3.3 查找方式 2.算法实现 2.1 ...

  4. CT图像的三维表面重建

    对于医学图像的处理,ITK是一个具有丰富资源的库,专门对医学图像进行分割和配准,里面有丰富的函数.ITK可以直接读取单张的CT图像或者是序列的CT图像,最近新版本的VTK也可以实现这一功能,但对于CT ...

  5. SSRNet:用于大规模点云表面重建的深度学习网络(CVPR2020)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 整理人:袁赣张秦,付前程,张琛,廖新耀 论文: [1] Zhengxin Mi#, Yiming Lu ...

  6. 平行轮廓线三维矿体重建算法研究

    平行轮廓线三维矿体重建算法研究   摘要: 从平行轮廓线重建三维表面是具有普遍意义的研究问题.根据一组平行轮廓线联接三角网构成三维实体必须解决三个基本问题:对应性问题(Correspondence), ...

  7. 可用于大规模点云表面重建的深度学习算法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 整理人:袁赣张秦,付前程,张琛,廖新耀 论文: [1] Zhengxin Mi#, Yiming Lu ...

  8. ICCV 2021 Oral | 无需法向的大场景点云表面重建

    编辑丨CVer 论文链接:https://arxiv.org/abs/2105.03582 代码已开源在github: https://github.com/tangjiapeng/SA-ConvON ...

  9. 【论文阅读】Occupancy Networks: Learning 3D Reconstruction in Function Space

    论文题目:Occupancy Networks: Learning 3D Reconstruction in Function Space(占据网络:在函数空间内学习三维重建,简称ONet) 论文作者 ...

最新文章

  1. 2020-12-3(ESP定律脱壳理解)
  2. SpringBoot+AntV实现饼状图中的花瓣图
  3. java ML回归预测_ML之回归预测:利用九大类机器学习算法对无人驾驶汽车系统参数(2018年的data,18+2)进行回归预测值VS真实值...
  4. Windows下Oracle的下载与安装
  5. codeforce23 E. Tree(高精度+树形dp)
  6. wifi芯片_全新蜕变!康希通信第四代WIFI 6 FEM芯片将于2020年Q1量产
  7. 游戏外挂设计技术探讨(上)
  8. 梯度下降算法(GD)—收敛速率证明
  9. 卡方检验2-python代码实现
  10. Linux 内核 颜色,Linux操作系统内核版的表示方法是( )
  11. vue动态style设置背景图片
  12. js 比较啷个日期的大小
  13. 采用CAD刀模插件(飞狼刀模工具箱)批理倒圆角
  14. matlab提取数据画图,matlab提取excel表格数据画图-如何将Excel中的数据导入MATLAB并在MATLAB中画出图......
  15. kali安装mwget
  16. sip转webrct
  17. 拿破仑的滑铁卢与罗斯柴尔德的凯旋门
  18. Java面试--Java内存模型
  19. 由一份诊断报告引发的思考
  20. 大datatable 内存一直涨_硬盘与内存报价单曝光了,疫情期间该不该给电脑升级?别弄错了...

热门文章

  1. 测试硬盘,ssd,优盘读取速度
  2. java中单例和多例
  3. 社群运营,做好社群长期活跃可以从哪些方面入手?
  4. 目前最好的python教程_目和毫米的换算
  5. 计算机小游戏有哪些,计算机有哪些单机游戏可以耐玩,4 G以下?
  6. 用神经网络实现语音分类
  7. 【AI人工智能】AI绘画能取代设计师?
  8. QsciScintilla等编辑器实现不同区域鼠标右键处理方式不同的方法
  9. C语言的转义字符,八进制
  10. 几款非常优秀且常用的代码编辑器