标签:Hash Convolution 卷积 稀疏 Sparse output input 对应
参考: 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位置是一致的,因此对两者进行加和操作。
标签:Hash,Convolution,卷积,稀疏,Sparse,output,input,对应 来源: https://blog.csdn.net/xuxiaoxx/article/details/121850720
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。