三维点云的Sparse Convolution

参考: https://towardsdatascience.com/how-does-sparse-convolution-work-3257a0a8fd1
注: 插图和部分内容理解来自于上述博客

背景

三维点云的数据相对于2D数据而言是极其稀疏的,因此提出可以针对稀疏数据来进行卷积,而不是扫描所有图像像素或者空间体素。

以一个例子来进行3D稀疏卷积讲解

1. 初步定义

输入定义
以下图为一个输入,其中除了P1和P2两个点,其余点都是(0,0,0),而非零元素也称为active input sites 。并且根据稀疏格式,数据列表为[[0.1, 0.1, 0.1], [0.2, 0.2, 0.2]],索引列表是[1, 2], [2, 3],并且按照YX顺序进行排序。
在这里插入图片描述
卷积核定义:
在这里插入图片描述
输出定义:
与传统卷积不同,稀疏卷积有两种输出:
regular output definition: 与普通的卷积是相似的,只要对应的kernel覆盖一个active input site,就可以计算出output site。
submanifold output definition: 只有当kernel的中心覆盖到active input site时,卷积输出才会被计算。
在这里插入图片描述
如上图所示可以看到上部分为regular output definition经过卷积得到的输出结果,而下面是submanifold output definition得到的输出结果,其中A1A2表示两者输出的总和,两种颜色分别对应两个通道。

2. Hash table构建

在这里插入图片描述
Input Hash Table
如上图左边所示,对于输出的 H a s h i n Hash_{in} Hashin,其中 v i n v_{in} vin为输入的稀疏数据的下标,而 k e y i n key_{in} keyin表示对应的数据在输出矩阵中的二维位置。
根据上面的假想数据可以知道,对应的P1和P2数据分别位于矩阵的(2,1)和(3,2),并且为YX顺序。

Output Hash Table
接着进行卷积操作得到对应的Output Hash Table。首先对P1传导过程进行演示:
在这里插入图片描述
当没遇到P1时,矩阵不再发生变化。
在这里插入图片描述
然后对每一个卷积得到的元素进行记录:
在这里插入图片描述
同样对P2进行相同操作:
在这里插入图片描述
于是两张表进行融合消除,便得到Output hash table。

3.Rulebook构建

在这里插入图片描述
右侧为rulebook,其中,第一列为索引(相对于卷积核),第二列为计数器count,表示改位置多少次被访问到,第三列第四列分别为input hash table和output hash table的index。

4.稀疏卷积计算过程

在这里插入图片描述
如上图所示为整个稀疏卷积的过程,与普通卷积的滑动窗口不同,稀疏卷积根据生成的rulebook对对应的稀疏数据进行稀疏卷积计算。
以其中红色箭头为例。首先根据记录的 v i n v_{in} vin找到对应的key值,然后根据key找到对应的input matrix数据。接着根据rulebook记录的Getoffset找到kernel数值。这时对找到的input matrix进行计算,便可以得到计算结果。
而对于蓝色箭头而言,计算过程与红色箭头一致,而到最后一步时,因为两者对应的 v o u t v_{out} vout位置是一致的,因此对两者进行加和操作。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值