Projection-based networks
Voxel-based networks
Point-based networks
Transformer and self-attention
自注意力那么吸引我们兴趣的原因在于位置信息是通过被处理为集合的元素特性提供的, 三维点云本身就是带有位置信息的集合。
尽管之前已经有很多工作将注意力应用到点云上,但是他们都是将全局注意力用在整个点云上,计算量很大,对于大规模的点云场景理解不适用。此外,他们还用了scalar dot-product attention,不同的通道享有相同的聚合权值。
本文使用了局部自注意力机制 ,vector attention 和 合适的位置编码
令 X = { x i } i \mathcal{X}=\left\{\mathbf{x}_{i}\right\}_{i} X={xi}i表示一组特征向量,标准的scalar dot-product attention层可以表示为:
y i = ∑ x j ∈ X ρ ( φ ( x i ) ⊤ ψ ( x j ) + δ ) α ( x j ) \mathbf{y}_{i}=\sum_{\mathbf{x}_{j} \in \mathcal{X}} \rho\left(\varphi\left(\mathbf{x}_{i}\right)^{\top} \psi\left(\mathbf{x}_{j}\right)+\delta\right) \alpha\left(\mathbf{x}_{j}\right) yi=xj∈X∑ρ(φ(xi)⊤ψ(xj)+δ)α(xj)
其中 y i \mathbf{y}_{i} yi 是输出特征, φ , ψ \varphi, \psi φ,ψ, 和 α \alpha α是pointwise特征变换, δ \delta δ 是位置编码函数, ρ \rho ρ 是归一化函数。Scalar attention层计算了通过 φ \varphi φ 和 ψ \psi ψ变换后特征间的scalar product,还使用输出作为注意力权值,用于聚合由 α \alpha α变换后的特征。
在vector attention中,注意力权值的计算不一样,特别地,注意力权值是可以调制各自特征通道的向量:
y i = ∑ x j ∈ X ρ ( γ ( β ( φ ( x i ) , ψ ( x j ) ) + δ ) ) ⊙ α ( x j ) , \mathbf{y}_{i}=\sum_{\mathbf{x}_{j} \in \mathcal{X}} \rho\left(\gamma\left(\beta\left(\varphi\left(\mathbf{x}_{i}\right), \psi\left(\mathbf{x}_{j}\right)\right)+\delta\right)\right) \odot \alpha\left(\mathbf{x}_{j}\right), yi=xj∈X∑ρ(γ(β(φ(xi),ψ(xj))+δ))⊙α(xj),
其中 β \beta β是关联函数, γ \gamma γ是映射函数,用于生成特征聚合的向量。
Point transformer中是基于vector的self-attention,使用了subtraction relation, 在 γ \gamma γ和 α \alpha α中都加上了位置编码 δ \delta δ:
y i = ∑ x j ∈ X ( i ) ρ ( γ ( φ ( x i ) − ψ ( x j ) + δ ) ) ⊙ ( α ( x j ) + δ ) \mathbf{y}_{i}=\sum_{\mathbf{x}_{j} \in \mathcal{X}(i)} \rho\left(\gamma\left(\varphi\left(\mathbf{x}_{i}\right)-\psi\left(\mathbf{x}_{j}\right)+\delta\right)\right) \odot\left(\alpha\left(\mathbf{x}_{j}\right)+\delta\right) yi=xj∈X(i)∑ρ(γ(φ(xi)−ψ(xj)+δ))⊙(α(xj)+δ)
这里,子集 X ( i ) ⊆ X \mathcal{X}(i) \subseteq \mathcal{X} X(i)⊆X是一组 x i \mathbf{x}_{i} xi的局部相邻点,因此就可以得到局部自注意力特征。映射函数 γ \gamma γ是一个带有两层linear和一层ReLU的MLP。
在三维点云处理中,由于三维点云坐标本身就可以为位置编码提供信息,所以使用可训练的参数位置编码方法:
δ = θ ( p i − p j ) \delta=\theta\left(\mathbf{p}_{i}-\mathbf{p}_{j}\right) δ=θ(pi−pj)
这里, p i \mathbf{p}_{i} pi和 p j \mathbf{p}_{j} pj是点 i i i和点 j j j的坐标。编码函数 θ \theta θ是MLP。特别注意的是,我们发现,位置编码对于注意力生成分支和特征变换分支都很重要,所以在这两个地方都加了位置编码。位置编码 θ \theta θ是通过子网络端到端训练的。
构造了一个residual point transformer block,其中point transformer layer是核心。
Transformer块包含了以下几个部分:
输入是一组特征向量 x \mathbf{x} x和三维坐标 p \mathbf{p} p。
Point transformer block更有利于相邻特征矩阵的信息交换,从而生成新的特征向量作为输入。
基于Point transformer block构造了一个完整的三维点云理解网络,主要的结构包括:
Point transformer networks中的特征编码器有五步,每一步下采样率为[1, 4, 4, 4, 4],因此每一步的点云基数为[N, N/4, N/16, N/64, N/256],其中N是点云的总数。
Transition down用于特征编码,假设输入是 P 1 \mathcal{P}_{1} P1,输出是 P 2 \mathcal{P}_{2} P2
Transition up用于特征解码。
对于语义分割这些任务,利用U-Net设计,编码器和解码器对称的结构,输入是 P 2 \mathcal{P}_{2} P2,输出是 P 1 \mathcal{P}_{1} P1:
对于语义分割任务,在解码器后面加一个MLP得到最后的logits。
对于分类任务,对特征间进行全局平均池化得到全部点集的全局特征向量,在后面加一个MLP得到最后的logits。
PyTorch
Momentum = 0.9
Weight decay = 0.0001
Semantic segmentation
Iterations = 40K
Initial learning rate = 0.5, dropped by 10x at steps 24K and 32K
3D shape classification & 3D object part segmentation
Epochs = 200
Initial learning rate = 0.05,dropped by 10x at epochs 120 and 160
S3DIS数据集包含了三个不同建筑物,六个区域,271个房间的语义信息。其中,每个点都被分配了13个类别。
消融实验主要针对S3DIS数据集在语义分割任务上的性能。
邻域的数量
Softmax 正则项 ρ \rho ρ
Point transformer w/o Softmax regularization 66.5%/72.8%/89.3%
Point transformer w Softmax regularization (70.4%/76.5%90.8%)
Position encoding δ \delta δ
加两个位置编码很管用。
Attention type
Transformer 可能是最适合点云处理的方法,因为点云本质上就是在度量空间上的点集嵌入,而自注意力机就是一个点集处理器。