阅读笔记--[CVPR2018] 3D Semantic Segmentation with Submanifold Sparse Convolutional Networks

一、Introduction

  • 卷积网络(ConvNets)构成了最先进的方法,用于广泛的任务,包括分析具有空间和/或时间结构的数据,如照片、视频或3D表面模型。虽然这些数据通常包含人口稠密(2D或3D)的网格,但其他数据集可能是稀疏的(点云)。
  • 传统的卷积网络实现方法针对填充点稠密网格的数据进行了优化,无法有效处理稀疏数据。
  • 之前的一些方法:在FLOPs和/或内存方面所需的计算资源更少[3,4];使用im2col操作的稀疏版本,将计算和存储限制在"active" sites[4],或者使用[22]的投票算法来修减不必要的乘0;OctNets[18]修改卷积运算符,以在感兴趣区域之外的网格部分产生“平均”隐藏状态。
  • 卷积网络的先前稀疏实现的缺点之一是它们通过应用“完全”卷积来“扩展”每层中的稀疏数据。
  • 使用子流形稀疏卷积(SSC)作为子流形稀疏卷积网络(sscn)的基础,这些网络被优化用于三维点云的高效语义分割。
    在这里插入图片描述

在这里插入图片描述

[3]:V ote3Deep: Fast Object Detection in 3D Point Clouds using Efficient Convolutional Neural Networks.
[4]:Sparse 3D Convolutional Neural Networks.
[18]:Octnet: Learning Deep 3D Representations at High Resolutions.
[22]:V oting for voting in online point cloud object detection.

二、Spatial Sparsity for Convolutional Networks

我们将d维卷积网络定义为以a(a=d+1)维张量作为输入的网络:输入张量包含d时空维度(如长度、宽度、高度、时间等)和一个额外的特征空间维度(如RGB颜色通道或曲面法向量)。输入对应于一个d维网格的site,每个site都与一个特征向量相关联。如果特征向量中的任何元素不处于基态,例如,如果它不为零,我们就在输入中定义一个位点为活动的。如果数据不是自然稀疏的,可以使用阈值来消除特征向量与基态距离很小的输入点。注意,即使输入张量是(d + 1)维的,活动也是一种d维的现象:沿着特征维的整条线要么是活跃的,要么是不活跃的。注意,即使输入张量是(d + 1)维的,活动也是一种d维的现象:沿着特征维的整条线要么是活跃的,要么是不活跃的。
同样,d维卷积网络的隐藏层也用特征空间向量的d维网格来表示。当通过网络传播输入数据时,如果作为输入的层中的任何一个站点是活动的,那么隐藏层中的站点就是活动的。(注意,当使用size-3卷积时,每个点都连接到下面隐藏层的三维点。)因此,隐含层中的活动遵循归纳定义,其中每一层决定下一层的活动状态集。在每一隐藏层中,非活动位点都有相同的特征向量:对应于基态的特征向量。训练时每一次向前通过只需计算基态值,测试时每一次向前通过只需计算基态值。这允许大量节省计算和内存使用。
我们认为上面描述的框架是过度限制的,特别是因为卷积运算没有被修改以适应输入数据的稀疏性。如果输入的数据中包含单个活性位点,那么应用3dconvolution后就会出现3dactive位点。同样大小的第二次卷积将产生5个活性位点,以此类推。当实现现代卷积网络架构(包括数十甚至数百个卷积层,如VGG网络、ResNets或DenseNets)时,活动站点数量的快速增长是一个很糟糕的前景[8,9,20]。
当然,卷积网络是不经常应用于输入,只有一个单一的活性部位,但上述扩张问题是同样的问题,当输入数据由一维曲线与两个或两个以上的空间维度,或二维表面在三个或更多维度。我们把这个问题称为“子流形膨胀问题”。图2说明了这个问题:即使我们在这个网格上应用小的3×3卷积,网格的稀疏性也会迅速消失。
在这里插入图片描述

三、Submanifold Convolutional Networks

1、Sparse Convolution Operations

  1. 稀疏卷积SC(m,n,f,s),其中m为输入特征平面数量,n为输出特征平面数量,f为滤波器的大小,s为稀疏卷积的步长。
  2. SC卷积以与常规卷积相同的方式计算active site集:它在大小为f^d的感知域(感受野)中查找是否存在任何活动site。如果输入的大小为l,则输出的大小为(l-f + s)/s。
  3. 与常规卷积或其他稀疏卷积不同,SC卷积通过假设来自这些site的输入为零来丢弃非活动site。计算成本降低了大约50%。

Submainfold sparse convolution
4. 设f表示奇数,将子流形稀疏卷积SSC(m,n,f)定义为SC(m,n,f,s=1)卷积的一种变体。
5. 首先,在每侧填充输入(f-1)/2个零,以便输出与输入具有相同的大小。
6. 接下来,如果一个site对应的输入中相应site处于活动状态(即感受野的中心site处于活动状态),就将输出site限制为活动状态。每当确定输出site是活动时,其输出特征向量由SSC卷积计算。
在这里插入图片描述
在这里插入图片描述

Other operators
7. 要使用SC和SSC构建卷积网络,我们还需要激活函数,批量规范化和池化。
8. 激活函数和通常定义的一样,但仅应用于active site集。
9. 在active site集上应用常规批量规范化(batch normalization)来定义批量规范化。
10. 最大池MP(f,s)和平均池AP(f,s)操作被定义为SC(·,·,f,s)的变体。MP在感受野中获取零向量和输入特征向量的最大值。AP计算有效输入向量之和的(f^(-d))倍。我们还将反卷积运算DC(·,·,f,s)定义为SC(·,·,f,s)卷积的逆。
11. 来自DC卷积的一组有效输出site与相应SC卷积的输入有效site集完全相同:输入和输出site之间的连接简单地被反转。

2、Implementation

为了有效地实现(S)SC卷积,将输入/隐藏层的状态存储为两部分:哈希表和矩阵。矩阵的大小为a×m,并且每个活动site包含一行。哈希表包含所有活动站点对(location,row):location是整数坐标的元组,row表示特征矩阵中的相应行。
为了实现SC(m,n,f,s)卷积:

  1. 通过输入哈希表迭代一次。构建输出哈希表和规则手册。
  2. 将输出矩阵初始化为全零。

为了实现SSC卷积:重新使用输入哈希表作为输出,并构造适当的规则手册。由于稀疏模式不会更改,因此可以在网络中重复使用相同的规则手册,直到遇到池或子采样层。

四、Submanifold FCNs and U-Nets for Semantic Segmentation

在这里插入图片描述

  • 深蓝色方框表示一个或多个“预激活”SSC(·,·,3)卷积,可能存在残留连接。
  • 红框表示size-2, stride-2 downsampling卷积。
  • 绿色反卷积“反转”这些卷积。
  • 紫色上采样盒执行“最近邻居”上采样。最终的线性和softmax层分别应用于每个主动输入体素。

五、Experiments

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值