Sparse 3D convolution

彭礼骞
2023-12-01

稀疏卷积的做法有两种,区别是使用GEMM算法进行卷积还是Winograd算法进行卷积。

GEMM

指最后使用im2col的方式进行卷积。

Sparse 3D convolutional neural networks

论文提出了稀疏卷积的具体做法。

卷积的输入为一个矩阵M和一个哈希表H。矩阵M为输入feature map上不为空的部分的特征,大小为 a× n​, a代表不为空的位置个数,n代表特征维度C。哈希表H, key代表输入中不为空的位置的坐标,value代表这个坐标对应的特征是M中的哪一行特征。

计算流程:

1.(CPU上)对H中的key进行遍历,确定卷积输出feature map上不为空的位置的坐标与个数,组成Hout ​。同时确定rule book, rule book的每一行对应计算卷积输出feature map上不为空的某个位置所需要输入feature map上的位置,通过这个位置得到输入哈希表中该位置对应的key,填充到rule book中
2. (GPU上)。对rule book的每一行进行并行计算,得到每个不为空的输出位置的输出。

Submanifold Sparse Convolutional Networks

在稀疏卷积的基础上提出了子流形稀疏卷积。submanifold指稀疏卷积指输出feature map上不为空的位置与输入feature map上不为空的位置相同。稀疏卷积会使得数据的稀疏性指数下降,而submanifold会保持一样的稀疏性,但是如果只用submanifold稀疏卷积,卷积核的感受野会限制在一定范围内,所以要和maxpooling或stride=2的卷积一起使用,在保持稀疏性的同时增大感受野。

具体的实现流程类似,直接把Hin 复制到 ​Hout ,其他一致。

 类似资料:

相关阅读

相关文章

相关问答