point transformer v3结构

在这里插入图片描述

分割结构:

embedding->enc->dec
embedding->enc0->enc1->enc2->enc3->enc4->dec3->dec2->dec1->dec0
embedding
->block0->block1
->dow->block0->block1
->dow->block0->block1
->dow->block0->block1->block2->block3->block4->block5
->dow->block0->block1
->up->block0->block1
->up->block0->block1
->up->block0->block1
->up->block0->block1
embedding:SubMConv3d->BatchNorm1d->GELU
SubMConv3d:输入为上一步sparsify()生成的sparse_conv_feat,它由feat[108413, 6]和grid_coord[108413, 3]变化而来。
            经过这一步,feat变成[108413, 32]。
            feat中存着法向量和颜色,grid是体素化后的坐标。
BatchNorm1d:输入feat。更新了feat和sparse_conv_feat。
GELU:输入feat。更新了feat和sparse_conv_feat。
block:cpe->norm1->attn->norm2->mlp

cpe:SubMConv3d->Liner->LayerNorm
SubMConv3d:输入为sparse_conv_feat[108413, 32],更新feat和sparse_conv_feat[108413, 32]。
Liner:输入为sparse_conv_feat[108413, 32],更新feat和sparse_conv_feat[108413, 32]。
LayerNorm:输入为sparse_conv_feat[108413, 32],更新feat和sparse_conv_feat[108413, 32]。
DefaultSegmentorV2(
  (seg_head): Linear(in_features=64, out_features=13, bias=True)
  (backbone): PointTransformerV3(
    (embedding): Embedding(
      (stem): PointSequential(
        (conv): SubMConv3d(6, 32, kernel_size=[5, 5, 5], stride=[1, 1, 1], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.Native)
        (norm): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
        (act): GELU(approximate='none')
      )
    )
    (enc): PointSequential(
      (enc0): PointSequential(
        (block0): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(32, 32, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=32, out_features=32, bias=True)
            (2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((32,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=32, out_features=96, bias=True)
            (proj): Linear(in_features=32, out_features=32, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((32,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=32, out_features=128, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=128, out_features=32, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): Identity()
          )
        )
        (block1): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(32, 32, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=32, out_features=32, bias=True)
            (2): LayerNorm((32,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((32,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=32, out_features=96, bias=True)
            (proj): Linear(in_features=32, out_features=32, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((32,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=32, out_features=128, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=128, out_features=32, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.023)
          )
        )
      )
      (enc1): PointSequential(
        (down): SerializedPooling(
          (proj): Linear(in_features=32, out_features=64, bias=True)
          (norm): PointSequential(
            (0): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
          )
          (act): PointSequential(
            (0): GELU(approximate='none')
          )
        )
        (block0): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=64, out_features=64, bias=True)
            (2): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=64, out_features=192, bias=True)
            (proj): Linear(in_features=64, out_features=64, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=64, out_features=256, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=256, out_features=64, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.046)
          )
        )
        (block1): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=64, out_features=64, bias=True)
            (2): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=64, out_features=192, bias=True)
            (proj): Linear(in_features=64, out_features=64, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=64, out_features=256, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=256, out_features=64, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.069)
          )
        )
      )
      (enc2): PointSequential(
        (down): SerializedPooling(
          (proj): Linear(in_features=64, out_features=128, bias=True)
          (norm): PointSequential(
            (0): BatchNorm1d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
          )
          (act): PointSequential(
            (0): GELU(approximate='none')
          )
        )
        (block0): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(128, 128, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=128, out_features=128, bias=True)
            (2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=128, out_features=384, bias=True)
            (proj): Linear(in_features=128, out_features=128, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=128, out_features=512, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=512, out_features=128, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.092)
          )
        )
        (block1): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(128, 128, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=128, out_features=128, bias=True)
            (2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=128, out_features=384, bias=True)
            (proj): Linear(in_features=128, out_features=128, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=128, out_features=512, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=512, out_features=128, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.115)
          )
        )
      )
      (enc3): PointSequential(
        (down): SerializedPooling(
          (proj): Linear(in_features=128, out_features=256, bias=True)
          (norm): PointSequential(
            (0): BatchNorm1d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
          )
          (act): PointSequential(
            (0): GELU(approximate='none')
          )
        )
        (block0): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(256, 256, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=256, out_features=256, bias=True)
            (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=256, out_features=768, bias=True)
            (proj): Linear(in_features=256, out_features=256, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=256, out_features=1024, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=1024, out_features=256, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.138)
          )
        )
        (block1): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(256, 256, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=256, out_features=256, bias=True)
            (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=256, out_features=768, bias=True)
            (proj): Linear(in_features=256, out_features=256, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=256, out_features=1024, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=1024, out_features=256, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.162)
          )
        )
        (block2): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(256, 256, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=256, out_features=256, bias=True)
            (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=256, out_features=768, bias=True)
            (proj): Linear(in_features=256, out_features=256, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=256, out_features=1024, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=1024, out_features=256, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.185)
          )
        )
        (block3): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(256, 256, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=256, out_features=256, bias=True)
            (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=256, out_features=768, bias=True)
            (proj): Linear(in_features=256, out_features=256, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=256, out_features=1024, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=1024, out_features=256, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.208)
          )
        )
        (block4): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(256, 256, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=256, out_features=256, bias=True)
            (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=256, out_features=768, bias=True)
            (proj): Linear(in_features=256, out_features=256, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=256, out_features=1024, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=1024, out_features=256, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.231)
          )
        )
        (block5): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(256, 256, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=256, out_features=256, bias=True)
            (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=256, out_features=768, bias=True)
            (proj): Linear(in_features=256, out_features=256, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=256, out_features=1024, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=1024, out_features=256, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.254)
          )
        )
      )
      (enc4): PointSequential(
        (down): SerializedPooling(
          (proj): Linear(in_features=256, out_features=512, bias=True)
          (norm): PointSequential(
            (0): BatchNorm1d(512, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
          )
          (act): PointSequential(
            (0): GELU(approximate='none')
          )
        )
        (block0): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(512, 512, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=512, out_features=512, bias=True)
            (2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=512, out_features=1536, bias=True)
            (proj): Linear(in_features=512, out_features=512, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=512, out_features=2048, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=2048, out_features=512, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.277)
          )
        )
        (block1): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(512, 512, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=512, out_features=512, bias=True)
            (2): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=512, out_features=1536, bias=True)
            (proj): Linear(in_features=512, out_features=512, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((512,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=512, out_features=2048, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=2048, out_features=512, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.300)
          )
        )
      )
    )
    (dec): PointSequential(
      (dec3): PointSequential(
        (up): SerializedUnpooling(
          (proj): PointSequential(
            (0): Linear(in_features=512, out_features=256, bias=True)
            (1): BatchNorm1d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
            (2): GELU(approximate='none')
          )
          (proj_skip): PointSequential(
            (0): Linear(in_features=256, out_features=256, bias=True)
            (1): BatchNorm1d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
            (2): GELU(approximate='none')
          )
        )
        (block0): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(256, 256, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=256, out_features=256, bias=True)
            (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=256, out_features=768, bias=True)
            (proj): Linear(in_features=256, out_features=256, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=256, out_features=1024, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=1024, out_features=256, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.300)
          )
        )
        (block1): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(256, 256, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=256, out_features=256, bias=True)
            (2): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=256, out_features=768, bias=True)
            (proj): Linear(in_features=256, out_features=256, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((256,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=256, out_features=1024, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=1024, out_features=256, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.257)
          )
        )
      )
      (dec2): PointSequential(
        (up): SerializedUnpooling(
          (proj): PointSequential(
            (0): Linear(in_features=256, out_features=128, bias=True)
            (1): BatchNorm1d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
            (2): GELU(approximate='none')
          )
          (proj_skip): PointSequential(
            (0): Linear(in_features=128, out_features=128, bias=True)
            (1): BatchNorm1d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
            (2): GELU(approximate='none')
          )
        )
        (block0): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(128, 128, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=128, out_features=128, bias=True)
            (2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=128, out_features=384, bias=True)
            (proj): Linear(in_features=128, out_features=128, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=128, out_features=512, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=512, out_features=128, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.214)
          )
        )
        (block1): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(128, 128, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=128, out_features=128, bias=True)
            (2): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=128, out_features=384, bias=True)
            (proj): Linear(in_features=128, out_features=128, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((128,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=128, out_features=512, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=512, out_features=128, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.171)
          )
        )
      )
      (dec1): PointSequential(
        (up): SerializedUnpooling(
          (proj): PointSequential(
            (0): Linear(in_features=128, out_features=64, bias=True)
            (1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
            (2): GELU(approximate='none')
          )
          (proj_skip): PointSequential(
            (0): Linear(in_features=64, out_features=64, bias=True)
            (1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
            (2): GELU(approximate='none')
          )
        )
        (block0): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=64, out_features=64, bias=True)
            (2): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=64, out_features=192, bias=True)
            (proj): Linear(in_features=64, out_features=64, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=64, out_features=256, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=256, out_features=64, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.129)
          )
        )
        (block1): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=64, out_features=64, bias=True)
            (2): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=64, out_features=192, bias=True)
            (proj): Linear(in_features=64, out_features=64, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=64, out_features=256, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=256, out_features=64, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.086)
          )
        )
      )
      (dec0): PointSequential(
        (up): SerializedUnpooling(
          (proj): PointSequential(
            (0): Linear(in_features=64, out_features=64, bias=True)
            (1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
            (2): GELU(approximate='none')
          )
          (proj_skip): PointSequential(
            (0): Linear(in_features=32, out_features=64, bias=True)
            (1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
            (2): GELU(approximate='none')
          )
        )
        (block0): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=64, out_features=64, bias=True)
            (2): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=64, out_features=192, bias=True)
            (proj): Linear(in_features=64, out_features=64, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=64, out_features=256, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=256, out_features=64, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): DropPath(drop_prob=0.043)
          )
        )
        (block1): Block(
          (cpe): PointSequential(
            (0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], algo=ConvAlgo.MaskImplicitGemm)
            (1): Linear(in_features=64, out_features=64, bias=True)
            (2): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (norm1): PointSequential(
            (0): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (attn): SerializedAttention(
            (attn_drop): Dropout(p=0.0, inplace=False)
            (qkv): Linear(in_features=64, out_features=192, bias=True)
            (proj): Linear(in_features=64, out_features=64, bias=True)
            (proj_drop): Dropout(p=0.0, inplace=False)
            (softmax): Softmax(dim=-1)
            (rpe): RPE()
          )
          (norm2): PointSequential(
            (0): LayerNorm((64,), eps=1e-05, elementwise_affine=True)
          )
          (mlp): PointSequential(
            (0): MLP(
              (fc1): Linear(in_features=64, out_features=256, bias=True)
              (act): GELU(approximate='none')
              (fc2): Linear(in_features=256, out_features=64, bias=True)
              (drop): Dropout(p=0.0, inplace=False)
            )
          )
          (drop_path): PointSequential(
            (0): Identity()
          )
        )
      )
    )
  )
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值