SpSequenceNet(CVPR2020) 主要贡献:
- 设计一个捕获 4D 点云(3D 点云的视频)的时空信息来进行语义分割的网络
SpSequenceNet
- 引入跨帧全局注意力(CGA)模块,从先前的点云帧生成一个全局掩码,并将生成的掩码用于当前点云帧的语义分割
- 提出了跨帧局部插值(CLI)模块来融合两个点云帧之间的信息,它将时空信息结合起来并提高了语义分割的质量
- 在 SemanticKITTI 上达到了 SOTA,比现有方法高出1.5%(2020年)
点云在自动驾驶和机器人等许多应用场景中都很有用,因为点云提供了周围环境的 3D 信息。虽然对三维点云的研究已经很广泛,但对 4D 点云的场景理解是一个新兴的课题,其研究还不够深入。有了 4D 点云,机器人系统可以通过利用前一帧的时间信息来增强其鲁棒性。然而,现有的 4D 点云语义分割方法由于网络结构中存在时空信息的丢失,导致分割精度不高。
基于上述问题,论文提出了 SpSequenceNet
来解决。该网络是基于三维稀疏卷积设计的,其包含了跨帧全局注意力模块和跨帧局部插值模块这两个新颖的模块,用于捕获 4D 点云中的时空信息。该网络在 SemanticKITTI 上进行了大量的实验,其 mIoU 达到了 43.1%,比之前最佳的方法提高了 1.5%。
该网络采用基于体素的方法,其预测标签 p i , t p_{i, t} pi,t 是通过处理输入的点云帧 P t P_t Pt 和 P t − 1 P_{t-1} Pt−1 来实现的,其网络设计遵循 U-net
的风格且通过SSCN
来实现。为了平衡训练和推理的速度和性能,论文对 backbone 做了一些修改。具体来说,在原始版本的 SSCN 中,有 7 个包含跳连接(skip paths)到反卷积块的编码器块,这形成了一个对称的结构。然而,对称设计也存在一些缺点,譬如表示能力有限且浪费了大量计算资源。因此,论文减少了跳连接的数量。此外,在编码器中增加了一些用来提高表示能力并调整网络的块,而解码器是流线型的(streamlined)。
在构建了模型之后,下一步需要构建那些可以融合来自不同帧信息的块。在编码器阶段,网络接收具有两个不同分支的点云帧 P t P_t Pt 和 P t − 1 P_{t-1} Pt−1。为了构建更好的融合特征,论文将信息定义为全局信息和局部信息两部分。首先,针对全局信息设计了跨帧全局注意力模块,该模块可对特征进行选择,使 backbone 更加关注关键特征。其次,跨帧局部插值模块主要关注局部信息,用于融合编码器末端 P t − 1 P_{t-1} Pt−1 和 P t P_t Pt 的信息。SpSequenceNet 的网络结构如下所示,黄色块为基础神经网络块,灰色块是跨帧全局注意力模块 CGA,红色块为跨帧局部插值模块 CLI,蓝色块为解码器模块:
受自注意机制的启发,论文设计了 CGA 模块,该模块可提取时间维度上的全局语义信息,并为当前帧 P t P_t Pt 生成一个汇总(concludes)了 P t − 1 P_{t-1} Pt−1 特征的外观(appearance)信息的掩码。为了突出当前点云帧的特征 F t F_t Ft 的关键部分并抑制无关特征,CGA 模块使用 t − 1 t-1 t−1 的外观信息来引导模型。此外,全局语义分布到每个层级的特性中,论文选择与跳连接有关的层,并只对这些层应用 CGA,这降低了计算复杂度并提高了计算精度。下图是 CGA 的简单例子和结构:
v j = ∑ i m t − 1 ( g j ( f i , j , t − 1 ) ) m t − 1 \pmb{v}_j = \frac{\sum_{i}^{m_{t-1}}(g_j(f_{i, j, t-1}))}{m_{t-1}} vvj=mt−1∑imt−1(gj(fi,j,t−1))
✍️其中, m t − 1 m_{t-1} mt−1 是上一帧点云 P t − 1 P_{t-1} Pt−1 中点的数量; g j g_j gj 是一个特殊的适配器(将特征变成一个适合关注的特征),且 g j g_j gj 由 3D 卷积层、3D ReLU 层和 3D BN 层构成(如图 4 所示)。
a j = h θ ( v j ) = 1 1 + e − θ T v j a_j = h_{\theta}(\pmb{v}_j)=\frac{1}{1+e^{-\theta^T\pmb{v}_j}} aj=hθ(vvj)=1+e−θTvvj1
在编码器阶段的最后,论文设计了一个跨帧局部插值(CLI)模块,将信息进行局部合并,并捕获两个点云帧之间的时间信息。CLI 模块会为当前点云帧 P t P_t Pt 中的某点 p i , t p_{i, t} pi,t 寻找在上一帧点云 P t − 1 P_{t-1} Pt−1 中的 k k k 个最近邻居 p i ′ , t − 1 p_{i^{'}, t-1} pi′,t−1,然后生成一个新的局部特征来帮助模型融合时间信息。CLI 的结构如下所示:
D t − 1 , t = C t ⋅ C t T + C t − 1 ⋅ C t − 1 T − 2 C t γ D_{t-1, t} = \frac{C_t \cdot C_t^T + C_{t-1} \cdot C_{t-1}^T - 2C_t}{\gamma} Dt−1,t=γCt⋅CtT+Ct−1⋅Ct−1T−2Ct
✍️其中, C C C 是包含点坐标的度量; γ \gamma γ 是一个将距离度量重新缩放到一个近似尺度 [ 0 , 1 ] [0, 1] [0,1] 的超参数; D t − 1 , t D_{t-1, t} Dt−1,t 是一个近似的欧几里德距离矩阵,它消除了平方运算,从而加快了计算速度。
ω i , t − 1 = ( α − m i n ( d i , j , t , t − 1 , α ) ) ∗ β \omega_{i, t-1} = (\alpha -min(d_{i, j, t, t-1}, \alpha)) * \beta ωi,t−1=(α−min(di,j,t,t−1,α))∗β
✍️其中, α \alpha α 和 β \beta β 是手动设置用来调整权重 ω i , t − 1 \omega_{i, t-1} ωi,t−1 的参数, α \alpha α 对距离的权重有影响,而 β \beta β 用来修改范围以避免梯度消失,论文中设置 α = 0.5 \alpha=0.5 α=0.5 而 β = 2 \beta=2 β=2; d i , j , t , t − 1 d_{i, j, t, t-1} di,j,t,t−1 是 D t − 1 , t D_{t-1, t} Dt−1,t 中位置 i , j i, j i,j 的距离; m i n min min 操作用以确保不会出现负的权重。
L i , t − 1 = ∑ i k f i , t − 1 ∗ ω i , t − 1 L_{i, t-1} = \sum_{i}^{k}f_{i, t-1} * \omega_{i, t-1} Li,t−1=i∑kfi,t−1∗ωi,t−1
✍️在获取到 CLI 的特征之后,论文将其与当前帧中点特征 f i , t f_{i, t} fi,t 拼接在一起,再通过一个残差块来提取输出特征。
论文地址:https://openaccess.thecvf.com/content_CVPR_2020/papers/Shi_SpSequenceNet_Semantic_Segmentation_Network_on_4D_Point_Clouds_CVPR_2020_paper.pdf
代码地址:https://github.com/dante0shy/SpSequenceNet