😻SQN(ECCV2022) 主要贡献:
- 提出了一种利用点邻域查询从而充分利用稀疏训练信号的弱监督方法
- 论文观察到,现有的完全监督方法在标注点下降到 1% 时其性能下降不是很明显,这表明完全、密集的标记是多余的
- 在论文提出的基准中,其对 baseline 有着显著的改进,并在很大程度上超过了最先进的弱监督方法
前言
😿完全标记点云是非常耗时和昂贵的,随着拥有数十亿点的大型点云数据集变得越来越普遍,且在完整标注点云数据集下设计的现有 baseline 即使面对 1% 的随机点标注也只会略有下降,这甚至导致我们会认为完整标注是否必要。然而,当标注点少于 1%(如:0.1% 的标注)时,其分割精度会降低到不可接受的程度。
😿尽管弱监督学习应用在多个 3D 点云数据集上取得了令人鼓舞的结果,但其有以下几个局限仍有待解决:
- 现有的方法通常使用自定义方法来标注不同数量的数据(如:原始点或超点的 10% / 5% / 1%)用于训练,这导致我们不清楚应该标注多少比例的原始点以及如何标注它们,因此不可能进行公平的比较
- 为了充分地利用稀疏的标注点,现存的弱监督 pipeline 通常包含数据增强、self-training、微调、后处理等多个阶段,这导致其相对于端到端的训练方式而言更难调参且更难部署应用
- 这些技术没有充分考虑大规模点云中点邻居的局部语义同质性(local semantic homogeneity),或者没有有效地做到这一点,从而导致有限但有价值的标注未得到充分利用
😸论文观察到,由于点云是三维世界的样本,其在局部邻域的点分布是具有相似性的,具体表现在其具有很强的语义相似性。基于此,我们提出了一种新的弱监督方法来隐式增强高度稀疏的监督信号。大量实验表明,论文所提出的语义查询网络(SQN)在弱监督方案下在 7 个大规模数据集上取得了良好的性能,同时只需要 0.1% 的随机标记点进行训练,大大降低了标注成本和工作量。
网络结构
✍️对于具有稀疏标注的点云,弱监督学习面临的根本挑战是如何充分利用稀疏但有价值的训练信号来更新网络参数,从而学习到更具几何意义的局部信息。为了解决这个问题,论文设计了一个简单的 SQN
,它由点局部特征提取器(point local feature extractor)和点特征查询网络(point feature query network)这两个主要组件组成。
- 点局部特征提取器:目的是提取所有点的局部特征,其可由许多网络来充当提取器(论文使用
RandLA-Net
作为特征提取器),这些网络通常将多个编码层叠加在一起并通过降采样操作提取分层局部特征。如上图所示,该提取器由四层伴有随机采样(RS
)的局部特征聚合(LFA
)组成。为了便于后面点特征查询网络的工作,SQN 始终保留每个层次特征向量对应点的位置(xyz)信息。 - 点特征查询网络:该查询网络旨在收集尽可能多的相关特征,并使用可用的稀疏信号进行训练。如上图所示,它以特定的 3D 查询点为输入,获取与该点相关的一组学习到的点特征。该网络由空间邻近点特征搜索(Searching Spatial Neighbouring Point Features)、插值查询点特性(Interpolating Query Point Features)和推断查询点语义(Inferring Query Point Semantics)这三部分构成。
- 空间邻近点特征搜索:该模块根据点之间的欧氏距离在特征提取器的 4 个编码层中搜索距离查询点最近的
K
个点,K 为超参数,其在论文中被设置为3
。 - 插值查询点特性:对于每一层的特征,查询的 K 个向量被压缩成查询点 p 的一个紧凑表示(compact representation)。为了简单起见,论文应用三线性插值方法,根据 p 和 K 个点之间的欧氏距离计算 p 的特征向量。最后,将四个层次特征向量拼接在一起,表示整个三维点云中所有相关的点特征。
- 推断查询点语义:在得到查询点 p 唯一且具有代表性的特征向量后,我们将其输入到一系列 MLP 中,直接推断出点的语义类别。
- 空间邻近点特征搜索:该模块根据点之间的欧氏距离在特征提取器的 4 个编码层中搜索距离查询点最近的
LFA
😸Local Feature Aggregation
(LFA)是在论文 RandLA-Net 中提出,该模块主要是用于解决由于随机采样(RS)导致许多有用的点特征被删除的问题,其主要由局部空间编码(Local Spatial Encoding)、注意力池化(Attentive Pooling)和扩张残块(Dilated Residual Block)这三部分组成。
LocSE
😸LocSE
模块显式地嵌入(embeds)所有邻居点的三维坐标,这样对应的点特征总是知道它们的相对空间位置,从而使得 LocSE 可以显式地观察局部几何模式(patterns),这有利于整个网络有效地学习复杂的局部结构。其主要包含以下三个步骤:
- 查找邻居点:论文通过
KNN
算法来获取第 i i i 个点的所有邻居点(K 个),这里的 KNN 算法基于point-wise
的欧几里得距离 - 相对点位置编码:对于中心点 p i p_i pi 的 K K K 个邻居点 { p i 1 ⋯ p i k ⋯ p i K } \{p_i^1 \cdots p_i^k \cdots p_i^K\} {pi1⋯pik⋯piK},可通过以下运算来获取其相对点位置编码:
r i k = M L P ( p i ⨁ p i k ⨁ ( p i − p i k ) ⨁ ∥ p i − p i k ∥ ) \pmb{r}_i^k = MLP(p_i \bigoplus p_i^k \bigoplus (p_i - p_i^k) \bigoplus \parallel p_i - p_i^k \parallel) rrik=MLP(pi⨁pik⨁(pi−pik)⨁∥pi−pik∥)
✍️ p i p_i pi 和 p i k p_i^k pik 为点的 x-y-z
坐标, ⨁ \bigoplus ⨁ 为拼接操作, ∥ ⋅ ∥ \parallel \cdot \parallel ∥⋅∥ 用来计算邻居点与中心点的欧几里得距离
✍️相对点位置编码 r i k \pmb{r}_i^k rrik 的计算似乎有点冗余,但这有助于神经网络学习局部特征且在实践中获得更好的性能
- 点特征增强:对于相对点位置编码 r i k \pmb{r}_i^k rrik,将其与相应的点特征 f i k \pmb{f}_i^k ffik 拼接起来,从而获得增强的特征向量 f ^ i k \hat{\pmb{f}}_i^k ff^ik
😸最终,LocSE 模块的输出为一组邻居特征 F ^ i = { f ^ i 1 ⋯ f ^ i k ⋯ f ^ i K } \hat{\pmb{F}}_i = \{\hat{\pmb{f}}_i^1 \cdots \hat{\pmb{f}}_i^k \cdots \hat{\pmb{f}}_i^K \} FF^i={ff^i1⋯ff^ik⋯ff^iK}。
Attentive Pooling
🙀该模块用来聚合(aggregate)邻居特征 F ^ i \hat{\pmb{F}}_i FF^i,相比于平常的最大池化或平均池化操作(会使大部分信息丢失),论文通过注意力机制来学习局部特征的重要性。其主要包含以下两个步骤:
- 计算注意力分数:通过一个共享的函数 g ( ) g() g() 来学习每个特征的注意力分数,该函数由
MLP
和softmax
组成,分数计算公式如下:
s i k = g ( f i k ^ , W ) \pmb{s}_i^k = g(\hat{\pmb{f}_i^k}, \pmb{W}) ssik=g(ffik^,WW)
✍️ f ^ i k \hat{\pmb{f}}_i^k ff^ik 为增强后的邻居特征向量, W \pmb{W} WW 为 MLP 的权重
- 加权求和(Weighted Summation):学习得到的注意力分数可看成
soft mask
来自动选择较为重要的特征,其计算公式如下:
f ~ i = ∑ k = 1 K ( f ^ i k ⋅ s i k ) \tilde{\pmb{f}}_i = \sum_{k=1}^K (\hat{\pmb{f}}_i^k \cdot \pmb{s}_i^k) ff~i=k=1∑K(ff^ik⋅ssik)
Dilated residual block
😸由于大规模的点云在采样时会大量地减少,因此需要显著地增加每个点的感受野,这样输入点云的几何细节更有可能被保留(即使一些点被删除)。论文通过堆叠多个局部空间编码模块和注意力池化模块,并使用残差连接来构建扩展残差块。
✍️理论上讲,堆叠的单元(L&A)越多,其感受野就会越大,但其计算效率则会下降。RandLA-Net 中堆叠了 2
层单元(L&A),从而平衡了精度和效率。
RS
😸论文通过比较不同的采样方法,最终确定使用随机采样 RS
来采样。总的来说最远点采样(FPS
)、逆密度重要性采样(IDIS
)和 Generator-based Sampling(GS
)这三种方法对于大规模的点云来说计算量太大,Continuous Relaxation based Sampling(CRS
)方法需要太多的内存空间,Continuous Relaxation based Sampling(PGS
)训练起来太难,相比之下随机采样 RS
具有以下两个优点:
- 计算效率非常高,因为它与输入点的总数无关,其计算复杂度为 O ( 1 ) \cal O(1) O(1)
- 不需要额外的内存来进行计算
🙀但随机采样也有它的缺点,所以 RandLA-Net 通过引入 LFA 来解决其问题。采样的对比具体查看 RandLA-Net。
😻论文:https://arxiv.org/pdf/2104.04891.pdf
😻代码:https://github.com/QingyongHu/SQN