
分割结构:
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)
1万+





被折叠的 条评论
为什么被折叠?



