稀疏3d卷积

博客主要介绍了稀疏3D卷积网络,包括稀疏卷积的输入,其包含坐标和特征两部分,还提及了稀疏卷积的spatial_size确定方法。此外,详细介绍了3D稀疏卷积,如子流形卷积、稀疏卷积、批归一化、稀疏到稠密转化等操作及相关参数设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

稀疏3d卷积网络

输入

稀疏卷积的输入包括两部分,一个是坐标,另一个是特征。

self.scn_input = scn.InputLayer(3, sparse_shape.tolist()) # [h,w,l]

coors = coors.int()[:, [1, 2, 3, 0]] # [h, w, l, batch] 将 batch_size调换到最后一个位置

ret = self.scn_input((coors.cpu(), voxel_features, batch_size)) #[45287, 4] [45287, 1] 2

稀疏卷积的spatial_size确定:

self.spatial_size = self.sparseModel.input_spatial_size(torch.LongTensor([1,1]))

3d稀疏卷积

m = None
m = scn.Sequential()
m.add(scn.SubmanifoldConvolution(3, i, o, 3, False))
m.add(scn.BatchNormLeakyReLU(i ,leakiness=leakiness)).add(
      scn.Convolution(dimension, i, o, 3, 2, False))

def block(self, m, a, b, dimension=3, residual_blocks=False, leakiness=0):  # default using residual_block
        if residual_blocks: #ResNet style blocks
            m.add(scn.ConcatTable()
                  .add(scn.Identity() if a == b else scn.NetworkInNetwork(a, b, False))
                  .add(scn.Sequential()
                    .add(scn.BatchNormLeakyReLU(a,leakiness=leakiness))
                    .add(scn.SubmanifoldConvolution(dimension, a, b, 3, False))
                    .add(scn.BatchNormLeakyReLU(b,leakiness=leakiness))
                    .add(scn.SubmanifoldConvolution(dimension, b, b, 3, False)))
             ).add(scn.AddTable())
        else: #VGG style blocks
            m.add(scn.Sequential()
                 .add(scn.BatchNormLeakyReLU(a,leakiness=leakiness))
                 .add(scn.SubmanifoldConvolution(dimension, a, b, 3, False)))

稀疏3d卷积

子流形卷积scn.SubmanifoldConvolution(2, 1, 8, 3, False): # batch_size, channel_in, channel_out, filter_size

稀疏卷积 scn.Convolution(2, 32, 32, 3, 2, False): # batch_size, channel_in, channel_out, filter_size, strides

批归一化scn.BatchNormalization(32): # channel_in

稀疏到稠密转化scn.SparseToDense(2, 32): # batch_size, channel_in

输入scn.InputBatch(2, sparse_shape): # batch_size, sparse_shape

设置输入input.set_locations(locations, features,0) # locations [N, 2] features [N, 1] 保存N个特征的位置,N个特征

输入scn.InputLayer(2, spatial_size, 2) # dimension, spatial_size, mode=3

​ mode == 0 if the input is guaranteed to have no duplicates

​ mode == 1 to use the last item at each spatial location

​ mode == 2 to keep the first item at each spatial location

​ mode == 3 to sum feature vectors sharing one spatial location

​ mode == 4 to average feature vectors at each spatial location

self.scn_input((coors.cpu(), voxel_features, batch_size)): 将坐标及相应的feature转换成可以处理用稀疏3d卷积处理的数据类型

转载于:https://www.cnblogs.com/o-v-o/p/10948618.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值