1 前言
大多数现有的3D网络架构通过稠密且规则的三维体素网格来代替2D像素阵列,并使用3D卷积和池化操作来处理该网格。然而,对于稠密的三维数据,计算和内存需求随着分辨率的提高呈三次方增长。因此,现有的3D网络仅限于较低的3D分辨率,通常为30的3次方个体素。
(资料图)
2 相关背景
尽管2D卷积网络在从图像中提取信息方面已被证明是非常成功的,但在处理三维数据方面的工作相对较少。我们回顾关于稠密模型和稀疏模型的现有工作。稠密模型:由于计算和内存的限制,稠密模型的常用方法都只能在非常粗的分辨率下处理和生成形状,通常在30的3次方个体素的数量级。此外,当需要高分辨率的输出时,例如用于标记三维点云时,采用有限的低效滑动窗口技,分辨率的提高降低了网络的深度,从而降低了网络的表现力。相比之下,所提出的OctNets允许在更高的分辨率下训练深层结构。稀疏模型:只有少数网络架构明确地利用了数据中的稀疏性。由于这些网络不需要穷举密集卷积,它们具有处理更高分辨率的潜力。部分工作具有减少卷积数量的潜力,但不会减少所需的内存量。因此,他们的工作只考虑最多三层的非常浅的网络。
3 方法
为了减少卷积网络在稀疏的三维数据上的内存占用,作者提出了一个自适应的空间划分方案,将计算集中在相关区域。由于深度网络的数学运算,特别是卷积网络,在规则的网格上最容易被理解,作者把注意力限制在三维体素网格的数据结构上。在体素网格上最流行的空间划分结构之一是八叉树,由于其灵活的分层结构,八叉树已被广泛采用。应用的领域包括深度融合、图像渲染和三维重建。在本文中,我们提出了八叉树形式的三维卷积网络,以从高分辨率的三维数据中学习表征。
3.1 .混合网格-八叉树数据结构
随着八叉树深度的增加,其所存在的问题不断增加。作者使用一种类似于Miller等人提出的混合网格-八叉树结构来代替单个非平衡八叉树来表示整个高分辨率3D输入。作者的核心思想是将一棵八叉树的最大深度限制在一个很小的数值,如3层,并将若干个这样的浅八叉树沿一个规则的网格放置。虽然这种数据结构可能没有标准八叉树那样的内存效率,但仍然可以实现显著的压缩比。浅层八叉树集合的另一个好处是,它们的结构可以使用位串表示进行非常有效的编码,从而进一步降低访问时间,并允许高效的GPU实现。通过给定一个深度为3的浅八叉树,我们用73 bit表示完整的树。索引为0的第1位表示根节点是否分裂。进一步,比特1到8表示是否对其中一个子节点进行了剖分,比特9到72表示孙子节点的剖分,如图3所示。树的深度为3在内存消耗和计算效率之间给出了一个很好的折衷。增加八叉树深度导致存储树结构所需的比特数呈指数增长,进一步增加了单元遍历时间。
3.2. 针对网络操作
我们现在讨论混合网格-八叉树数据结构再网络操作上的高效实现。重点介绍卷积网络[中最常见的操作:卷积、池化和去池化。卷积卷积操作是深度卷积网络中最重要的,同时也是计算开销最大的操作。对于单个特征图,将三维张量T与三维卷积核W∈RL × M × N卷积可写为:
类似地,网格-八叉树数据结构上的卷积定义为:
虽然这个计算结果与单特征图的张量卷积与oc2ten、ten2oc包装器相同,但我们现在能够定义一个计算上更有效的卷积算子。我们的关键观察是,对于小的卷积核和大的体素,在体素的小范围内是恒定的,因为它的恒定支持]。因此,我们只需要计算一次体素内的卷积,然后沿着体素的表面进行卷积,由于相邻的体素取值不同,支持度会发生变化(图4)。这使83个体素的计算次数减少了4倍。同时,它还能实现一个更好的缓存机制。
图4:卷积。该图说明了33个核(红色)与83个网格-八叉树单元(黑色)的卷积。图中只显示了三个维度中的两个。如(a)所示,在网格树单元内的每个位置(i, j, k)都有一个直接的实现,对内核进行评估。在这个例子中,这导致了约1万4千次乘法。相比之下,(b)描述了我们对同一操作的有效实现,只需要约3千次乘法。由于网格-八叉树单元内的所有83个体素都是相同的值,单元内的卷积核只需要评估一次。单元边界的体素需要整合来自相邻单元的信息。这可以通过截断内核的求和来有效实现。
池化:深度卷积网络中另一个重要的操作是池化。池化降低了输入张量的空间分辨率,聚合更高层次的信息进行进一步处理,从而增加感受野和捕获上下文。
图5:池化。在grid-octree结构上的23个池化操作将8个相邻的浅八叉树(a)合并为一个浅八叉树(b)。每个体素的大小被减半并复制到新的浅八叉树结构中。最细分辨率的体素被集中起来。不同的浅层八叉树用不同的颜色来描述。
例如,卷积步长为 23 最大池化将输入张量Tin分成23个不重叠的区域,并计算每个区域的最大值。形式上,我们有
为了在网格八叉树数据结构上实现池化,我们减少了浅八叉树的数量。对于一个具有2D × 2H × 2W浅八叉树的输入网格树Oin,输出Oout包含D × H × W浅八叉树。Oin的每个体素的大小减半,并在浅层八叉树中复制一个层次。Oin中深度为3的体素被集合起来。这可以被表述为
其中vxd(-)计算浅层八叉树中索引体素的深度。图5中描述了一个直观的例子。
作者为了捕捉精细的细节,体素可以根据相应集合层的原始八叉树,以最精细的分辨率再次分割。这使我们能够充分利用跳跃连接。在作者的语义三维点云标签实验中,其遵循这种方法。去池化对于语义分割等多个任务,期望的网络输出与网络输入大小相同。虽然池化对于增加网络的感受野大小和捕获上下文至关重要,但它会损失空间分辨率。为了提高网络的分辨率,U型网络架构已经成为流行的,其使用池化操作编码信息,并在解码器部分使用去池化或反卷积层提高分辨率[ 51 ],可能与跳跃连接(skip-connections)[ 9、19]结合以提高精度。最简单的去池化策略使用最近邻插值,可以在稠密输入T in∈RD × H × W和输出T out∈R2D × 2H × 2W张量上进行如下形式化:
同样,我们可以在混合网格-八叉树数据结构上定义类似的操作,即
这个操作也改变了数据结构:浅层八叉树的数量增加了8倍,因为每个深度为0的节点会产生一个新的浅层八叉树。所有其他节点的大小都增加了一倍。因此,在这个操作之后,树的深度减少了。这个操作的直观例子见图6。备注:为了捕捉精细的细节,体素可以根据相应集合层的原始八叉树,以最精细的分辨率再次分割。这使我们能够充分利用跳过的连接。在我们的语义三维点云标签实验中,我们遵循这种方法。
4 .实验评估
在本节中,作者利用OctNet来研究输入分辨率对三种不同3D任务的影响:3D形状分类、3D方向估计和3D点云语义分割。为了将分辨率的影响从其他因素中分离出来,作者考虑较为简单的网络结构。数据增强、2D / 3D联合建模或集成学习等正交技术可能会进一步提高模型的性能。
4.1. 3D Classification
作者使用流行的ModelNet10数据集进行3D形状分类任务。该数据集包含10个形状类别,包括用于训练的3991个3D形状和用于测试的908个3D形状。每个形状被提供为一个三角形网格,以规范的姿态定向。作者将三角形网格转换为稠密的各自的网格-八叉树占用网格,其中一个体素如果与网格相交则设置为1。我们对每个网格进行缩放以拟合成一个( N-P)3体素的3D网格,其中N是输入网格中每个维度的体素数,P = 2是填充参数。我们首先研究了输入分辨率对内存占用、运行时间和分类精度的影响。为了实现这个目标,作者创建了一系列从83到2563个体素的不同输入分辨率的网络。作者考虑了三种不同类型的网络:马图拉纳等人[ 30 ]的原始VoxNet架构,它运行在固定的323个体素网格上,OctNet和它的稠密版本,我们在下文中表示为" DenseNet "。虽然可以通过使用正交方法如网络集成[ 5 ]或3D和2D卷积网络[ 20 , 42]的组合来获得性能增益,但在本文中,作者特意关注"纯" 3D卷积网络方法,以将分辨率的影响与其他影响因素隔离开来。
图7 展示了结果。首先,我们比较了我们的Oct Net 的内存消耗和运行时间,如图7a和7b所示。重要的是,与密集输入网格相比,OctNets需要更少的内存和运行时间来实现高输入分辨率。
作者注意到,尽管OctNet具有池化表示,但它的性能与它的稠密等价类相当。稀疏数据允许自适应地分配资源而不会损失性能。此外,两个模型都优于较浅的VoxNet架构,表明了网络深度的重要性。关于分类精度,我们观察到低分辨率的改善,但超过323个体素的输入分辨率的回报递减。较高的输入分辨率有助于某些类别,如浴缸,而其他类别则与分辨率无关,如梳妆台v。我们通过从ModelNet10数据库中显示三维形状的体素化表示来可视化这种缺乏辨别力的情况,如图8所示。虽然浴缸在低分辨率下看起来与床(或沙发、桌子)相似,但在更高分辨率下可以成功区分。
4.2. 3D Orientation Estimation
在本节中,我们研究了输入分辨率对三维方向估计的重要性。大多数现有的三维姿态估计方法都假设物体实例的真实三维形状是已知的。为了评估3D卷积网络的泛化能力,我们考虑了一种只知道物体类别的略有不同的设置。在单个类别的3D形状的保留集合上训练模型后,我们测试了模型对来自同一类别的未知3D形状的3D方向的预测能力。图10展示了作者得到的结果。可以观察到,与分类任务相比,精细细节对于位姿的估计更为重要。对于OctNet 1 - 3架构,我们观察到性能的稳步增加,而对于跨分辨率容量恒定的网络(图10b ),性能水平超过1283体素输入分辨率。后一实验的定性结果如图11所示。每一行显示了在几个输入分辨率上对两个随机选择的椅子实例的10个不同的预测,范围从163到1283。较暗的颜色表示较大的误差,这些误差在较低分辨率下出现的频率更高。相比之下,较高网络分辨率下的预测集中在真实姿态附近。
在Modelnet10上进行朝向估计。图中显示了输入分辨率从163到1283变化时,3个椅子实例的10个旋转估计值。较暗的颜色表示与真实值有较大的偏差。
4.3. 3D Semantic Segmentation
对于该任务,我们在643、1283和2563三种不同的输入分辨率上训练了一个U型网络,其中体素大小被选择使得所有建筑物的高度都与输入体积相符合。我们首先将点云映射为网格-八叉树结构。对于所有包含一个点以上的叶子节点,我们对输入特征进行平均,并计算地面真值标签的多数投票进行训练。作为特征,我们使用了二进制体素占有率、RGB颜色、法向量和地面高度。由于训练样本数量较少,我们通过施加小幅度的旋转来增加该任务的数据。图12,作者的结果清表明,提高输入分辨率对于获得最先进的结果是必不可少的,因为在较粗的分辨率下,更精细的细节会消失。
5 总结
该作者所提出的OctNet,作为一种新颖的三维表示和数据结构表达,使得高分辨率输入的深度学习变得容易。作者提供了一种实现高分辨率输入的方式,这对物体分类、姿态估计和语义分割等多个3D学习任务做出了一定的贡献。随着对象数据集从低分辨率向高分辨率大规模三维数据地转变,OctNet将能够实现进一步的改进,其为未来的研究的提供了一个高效处理高分辨率体素化数据的途径。
审核编辑:彭菁