Anisotropic Convolutional Networks for 3D Semantic Scene Completion
用于3D语义场景补全的各向异性卷积网络
源码:https://waterljwant.github.io/SSC
摘要
作为体素级的标注任务(voxel-wise labeling task),语义场景补全(SSC)试图从单个深度和RGB图像中同时推断场景的占有率和语义标签。SSC面临的关键挑战是如何有效地利用3D环境对形状、布局和可见性有很大变化的各种对象或物品进行建模。为了处理这种变化,我们提出了一种新的模块,称为各向异性卷积(anisotropic convolution),它具有标准三维卷积及其一些变体等竞争方法所不具备的灵活性和强大的性能。与局限于固定3D感受野的标准3D卷积不同,我们的模块能够以体素的方式模拟维度各向异性。
其基本思想是通过将3D卷积分解成三个连续的1D卷积来实现各向异性3D感受野,并且每个这样的1D卷积的核大小是动态自适应地确定的。
通过堆叠多个这样的各向异性卷积模块,可以进一步增强体素建模能力,同时保持模型参数的可控量。在NYU-Depth-v2和NYUCAD两个SSC基准上的大量实验表明了该方法的优越性能。我们的代码可以在https://waterljwant.github.io/SSC上找到。
1、介绍
在这项工作中,我们提出了一种新的模型,称为各向异性卷积,以模拟对象的变化,其性质是灵活和强大的,这是其他方法所不能比拟的。与限于固定感受野的标准3D卷积及其一些变体相比,新模块以体素的方式适应维度各向异性特性,并实现具有不同大小的感受野,即各向异性感受野。其基本思想是将3D卷积运算分解成三个连续的1D卷积,并为每个这样的1D卷积配备不同核大小的混合器。沿着每个1D卷积的这些核的组合权重是以体素方式学习的,因此各向异性3D上下文基本上可以通过连续执行这样的自适应1D卷积来建模。虽然我们使用多个内核,例如3个,由于维度分解技巧,与3D模型相比,我们的模型仍然是参数经济的。通过堆叠多个这样的模块,可以获得更灵活的3D上下文,以及从这样的上下文到体素输出的有效映射功能。
这项工作的贡献如下:
- 针对语义场景完成任务(SSC),提出了一种新的各向异性卷积网络(AIC-Net)。它通过自动为不同的体素选择适当的接受场,使得在3D场景中建模对象变化时具有灵活性。
- 我们提出了一种新的模块,称为各向异性卷积(AIC)模块,它以体素的方式适应维度的各向异性特性,从而隐式地实现了不同大小的3D核。
- 与标准的三维卷积单元相比,新模块对计算的要求更低,参数效率更高。它可以作为一个即插即用模块来代替标准的3D卷积单元。
我们在两个SSC基准上对我们的模型进行了彻底的评估。我们的方法在很大程度上超过了现有的方法,建立了新的最先进的方法。代码将可用。
2、相关工作
2.1 Semantic Scene Completion
语义场景补全
- 【16】SSCNet是由Song等人提出的。是第一个尝试同时预测端到端网络中场景的语义标签和体积占有率的工作。然而,3D CNN昂贵的成本限制了网络的深度,这阻碍了SSCNet实现的准确性。
end-to-end net:端到端指的是输入是原始数据,输出是最后的结果,原来输入端不是直接的原始数据,而是在原始数据中提取的特征,这一点在图像问题上尤为突出,因为图像像素数太多,数据维度高,会产生维度灾难,所以原来一个思路是手工提取图像的一些关键特征,这实际就是就一个降维的过程。
- 【21】Zhang等在SSC中引入了空间组卷积(spatial group convolution, SGC)来加*维密集预测任务的计算。但其精度略低于SSCNet。
- 【8】Guo和Tong将二维CNN和三维CNN相结合,提出了视点体积网络(VVNet),有效地降低了计算代价,增强了网络深度。
- 【11】【23】Li等人使用深度和体素作为混合网络的输入,并在训练时考虑不同位置的元素的重要性。
- 【6】Garbade等人提出了一种联合利用深度和视觉信息的双流方法。具体来说,首先对推断出来的二维语义信息构造一个不完整的三维语义张量,然后采用vanilla 3D CNN来推断完整的3D语义张量。
- 【13】Liu等也采用RGB-D图像作为输入,提出了两阶段框架,依次进行二维语义分割和三维语义场景完成,通过2D-3D重投影层连接。然而,他们的两阶段方法可能会受到误差计算的影响,产生错误的结果。虽然已经取得了显著的改进,但这些方法受到3D卷积成本和固定接受野的限制。
- 【10】Li等为三维SSC任务引入了维数分解残差网络(DDRNet)。虽然它能在较少的参数下获得较好的准确性,但它仍然保留了使用固定感受野的局限性。
2.2 Going Beyond Fixed Receptive Field
超越固定的接受域
大多数现有模型利用固定大小的内核来建模固定的可视上下文,这在处理不同大小的对象时缺乏健壮性和灵活性。
- 【17,19,18】 Inception考虑了多个大小的接受域,它通过使用不同的卷积内核启动多分支cnn来实现这个概念。
- 【2】类似的思想也出现在atrous spatial pyramid pooling(ASPP)中,通过在特征图顶部设置多个不同扩张速率的平行卷积来获取多尺度信息。这些策略本质上包含了多尺度融合的思想,并且相同的融合策略统一应用于所有位置。
- 【21】zhang等人通过对不同内核大小的卷积进行加权来选择更合适的接受域。
- 【9】STN设计了一个空间变压器模块来实现平移、旋转和缩放的不变性。然而,它将整个图像视为一个单元,而不是明智地调整接感受野像素。
- 【3】变形CNN (DCNv1)试图根据物体的规模和形状自适应地调整感受野的空间分布。具体地说,它利用偏移量来控制空间采样。
- 【25】DCNv2通过叠加更多可变形的卷积层来提高建模能力,并提出使用教师网络来指导训练过程。然而,DCNv2仍然努力控制偏移量,以便只关注相关像素。
与上述方法不同的是,本文提出的AIC模块是为三维任务量身定制的,特别是针对SSC。通过明智地学习各向异性的接受场体素,它能够处理形状、布局和可见性变化的对象。同时实现了语义补全精度和计算代价的权衡。
3、Anisotropic Convolutional Networks
各向异性卷积网络
在本节中,我们介绍了用于三维语义场景完成的各向异性卷积网络(AIC-Net)。AIC网络的核心是我们提出的各向异性卷积(AIC)模块。给定一个3D场景的单视图RGB-D图像,AIC-Net预测一个密集的3D体素表示,并将视图锥体中的每个体素映射到其中一个标签C
C = { c1, c2,· · · , cN+1 }
- N是对象的数量
- CN+1代表空体素
- c1, c2,· · · cN表示不同类别对象占用的体素
图1显示了我们的AIC-Net的总体架构。
- 它包括一个混合特征提取器( a hybrid feature extractor ),用于深度图和RGB图像的特征提取;
- 一个多阶段特征聚合模块( multi-stage feature aggregation module)通过AIC模块堆栈对混合特征提取器获得的特征进行聚合,
- 两个额外的AIC模块来融合多阶段信息,
- 然后通过一系列体素级的三维卷积层来重建三维语义场景。
- 混合特征提取器包含两个平行分支,分别用于深度图和RGB图像的特征提取。每个分支包含一个2D和3D CNN的混合结构。2D和3D cnn通过2D-3D投影层连接起来,允许模型将2D特征图转换为适合于3D语义场景完成(SSC)的3D特征图。
【10】我们的混合特征提取器的结构遵循DDRNet的结构。- 多阶段特征聚合模块由一系列AIC模块组成,每个模块都可以动态地灵活调整三维环境。这些AIC模块的输出被连接在一起,另两个AIC模块将这些多级信息融合在一起。
- 然后,通过在融合特征上应用一系列体素级的三维卷积层,重构出三维语义场景。
AIC-Net整体网络结构。
- AIC-Net有两个特征提取器并行分别从RGB和深度图像中获取特征。特征提取器包含一个投影层,用于将2D特征映射到3D空间。
- 然后,我们使用堆叠的AIC来获取具有自适应接受域的信息。
- 多尺度特征通过另外两个AIC和三个体素级卷积进行连接和融合,同时预测占用率和目标标签
在本节的其余部分,我们将介绍AIC模块(第3.1节),通过堆叠AIC模块实现的多路径内核选择机制(第3.2节),并详细介绍了我们模型的训练损失(第3.3节)。
3.1 Anisotropic Convolution
各项异性卷积
考虑到物体形状、布局以及不同遮挡程度在SSC中的变化,对不同的上下文信息建模从而推断不同体素位置的占用率和语义将是有益的。为了适应这种变化,提出了各向异性卷积(AIC)模块,使卷积能够适应三维几何变形。
- 图2是我们的AIC模块的结构。与固定而有限的3D接受域的3D卷积核(K1 * K2 * K3)不同,我们通过尺寸可学习的3D的核来对维度的各向异性特性进行建模。为了实现这一点,我们首先将三维卷积运算分解为沿每个维度x, y, z的三个一维卷积运算的组合。在每个维度中,我们可以注入不同大小的多个内核(例如实现中的3个),以支持更灵活的上下文建模。
举例:对于x,我们可以有三个核(1 × 1 × kx1)、(1 × 1 ×kx2)和(1 × 1 ×kx3)。
- 我们将学习一组选择权值,即调制因子(modulation factors),沿着三个维选择合适的内核。
- 请注意,不同维度的候选内核不必相同。当沿x、y和z维分别存在n、m和l个候选核时,可能的核组合可以指数增长为,{kz1, kz2,· · · , kzl} × {ky1, ky2,· · · , kym} × {kx1, kx2,· · · , kxn}.
- AIC模块可以学习为每个维度选择不同的核,形成各向异性卷积以捕获各向异性3D信息。
图2是我们的AIC模块的结构。
对于每一维,我们以3个不同核大小的并行卷积为例。不同核的学习调制因子(modulation factors )用不同的颜色表示。调制因数的值为正,并且每行的值之和为1。
Modulation factors
调制因数 为了使模型能够确定候选核的最优组合,从而自适应地控制上下文来对不同的体素建模,我们在AIC模块中引入了调制模块。如图2所示,
假设AIC模块的输入是张量:
- X t − 1 ∈ X~t−1~∈ X t−1 ∈ R R RL×W×H×D
- L W H是张量的长宽高
- D表示特征的维度。
输出Xt∈RL×W×H×D可以表示为
- 其中Fu表示沿u∈{x,y,z}维的各向异性卷积。
我们采用一种残差结构,将连续三个各向异性一维卷积的输入张量和输出按单元求和,从而得到输出。在不失去一般性的情况下,我们将
F
x
(
X
t
−
1
)
F^x(X~t−1)
Fx(X t−1)表示为,
- 其中
表示使用θxi,即大小为(1,1,kxi)的核对Xt-1执行卷积,其中kxi∈{kx1,kx2,···,kxn},- N是维度x的候选核的总数,并且表示⨀按元素相乘。
是从输入张量到用于沿维度x选择核的权重或调制因子的映射函数,φx表示映射函数的参数。
使用softmax是的每个维度u∈{x,y,z}的核的权重相加为1
在这个意义上,我们采用一组权值的软约束来确定不同内核的重要性。两种极端情况是,学习到的调制因子为1或0,表示对应的核将是唯一选择或被忽略。通过使用软值,我们可以更灵活地控制这些内核的贡献。
在图2中,我们展示了一个AIC模块的例子,m = n = l = 3,如图所示,gu(·,·)是通过与核(1 × 1 × 1)的1层三维卷积实现的。
额外资料解析:https://blog.csdn.net/alfred_torres/article/details/107496979
- g就是来衡量不同体素的重要性的,并且g是需要一个softmax来进行归一化的。
Bottleneck anisotropic convolution
为了进一步减少AIC模块的参数,提出了一种基于瓶颈的AIC模块。如图3所示,对于每个AIC模块,在AIC运算前后都加一个(1×1×1)卷积。这两个卷积负责减少和恢复特征通道,使AIC模块具有更紧凑的输入。在本文的剩余部分,除非另有说明,AIC指的是基于AIC的瓶颈。
瓶颈版AIC模块。第一次卷积减少了从D到D’(D’< D)的通道数量,最后一次卷积将通道增加回D。
3.2 Multi-path Kernel Selection
尽管单个AIC模块具有吸引人的特性,但在这里我们展示了通过堆叠多个AIC模块可以获得更大的灵活性。堆叠多个AIC模块隐式地在层间形成多个可能路径,从而使模型的接受域变化范围广泛。图4显示了一个由四个AIC模块组成的堆栈,每个模块沿三个维度设置内核大小为{3,5,7}。
对于一个特定的维度,当每个模块倾向于选择内核大小7时,这个维度的最大接受字段将获得25。相反,如果核大小3在该维度的四个AIC模块的选择中都占主导,则一个维度的最小接受域为9。理论上,这个特定维度的接受域可以在(9,25)的范围内*变化。当同时考虑三个维度时,我们的AIC网络支持的3D接受域的数量将呈指数级增长,这将为建模对象变化提供灵活性和能力,这是竞争方法无法做到的。
一维多路径内核选择的例子。在本例中,堆叠了四个AIC模块,每个模块的每个维度的内核大小为{3,5,7}。内核的背景暗度表示调制因子的值,从而反映了对该内核的选择趋势。堆叠多个AIC模块可以成倍地增加接受域的范围。
3.3 Training Loss
我们提出的AIC网络可以通过端到端方式进行训练。我们采用体素级交叉熵损失函数【16】进行网络训练。损失函数可以表示为:
- 其中Lsm交叉熵损失,
- yijk标签的groundtruth(i,j,k)
- pijk相同体素的预测
- wijk是平衡语义类别的权重,我们遵循[16,10],在我们的实验中使用相同的权重。