😸PVD(
CVPR2022)主要贡献:
- 研究了如何将知识蒸馏应用于 3D 点云语义分割中从而进行模型压缩
- 提出
point-to-voxel的知识蒸馏,从而应对点云数据稀疏(sparsity)、随机(randomness)和变化密度(varying density)的固有属性- 提出了超体素(
supervoxel)划分方法,使affinity distillation过程易于操作- 提出
difficulty-aware的采样策略,使包含少数种类(minority classes)和远处物体(distant objects)的超体素更容易被采样到,从而提高这些较难处理的物体的蒸馏效果(distillation efficacy)
😺PVD 在 nuScenes 和 SemanticKITTI 这两个流行的 LiDAR 分割基准上进行了广泛的实验,其在 Cylinder3D、SPVNAS 和 MinkowskiNet 这三个有代表性的骨干上,始终以较大的优势胜过以前的蒸馏方法。值得注意的是,在具有挑战性的 nuScenes 和 SemanticKITTI 数据集上,它可以在具有竞争力的 Cylinder3D 模型上实现大约 75% 的 MACs 减少和 2 倍的速度提升,在 Waymo 和 SemanticKITTI(single-scan)挑战中排名第一,在 SemanticKITTI(multi-scan)挑战中排名第三。
网络结构
😸下图以 Cylinder3D 为例描述 PVD 的网络结构,其包含教师(teacher)和学生(student)这 2 个网络。其中,学生网络的每一层通道数为教师网络的一半,而教师网络主要由 5 部分组成,分别是点特征提取模块( point feature extraction module)、体素化模块(point-to-voxel transformation module)、编解码器模块(encoder-decoder module)、DDCM 模块、点优化模块(point refinement module)

- 将输入的点云划分到固定数量的超体素中,并根据
difficulty-aware采样策略来采样K个超体素(图中K=1,由红框标注出来) - 将采样到的超体素送入点特征提取模块(
MLPs)中,得到pointwise的输出 - 通过体素化模块将
pointwise的输出进行体素化 - 体素化后的数据再输入编解码器模块(使用非对称三维卷积网络)得到
voxelwise输出 - 体素再经过
DDCM模块来捕获高秩的上下文特征,从而有足够的能力来捕获上下文信息 - 将上下文特征送入点优化模块(
MLPs)中得到pointwise的输出,从而预测相关的语义信息
✍️在知识蒸馏的架构中,学生网络需要从教师网络中学习两个层次的知识,第一个层次是 pointwise 和 voxelwise 的输出,第二个层次是 inter-point 和 inter-voxel 的 affinity matrix。关于 Cylinder3D 的相关简介可参考我之前的一篇博客【3D 语义分割——Cylinder3D】
Point-to-Voxel Output Distillation
😿相比于图像数据,点云本身具有稀疏性,从而导致较难通过稀疏的监督信号来训练一个有效的学生网络。此外,尽管点云数据包含细粒度的环境的感知信息,但由于点云中有成千上万的点,导致这样的知识学习起来效率很低。为了提高学习效率,除了 pointwise 输出,论文建议蒸馏(distil)voxelwise 输出,因为体素数量更少且更容易学习。pointwise 和 voxelwise 的蒸馏损失如下:
L o u t p ( O S p , O T p ) = 1 N C ∑ n = 1 N ∑ c = 1 C K L ( O S p ( n , c ) ∣ ∣ O T p ( n , c ) ) L o u t v ( O S v , O T v ) = 1 R A H C ∑ r = 1 R ∑ a = 1 A ∑ h = 1 H ∑ c = 1 C K L ( O S v ( r , a , h , c ) ∣ ∣ O T v ( r , a , h , c ) ) \begin{aligned} L_{out}^p(O_S^p, O_T^p) &= \frac{1}{NC}\sum_{n=1}^N \sum_{c=1}^C KL(O_S^p(n, c)||O_T^p(n, c)) \\ L_{out}^v(O_S^v, O_T^v) &= \frac{1}{RAHC}\sum_{r=1}^R \sum_{a=1}^A \sum_{h=1}^H \sum_{c=1}^C KL(O_S^v(r, a, h, c) || O_T^v(r, a, h, c)) \end{aligned} Loutp(OSp,OTp)Loutv(OSv,OTv)=NC1n=1∑Nc=1∑CKL(OSp(n,c)∣∣OTp(n,c))=RAHC1r=1∑Ra=1∑Ah=1∑Hc=1∑CKL(OSv(r,a,h,c)∣∣OTv(r,a,h,c))
✍️其中, L o u t p L_{out}^p Loutp 为 pointwise 蒸馏损失, L o u t v L_{out}^v Loutv 为 voxelwise 蒸馏损失。

本文介绍了一种名为PVD的方法,利用知识蒸馏技术改进3D点云语义分割模型,针对点云数据稀疏性和变化特性提出point-to-voxel转换和超体素划分,通过difficulty-aware采样增强对难处理区域的学习。PVD在nuScenes和SemanticKITTI上表现出色,尤其在模型压缩和速度提升方面。
最低0.47元/天 解锁文章
4348

被折叠的 条评论
为什么被折叠?



