简介
三维表示是机器视觉的一项关键技术,它能直观的反映物体的形状,与我们熟悉的二维表示相比,三维表示带有深度信息,因此有效的三维表示是实现三维模型重建、三维目标检测、场景语义分割等机器视觉任务的重要关键,在机器人、AR/VR、人机交互、遥感测绘等领域有着广泛的应用前景。
计算机视觉和计算机图形学社区开发了各种三维表示,大体可分为显式表示和隐式表示两类表示方法,主流的显式表示方法包括基于体素、基于网格、基于点云,而隐式表示包括基于占用函数、基于符号距离函数、基于神经辐射场等方法。
三位表示方法
体素
体素是欧几里德结构的数据,可以与二维图像做对比,一幅图片通常由一个个包含RGB位置等信息的像素组成,而由体素表示生成三维物体通常由若干个立方体规则的在三维空间中放置,并且为了表示三维物体形状在体素中可以存储几何占有率、体积、密度和符号距离等信息以方便渲染,值得注意的是与像素相比,体素本身并不包含位置信息可以借助体素之间的相对位置推导出位置信息。
由于体素表示的规则性,它们与标准卷积神经网络有着配合良好,并且广泛用于深度几何学习。作为先驱3D ShapeNets是首个将体素表示引入到3D场景理解任务中,它提出将三维几何物体表示为体素上二元变量的概率分布。在网络中通过卷积深度置信网络将输入的单视角深度图用三维体素上二元变量的概率分布表示(其实就是通过深度置信网络去判断空间中的一个点是否被三维物体占据,如果被占据则用一个立方体体素表示),而深度置信网络是一类强大的概率模型,通常用于对二维图像中像素和标签的联合概率分布进行建模。然后再通过预测网络和分类网络对生成体素模型进行其他视角的建模和分类。
在3D-R2N2网络中使用2D 卷积网络将来自任意视点的对象的一个或多个图像编码为潜在向量,然后将编码输入3DLSTM网络利用LSTM网络的能力来保留先前的观测结果,并随着更多可用的观测结果逐步细化,最后由3D反卷积网络解码LSTM单元的隐藏状态并利用网络的先验知识生成3D概率体素重建。
尽管体素网格非常适合3D 卷积网络,但使用神经网络处理体素通常是内存效率低下的,内存随分辨率呈立方增加,通常需要将分辨率限制在323232或646464,有工作将分辨率提至128128128,但仅适用于浅架构和小的batch size,训练缓慢。为了克服这个问题,引入了用于形状建模的八叉树数据结构,但实现起来又会复杂,需要多次传递输入来生成最终三维模型,现有数据自适应算法依旧局限于相对较小的256256256分辨率。
点云
点云是三维空间中点的无序集合可以将其视为3D形状曲面的离散化样本,因此点云具有无序性、点之间的相互作用和变换不变性。
点的无序性
点与点之间没有严格的顺序如将两个点交换之后仍然表示同一个点云
点之间的相互作用
虽然点云的点是离散的,但是却可以共同组成物体或者环境的轮廓。这意味着点之间不是孤立的,相邻点形成一个有意义的子集。因此,模型需要从点的附近的点捕捉局部结构,以及局部结构之间的相互作用。
变换不变性
是点云进行刚性变换(旋转平移)后,再进行输入,输出的分类或者是分割结果不变。
点云包含了丰富的信息,包括三维坐标X,Y,Z、RGB、分类值、强度值、时间等等。点云可以由深度传感器直接输出,因此在3D场景理解任务中非常流行。尽管它们很容易获得,但点云的不规则性使得它们很难用现有的用于规则网格数据的神经网络进行处理。此外,由于采样变化,底层3D形状可以由许多不同的点云表示。
许多方法试图有效地分析3D点云。PointNet利用MLP网络从点集中提取特征向量,并通过最大池化来总结所有点的特征,以实现点阶不变性,然后将提取的特征传入后续网络完成分类和语义分割任务。
还有一些方法将点云重新定义为其他类型的数据结构,并试图在其他领域利用神经网络。DGCNN将点云视为图,并旨在使用图卷积网络对相邻点之间的关系进行建模。将点云转换为稀疏体素,并使用3D稀疏卷积网络对其进行处理。
网格
多边形网格是非欧几里得数据,表示具有顶点、边和面的集合的形状曲面。与体素相比,网格仅对场景曲面建模,因此更紧凑且占用内存较少。与点云相比,网格提供了模拟点关系的曲面点的连通性。将3D形状表面参数化为2D几何图像,在使用2D CNN处理几何图像,避免了处理3D拓扑。由于这些优点,多边形网格被广泛应用于传统的计算机图形应用,如几何处理、动画和渲染。然而,将深度神经网络应用于网格比应用于点云更具挑战性,因为除了顶点之外,还需要考虑网格边缘。
Pixel2mesh模型采用图卷积神经网络,将网格看出点与边连接的拓扑结构,图卷积神经网络模型可以用来训练拓扑结构。通过VGG-16模型可以从颜色图像中提取基于形状特征,最后利用从输入图像中提取的感知特征逐渐更新椭圆体来生成正确的曲面三维三角形网格。不仅定性地生成具有更好细节的网格模型,而且还实现更高的三维重建精度。
隐式神经
隐式表示是一种对各种信号进行参数化的新方法。传统的信号表示通常是离散的,而隐式表示将信号参数化为一个连续函数,将信号的域映射到该坐标上的属性的值,并且这些函数通常不是解析性的——即不可能“写下”将自然图像参数化为数学公式的函数。隐式表示通过神经网络来近似信号函数。也就是说隐式表示并不能像显式表示那样直观的显示三维几何物体,而是将物体用一种基于神经网络的连续函数映射关系去表示。这样表示的优点是:
隐式表示不再与空间分辨率相耦合
例如,图像与像素数量相耦合的方式。隐式神经表示是连续函数,因此参数化信号所需的内存与空间分辨率无关,只与底层信号的复杂性相关。另一个推论是,隐式表示具有“无限分辨率”——它们可以在任意空间分辨率下进行采样。所以隐式表示解决了在显示表示中显存的限制,使得超分辨率成为可能。
表征能力更强
跨神经隐式表示的泛化等同于学习函数空间上的先验,通过学习神经网络权重上的先验实现。学习后的隐式表示可以通过不同的坐标输入映射到任意属性值。
泛化性高
神经隐式表示学习函数空间上的先验,然后根据提取的先验以及输入的特征,可以得到不同的目标信号。
易于学习
基于神经网络的隐式神经表示易于与各种网络结构结合,能够快速的学习先验,拟合学习对象。与传统的表示形式(如网格、点云或体素)相比,神经隐式表征可以灵活地融合到可微分的基于学习的管道中。
缺点是:
需要后处理
如果想让人们直观的看到重建后的三维几何物体还是要回归到显示表示。
难以实时
隐式神经表示需要对整个三维几何物体的体素的函数值进行计算,计算量大,十分耗时。
占用函数(Occupancy Function)
将空间中的像素点用一个占用函数来表示,判断这个像素点是否被物体占用,也就是说他将三维几何物体用空间中的像素点坐标与这个像素点是否被占用这么个映射关系来表示,对网络输入一个像素点的坐标,网络会输出一个二元结果也就是这个像素点是否被占用。这个函数的关键是,可以用一个神经网络来近似这个3D函数,该神经网络分配给每个位置p一个在0到1之间的占用概率。这个网络相当于一个用于二分类的神经网络,而我们关注的是对象表面的决策边界。
占用网络(Occupancy WorkNets)
占用网络是一种新的基于学习的三维重建方法,它隐式地将三维曲面表示为深度神经网络分类器的连续决策边界(指的就是基于神经网络的占用函数)。该表示方法编码了高分辨率的3D输出,并且没有过多的内存占用。同时该方法能够高效地编码三维结构,并且能够从不同种类的输入推断出模型。网络将输入的点云,体素和网格转换为占用函数并以预测的方式进行补全,再通过多分辨率等值面提取生成高分辨率网格表示。最后一步进行的多分辨率等值面提取就是将隐式表示渲染成显示表示的一种方法,就像之前说过的如果要让人直观的看到重建的三维模型还是要将隐式表示回归到显式表示,而多分辨率等值面提取先在给定分辨率下标记所有已被评估为已占用或未占用的像素点,然后将空间划分为多个体素判断确定所有顶点被占用和顶点未占用的体素,将被占用的体素细分为8个子体素继续进行判断和确定。反复进行迭代,直到达到所需的输出分辨率。最后,使用行进立方体算法提取网格,使用一阶和二阶梯度信息简化和细化输出网格。
符号距离函数(SDF)
符号距离函数的定义是,在空间中的一个有限区域上确定一个点到区域边界的距离并同时对距离的符号进行定义:点在区域边界内部为正,外部为负,位于边界上时为0。在这里我们可以简单理解为空中的一个像素点到物体表面最近的距离,如果这个点在物体外部距离为正,如果在物体内部则距离为负,当距离为0是意味着这个像素点在物体表面。在网络中我们输入的是一个像素点的坐标,网络则是输一个带符号的距离。
连续符号距离函数(DeepSDF)
传统的表面重建技术中,符号距离函数是基于离散化体素对物体或者场景表面的一种表达,而现实中表面是连续的,也就是说通常我们将显式的点云或者体素输入网络用隐式的符号距离函数表达,但由于点云体素这种三维数据本身就是离散的,导致网络无法输出连续的符号距离函数,针对这一问题DeepSDF通过学习的方式可以从输入的部分和有噪声的三维数据中进行高质量的形状表示、插值和补全。简单来说就是DeepSDF通过插值将离散的符号距离函数补全为连续的符号距离函数,以方便后续渲染出连续的物体表面。与SDF相比DeepSDF可以生成一类物体形状,而一个SDF只能生成一个固定的物体模型若要生产同一类形状模型需要对网络重新进行训练。DeepSDF是通过编码形状模块将坐标与不同形状的编码一起输入到训练好的网络当中从而生成同一类不同形状的物体,最后DeepSDF生成完整的显式物体形状是依靠解码器的先验知识渲染得到的。
神经辐射场(NeRF)
NeRF将隐式表达推上了一个新的高度其同名论文发表于ECCV2020,凭借其震撼的视角合成效果获得了当年的Best Paper。在之后的两年里,NeRF的引用量多达937次,仅2021年一年就有上百篇相关的文章,其中不乏高质量的文章和令人惊艳的合成效果。这些都证明了NeRF以及隐式表示在近些年的高涨热度。NeRF首次利用隐式表示实现了照片级的视角合成效果,而且与其他三维表示相比,NeRF并没有生成完整的三维几何物体,而是用任意视角的二维图像去表示,这依靠于NeRF网络通过物体不同视角的二维图像进行大量的训练可以预测生成未知视角的二维图像。NeRf提出的隐式表达以空间点的坐标和观察者的视角、位置作为输入,输出则是点的RGB信息和占用密度。占用密度这一点与占用函数相似,但没有像占用函数那用粗暴的用0和1表示一个点是否被占用而是用0~1之间的数字表示点被占用的程度这样可以减少大量计算量。
光线追踪
在图像渲染方面NeRF采用了光线追踪的方法将隐式表示渲染为二维图像,光线追踪法就是沿着观察者眼里发射出光线,对光线进行采样取得每个采样点的RGB和密度信息,并使用体绘制技术将这些值合成图像。(体绘制技术大概就是将每个点得RGB对密度进行积分然后将所有的点的积分结果进行融合。)
总结
版权归原作者 码界战士嘎嘎嘎 所有, 如有侵权,请联系我们删除。