ECCV2020语义分割——Searching Efficient 3D Architectures with Sparse Point-Voxel Convolution

(一)动机 Motivation

  1. 基于点的方法最多将90%的运行时浪费在构造不规则数据上,而不是在实际特征提取。
  2. 基于体素的方法通常会遭受严重的信息丢失:即,密集体素的分辨率受到内存的严格限制;稀疏体素需要进行积极的下采样才能获得更大的接收场,从而导致更深层的分辨率较低。在低分辨率下(参见图1),多个点甚至多个小物体可能会合并为一个网格,并且变得难以区分。在这种情况下,与大物体(例如汽车)相比,小实例(例如,行人和骑自行车的人)处于劣势。因此,当硬件资源有限且分辨率低时,以前的3D模块的有效性会降低。

(二)创新 Innovation

  1. 提出了稀疏点体素卷积(SPVConv),这是一个轻量级的3D模块,它为普通的稀疏卷积配备了高分辨率的基于点的分支。模块可以提高小物体上的性能,这在有限的硬件资源下曾经是一个挑战。
  2. 引入了第一个用于3D场景理解的AutoML框架3DNAS,该框架在特定资源限制下提供了最佳的3D模型。
  3. 实验结果验证了生成的SPVNAS模型的快速性和准确性:它比最先进的MinkowskiNet高出3.3%,在SemanticKITTI排行榜上排名第一。该算法比MinkowskiNet减少了8倍的计算量,提高了3倍测量速度。
  4. 将我们的方法应用到3D目标检测,它在KITTI上实现了对一阶段检测基线的改进。

(三)SPVConv: Designing Effective 3D Modules

首先分析Point-Voxel卷积和稀疏卷积,并分析它们的瓶颈。

缺陷: 当内存受限制时,它们都会出现信息丢失现象(由粗体素化或过度的下采样引起)。

因此,论文引入了稀疏点体素卷积(SPVConv),以有效处理大型3D场景(图2所示)。

3.1 Point-Voxel Convolution: Coarse Voxelization
  • PVCNN(基于Point-Voxel卷积)在单个GPU(具有12 GB内存)的基于体素的分支中最多可以提供1283个体素。
  • 在室外场景较大(大小为100m×100m×10m)的情况下,每个体素网格将对应一个较大的区域(大小为0.8m×0.8m×0.1m)。
  • 在这种情况下,小实例(例如,行人)将仅占据几个体素网格(请参见图1)。
  • 从这几点出发,PVCNN几乎无法从基于体素的分支中学习任何有用的信息,从而导致性能相对较低(请参见表1)。
  • 或者,可以逐块处理大型3D场景,以使每个滑动窗口的比例都较小。为了保留细粒度的信息(即体素大小小于0.05m),必须对244个滑动窗口中的每一个运行PVCNN。处理单个场景需要35秒,这对于大多数实时应用程序(例如,自动驾驶)来说是无法承受的。
3.2 Sparse Convolution: Aggressive Downsampling

体积卷积一直被认为效率低下,无法扩大规模。最近,研究人员提出了稀疏卷积,它跳过了未激活的区域以显着减少内存消耗。

  1. 首先找到输入点和输出点之间的所有活动突触(表示为内核映射)。
  2. 然后根据该内核图执行卷积。
  3. 为了保持激活稀疏,它仅考虑也属于输入的这些输出点。这样,稀疏卷积可以提供比vanilla volumetric convolution高得多的分辨率。

但是,由于计算资源有限,网络不能很深。因此,网络必须非常依赖下采样以便获得足够大的接收场,这是非常有损耗的。例如,最先进的MinkowskiNet 对输入点云应用四个下采样层,之后,体素大小将变为0.05×24 = 0.8m。类似于Point-Voxel卷积,此分辨率太粗糙而无法捕获小的实例(图4)。

3.3 Solution: Sparse Point-Voxel Convolution

为了克服这两个模块的局限性,我们在图2中展示了稀疏PointVoxel卷积(SPVConv):

  • 基于点的分支始终保持高分辨率表示,
  • 基于稀疏体素的分支将稀疏卷积应用于跨不同接收场大小的模型。

两个分支机构通过稀疏体素化和devoxelization进行通信的成本可以忽略不计。

论文使用GPU哈希表来加速稀疏体素化和devoxelization。

  • 首先为稀疏体素化张量S中的所有激活点构造一个哈希表,该哈希表可以在O(n)时间内完成。
  • 之后,遍历T中的所有点,对于每个点,使用其体素化坐标作为关键字来查询稀疏体素化张量中的相应索引。
  • 由于在哈希表上查找需要O(1)时间,因此此查询步骤总共需要O(m)时间。因此,坐标索引的总时间将从O(mn)减少为O(m + n)。

Feature Aggregation.

  • 使用一系列残差稀疏卷积块对稀疏体素化张量执行邻域特征聚合。
  • 使用与稀疏体素化相同的哈希表实现来并行化GPU上的稀疏卷积中的内核映射操作。

Sparse Devoxelization.

  • 通过聚合的特征(以稀疏张量的形式),将它们转换回基于点的表示形式,以便可以将来自两个分支的信息融合在一起。
  • 选择使用三线性插值而不是单纯的最近插值,将每个点的特征与其8个相邻体素网格进行插值。

Point Transformation and Feature Fusion.

  • 在lower point-based的分支中,直接在每个点上应用MLP以提取单个点特征。
  • 然后,将两个分支的输出用加法融合,以合并提供的补充信息。
  • 与普通的稀疏卷积相比,MLP层仅花费很少的计算开销,但在信息流中引入了重要的细节(图5)。

(四)网络 3D-NAS: Searching Efficient 3D Architectures

即使使用上述的模块,设计高效的神经网络仍然具有挑战性。需要仔细调整网络架构(例如,所有层的通道数和内核大小),以满足实际应用的约束条件(例如,延迟,能耗和准确性)。因此,引入了3D神经结构搜索(3D-NAS),以自动设计高效的3D模型(图3所示)。

搜索空间中,结合了细粒度的通道数和弹性网络深度。但是,不支持不同的内核大小。

4.1 Design Space

Fine-grained Channel Numbers.

计算成本随着通道数量的增加而平方增加。因此,信道号的选择对网络效率有很大的影响。

  • 大多数现有的神经体系结构框架[6]仅支持粗粒度的通道数选择:例如,在几(2-3)个选择中搜索ResNet / MobileNet块的扩展率。
  • 在这种情况下,只能更改块的中间通道数。而输入和输出通道数将保持不变。
  • 观察到这限制了搜索空间的多样性。为此,可以通过允许从大量选项(大小为O(n))中选择所有通道数来扩大搜索空间。
  • 这种细粒度的信道数目选择大大增加了每个块的候选数目:例如,对于具有两个连续卷积的块,从常数(2-3)增加到O( n 2 n^2 n2)。

Elastic Network Depths.

在设计空间中支持不同的网络深度。对于3D CNN,仅减少通道数并不能实现显着的测量加速,这与2D CNN完全不同。

  • 例如,通过将MinkowskiNet 中的所有通道数缩小4倍和8倍,MAC的数量将分别减少到7.5 G和1.9G。但是,尽管MAC的数量已大大减少,但它们在GPU上测得的延迟却非常相似:105 ms和96 ms(在单个GTX1080Ti GPU上测得)。这表明,即使MAC的数量很小,仅靠减少信道数量也无法为我们提供非常有效的模型。这可能是因为3D模块通常比2D模块具有更多的内存限制。
  • MAC的数量与通道数成二次方降低,而内存则呈线性下降。因此,论文选择将弹性网络深度合并到设计空间中,以便可以删除这些具有很小的计算量(和较大的存储成本)的层并将其合并到它们的相邻层中。

Small Kernel Matters.

内核大小通常包含在2D CNN的搜索空间中。这是因为在GPU上,具有较大内核大小的单个卷积会比具有较小内核大小的多个卷积更有效。但是,3D CNN并非如此。

  • 从计算角度来看,一个内核大小为5的2D卷积比两个内核大小为3的2D卷积仅需要1.4倍的MAC。而一次3D卷积内核大小为5时需要比内核大小为3的两个3D卷积多2.3倍的MAC(如果应用于密集的体素网格)。这种较大的计算成本使其不太适合在3D CNN中使用大内核大小。
  • 此外,3D模块的计算开销也与内核大小有关。例如,稀疏卷积需要O(k3n)时间来构建内核映射,其中k是内核大小,n是点数,这表明其成本相对于内核大小呈立方增长。

基于这些原因,论文将所有卷积的内核大小保持为3,并且不允许在搜索空间中更改内核大小。即使内核尺寸很小,网络仍然可以通过更改网络深度来实现较大的接收范围,这可以达到与更改内核尺寸相同的效果。

4.2 Training Paradigm

在细粒度的设计空间上进行搜索非常具有挑战性,因为不可能从头开始训练每个采样的候选网络。

  • 论文将所有候选网络合并到一个单一的超级网络中,对这个超级网络进行一次训练后,每个继承的权重都可以直接提取出来。
  • 这样,总训练成本可以从O(n)减少到O(1),其中n是候选网络的数量。

Uniform Sampling.

在每次训练迭代中,从超级网络中随机采样一个候选网络:

  • 随机选择每个层的通道数,然后随机选择每个阶段的网络深度(即要使用的块数)。
  • 训练期间要采样的候选网络的总数非常有限;因此,选择在不同的GPU上采样不同的候选网络,并在每个步骤中平均其梯度,以便可以采样更多的候选网络。
  • 因为3D数据集通常包含的训练样本少于2D数据集:在SemanticKITTI上为20K,在ImageNet 上为1M。

Weight Sharing.

由于候选网络的数量巨大,因此每个候选网络将仅针对总计划的一小部分进行优化。因此,仅均匀采样不足以充分训练所有候选网络(即,达到与从头开始训练相同的性能水平)。 为了解决这个问题,采用权重共享技术,这样即使没有采样,每个候选网络也可以在每次迭代时进行优化。

  • 具体来说,给定每个卷积层的输入通道数Cin和输出通道数Cout,只需从权重张量中索引第一个Cinand Coutchannels即可执行卷积。
  • 对于每个批次归一化层,我类似地基于采样的通道数c从权重张量裁剪第一个c通道。
  • 最后,对于每个阶段的采样深度d,选择保留前d层,而不是对其中的d进行随机采样。
  • 这确保了每个层将总是对应于阶段内相同的深度索引。
4.3 Search Algorithm

在超级网络经过充分训练后,使用进化架构搜索来寻找在一定资源约束下的最佳架构。

Resource Constraints.

用MACs 的数目作为资源限制。对于3DCNNs,不能简单地通过输入大小和网络架构来确定MACs的数量:

  • 例如,稀疏卷积仅在活动突触上执行计算;因此,它的计算也由输入稀疏模式决定。

为了解决这个问题,首先估计每个卷积层在整个数据集上的平均核映射大小,然后可以基于这些统计数据来测量MACs的数量。

Evolutionary Search.

论文用evolutionary algorithm自动搜索架构。用n个随机抽样的候选网络初始化初始种群。

  1. 在每次迭代中,评估种群中的所有候选网络,并选择具有最高mIoUs的k个模型(即最合适的个体)。
  2. 然后用(n/2)突变和(n/2)交叉产生下一次迭代的群体。
  3. 对于每个突变,我从前k个候选中随机选择一个,并以预定义的概率改变其每个结构参数(例如,信道号、网络深度);
  4. 对于每个交叉,从前k个候选中选择两个,并通过将它们随机融合在一起来生成一个新模型。
  5. 最后,从最后一次迭代的总体中获得最佳模型。
  6. 在进化搜索过程中,保证种群中的所有候选网络始终满足给定的资源约束(将对另一个候选网络重新采样,直到资源约束得到满足)。

(五)实验 Experiments

  • 3D语义分割
  • 3D目标检测
  • on a single GTX1080Ti GPU

(六)总结 Conclusion

  1. 提出了稀疏点体素卷积,一个轻量级的3D模块,专门用于小对象识别。
  2. 利用建立在SPVConv上的SPVCNN,解决了稀疏卷积不能始终保持高分辨率表示和点体素卷积不能扩展到大型3D场景的问题。
  3. 引入了3D-NAS,这是第一个用于3D场景理解的模型搜索框架,极大地提高了SPVCNN的效率和性能。
  4. 在室外3D场景基准上的大量实验表明,生成的SPVNAS模型重量轻、速度快、功能强大。
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值