[读论文]CVPR2019: Occupancy Networks: Learning 3D Reconstruction in Function Space

核心思想

本文提出了一种3D图形的表示方法,并给出了得到他的网络架构和训练方法。
用decision boundary 来表示物体的表面。
这个方法贼好,放在2D类比,就像像素图和矢量图,矢量图是精度是无限的,但又不会耗费额外的内存。

(对啊,早该想到啊,怎么会2019年才出来。。。既然2D可以有矢量图,3D就不能吗)
在这里插入图片描述
具体一点,一个物体用一个occupancy function 来表示:
在这里插入图片描述
注意,是实数空间,不是离散的按一定分辨率取样的。
然后用一个神经网络来逼近这个函数,给每个实空间的3D点一个0-1之间的占用概率(因此和二分类模型等价)。神经网络f输入是一个点和一个几何体的表示(X),输出是一个0-1之间的实数,表示这个点在这个几何体里的概率。

在这里插入图片描述

这不就完事儿了,直接拿数据训练一下呀,就是一个普通的二分类网络。

对不同输入类型的数据,用不同encoder来输入。
单个图像:ResNet
体素:3D CNN
点云:PointNet等

涉及到的底层模块

Marching box算法,生成mesh用的
Fast-Quadric-Mesh-Simplification algorithm: 简化mesh用的。似乎不是一个通用方法,而是github上一个挺好的算法。https://github.com/sp4cerat/Fast-Quadric-Mesh-Simplification

网络结构

在这里插入图片描述

训练

需要采样进行训练。
每个minibatch采样k个点。
论文4.6比较了不同的采样方式,发现在boundingbox内均匀采样,并加一个小的padding,效果最好。
损失函数就是交叉熵函数。

mesh提取

网络训练好后,如何得到mesh呢?
论文提出 Multiresolution IsoSurface Extraction (MISE), 多分辨率表面提取算法。输入训练好的occupancy network,输出mesh。

在这里插入图片描述

方法描述:

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

marching cubes的一张图示:来自视频
这个视频6分钟,原理只在前半部分三分钟左右,一看就懂,清楚明白
(一个cube8个点,每个点可能在或不在,所以一共2^8, but thankfullly, 只有14种,其余的都是对称)
marchingCubes在这里插入图片描述

一些细节:

  • 初始分辨率需要足够高。一个极端例子是grid太大,整个物体都包进去了。这样grid角点全都是not occupied, 检测出来的物体就没有mesh了。实际发现大约32^3 差不多了。
  • refine的具体细节
    • 第一步:用 Fast-Quadric-Mesh-Simplification algorithm 简化模型。
    • 第二步:用一二阶梯度优化。
      • 每个面随机采样得到点pk, minimize the loss:
      • (这里没看懂)在这里插入图片描述

实验

概述

三方面实验

  • 先检验复杂3D模型用occupancy net的表达能力。也就是将ground truth转换为occupancy net的形式。看二者的精度差别和存储空间差别。主要是和基于体素的方法对比。(废话,那肯定好啊)

  • 再针对single image, noisy point clouds, low resolution voxel representations 分别实验

  • 最后验证生成能力。

baseline方法:

single imagepoint cloudvoxel
voxel based3D-R2N23D-R2N2
point basedPointSet Generating Networks(PSGN)PSGN
mesh basedPixel2Mesh & AtlasNetDeep Marching Cubes (DMC)

Dataset: ShapeNet

评价指标(Metrics):

  • IoU:模型的交并比。越高越好。(只有watertight mesh 能用)

  • Chamfer-L1 distance:越小越好。(全部可用)
    accuracy和completeness的平均。
    accuracy是预测mesh上的点到groud truth上的点最近的距离。(两者各随机采样100k个点,取均值)
    completeness是 反过来,ground truth上面的点,到最近的output mesh上的点的距离。
    用KD tree求距离。

  • normal consistency score:还没看懂 (点云不可用)
    (一个mesh的法线) 和 (另一个mesh中,他的最近邻居的发现)的绝对点集。(取均值)

具体实验

表达能力实验

给定ground truth的mesh,训练occupancy network。
同时也用体素表达这个ground truth。
对比体素法和ONet的 IoU 和 参数大小。

定量分析:ONet精度更高,参数更少
在这里插入图片描述
平均IoU约为0.89,与精度关系不大。

定性分析:肉眼可见的细致平滑在这里插入图片描述

单个图像3D重建实验:

定量分析:ShapeNet数据集
定性分析:KITTI 和 OnlineProducts dataset

ShapeNet:

在这里插入图片描述

在这里插入图片描述
有趣的是,在Chamfer-L1指标上,其实是AtlasNet最好。
说是PSGN,Pixel2Mesh , AtlasNet都在这个指标上训练了;Onet没有,但也不错。

real data

在这里插入图片描述

点云补全实验:

ShapeNet里面的几何体,采样300个点,再用高斯加噪声。
在这里插入图片描述

体素重建实验

把体素super resolution:分辨率提到贼高。
输入体素,输出mesh。
在这里插入图片描述

无条件mesh生成

有点没看懂,好像是不给定输入,(可能是随机feature作为输入),生成新模型。

能确定的是unsupervised。
但不知道类别是怎么给定的。
在这里插入图片描述

消融实验(Ablation Study)

采样方法中发现均匀采样最好。
模型架构上发现ResNet和CBN(conditional batch normalization )都很有用。
在这里插入图片描述

代码运行配环境个人笔记

注释掉CMakeList里面的compute_30
可能需要安装glew和 另一个啥
apt-get install parallel

### 回答1: 占用网络是一种用于3D形状建模的深度学习方法。它使用神经网络来预测物体的占用空间,即物体在3D空间中的位置和形状。这种方法可以用于物体识别、姿态估计、形状重建等应用。占用网络的优点是可以处理不规则形状和变形物体,并且可以从单张图像中进行3D重建。 ### 回答2: Occupancy Networks是一种用于3D形状生成和分割的机器学习框架。它与传统的基于网格的方法不同,因为它不需要先对形状进行分割或预处理,并且可以在不同的形状之间共享学习,并且可以生成不同的形状变体。 这个框架的核心是一个神经网络,它可以预测整个三维空间的占据概率函数,指示了该空间中是否存在形状点。 这个网络可以被训练来生成新的3D形状,即使在训练集中没有这些形状的情况下。 Occupancy Networks的优点之一是它可以处理高维空间数据,因为常规的基于网格的方法可以很快消耗内存和处理时间。与传统的3D形状生成方法相比,Occupancy Networks具有优点,因为它可以提供更加准确和一致的形状生成,还可以根据指定的条件生成不同的形状变体。此外,它也具有较强的通用性,可以用于多种形状生成任务,包括3D渲染,建筑设计,医学图像分割和创建虚拟现实环境等领域。在实际应用中,Occupancy Networks具有潜在的应用价值,可以帮助人们更好地掌握和创造3D形状,推进计算机视觉技术的进步和发展。 ### 回答3: Occupancy networks是一种用于三维物体重建和生成的深度学习模型,最初由一组德国和美国研究人员在2019年提出。 Occupancy networks的关键思想是建立一个函数,该函数将三维物体的空间位置映射到其占据体的概率。在训练期间,该函数被用来预测给定三维物体的占据情况,而在生成期间,该函数可以被用来生成新的三维模型。 与传统的三维重建和生成技术相比,Occupancy networks有多个优点。首先,该方法可以处理任意形状和复杂度的三维物体,而不需要特别的先验知识。其次,模型能够从不同的角度观察三维模型,并从这些观察中提取更丰富的表示,更好地反映真实世界中的物体。最后,Occupancy networks能够进行端到端的训练,并且能够在输出时进行随机采样,因此可以生成具有一定随机性的三维物体。 另外,Occupancy networks也有一些挑战和限制。例如,该方法可能需要大量的数据,以克服三维空间的样本稀缺性。此外,Occupancy networks的训练和生成成本很高,需要更强的计算资源。 总而言之,Occupancy networks是一种有前途的三维物体重建和生成模型,它在许多方面的性能都有了很大的进步,但仍需要更多的研究和改进。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值