diff --git a/part_segmentation/models/__init__.py b/part_segmentation/models/__init__.py index 75a221d..83a619e 100755 --- a/part_segmentation/models/__init__.py +++ b/part_segmentation/models/__init__.py @@ -1,5 +1,2 @@ from __future__ import absolute_import -from .curvenet_seg import CurveNet -from .pointMLP31 import model31G, model31J, model31K, model31D, model31A -from .pointMLP32 import model32A, model32B, model32C, model32D, model32E, model32F, model32G -from .pointMLP33 import model33A, model33B, model33C, model33D, model33E, model33F, model33G +from .pointMLP import pointMLP diff --git a/part_segmentation/models/pointMLP31.py b/part_segmentation/models/pointMLP.py similarity index 70% rename from part_segmentation/models/pointMLP31.py rename to part_segmentation/models/pointMLP.py index f3a373c..5ce90fb 100644 --- a/part_segmentation/models/pointMLP31.py +++ b/part_segmentation/models/pointMLP.py @@ -1,13 +1,3 @@ -""" -Based on PointMLP9, change to 128, 256, 512, 512 -Based on PointMLP4, use fps replace random sample. -Based on PointMLP3, change dropout to 0.1 -Based on PointMLP2, add blocks in decode, change channel numbers. -Based on PointMLP1, using poseExtraction to replace MLP in decode. -PointsformerE2, 1)change relu to GELU, 2) change backbone to model24. -""" - - import torch import torch.nn as nn @@ -337,14 +327,14 @@ class PointNetFeaturePropagation(nn.Module): -class PointMLP31(nn.Module): +class PointMLP(nn.Module): def __init__(self, num_classes=50,points=2048, embed_dim=64, groups=1, res_expansion=1.0, activation="relu", bias=True, use_xyz=True, normalize="anchor", dim_expansion=[2, 2, 2, 2], pre_blocks=[2, 2, 2, 2], pos_blocks=[2, 2, 2, 2], k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], de_dims=[512, 256, 128, 128], de_blocks=[2,2,2,2], gmp_dim=64,cls_dim=64, **kwargs): - super(PointMLP31, self).__init__() + super(PointMLP, self).__init__() self.stages = len(pre_blocks) self.class_num = num_classes self.points = points @@ -455,143 +445,20 @@ class PointMLP31(nn.Module): return x -def model31A(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, - activation="relu", bias=True, use_xyz=False, normalize="anchor", - dim_expansion=[2, 2, 2, 2], pre_blocks=[2, 2, 2, 2], pos_blocks=[2, 2, 2, 2], - k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], - de_dims=[512, 256, 128, 128], de_blocks=[4,4,4,4], - gmp_dim=64,cls_dim=64, **kwargs) - - -def model31B(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes,points=2048, embed_dim=64, groups=1, res_expansion=1.0, - activation="relu", bias=True, use_xyz=False, normalize="anchor", - dim_expansion=[2, 2, 2, 2], pre_blocks=[3, 3, 3, 3], pos_blocks=[3, 3, 3, 3], - k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], - de_dims=[512, 256, 128, 128], de_blocks=[3, 3, 3, 3], - gmp_dim=64,cls_dim=64, **kwargs) - -def model31C(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes,points=2048, embed_dim=64, groups=1, res_expansion=1.0, - activation="relu", bias=True, use_xyz=False, normalize="anchor", - dim_expansion=[2, 2, 2, 2], pre_blocks=[2, 2, 2, 2], pos_blocks=[2, 2, 2, 2], - k_neighbors=[24, 24, 24, 24], reducers=[4, 4, 4, 4], - de_dims=[512, 256, 128, 128], de_blocks=[3, 3, 3, 3], - gmp_dim=64,cls_dim=64, **kwargs) - - - -def model31D(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes, points=2048, embed_dim=32, groups=1, res_expansion=1.0, - activation="relu", bias=True, use_xyz=False, normalize="anchor", - dim_expansion=[2, 2, 2, 2], pre_blocks=[2, 2, 2, 2], pos_blocks=[2, 2, 2, 2], - k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], - de_dims=[512, 256, 128, 128], de_blocks=[4,4,4,4], - gmp_dim=64,cls_dim=64, **kwargs) - - -def model31E(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, - activation="relu", bias=True, use_xyz=False, normalize="anchor", - dim_expansion=[2, 2, 2, 2], pre_blocks=[4, 4, 4, 4], pos_blocks=[4, 4, 4, 4], - k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], - de_dims=[512, 256, 128, 128], de_blocks=[6,6,6,6], - gmp_dim=64,cls_dim=64, **kwargs) - -def model31F(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, - activation="relu", bias=True, use_xyz=False, normalize="anchor", - dim_expansion=[2, 2, 2, 2], pre_blocks=[2, 2, 2, 2], pos_blocks=[2, 2, 2, 2], - k_neighbors=[32, 32, 32, 32], reducers=[4, 2, 4, 2], - de_dims=[512, 256, 128, 128], de_blocks=[4,4,4,4], - gmp_dim=64,cls_dim=64, **kwargs) - -def model31G(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, +def pointMLP(num_classes=50, **kwargs) -> PointMLP: + return PointMLP(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, activation="relu", bias=True, use_xyz=True, normalize="anchor", dim_expansion=[2, 2, 2, 2], pre_blocks=[2, 2, 2, 2], pos_blocks=[2, 2, 2, 2], k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], de_dims=[512, 256, 128, 128], de_blocks=[4,4,4,4], gmp_dim=64,cls_dim=64, **kwargs) -def model31G1(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, - activation="leakyrelu0.2", bias=True, use_xyz=True, normalize="anchor", - dim_expansion=[2, 2, 2, 2], pre_blocks=[2, 2, 2, 2], pos_blocks=[2, 2, 2, 2], - k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], - de_dims=[512, 256, 128, 128], de_blocks=[4,4,4,4], - gmp_dim=64,cls_dim=64, **kwargs) - -def model31G2(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, - activation="leakyrelu", bias=True, use_xyz=True, normalize="anchor", - dim_expansion=[2, 2, 2, 2], pre_blocks=[2, 2, 2, 2], pos_blocks=[2, 2, 2, 2], - k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], - de_dims=[512, 256, 128, 128], de_blocks=[4,4,4,4], - gmp_dim=64,cls_dim=64, **kwargs) - -def model31G3(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, - activation="gelu", bias=True, use_xyz=True, normalize="anchor", - dim_expansion=[2, 2, 2, 2], pre_blocks=[2, 2, 2, 2], pos_blocks=[2, 2, 2, 2], - k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], - de_dims=[512, 256, 128, 128], de_blocks=[4,4,4,4], - gmp_dim=64,cls_dim=64, **kwargs) - -def model31H(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, - activation="gelu", bias=True, use_xyz=True, normalize="anchor", - dim_expansion=[2, 2, 2, 2], pre_blocks=[2, 2, 2, 2], pos_blocks=[2, 2, 2, 2], - k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], - de_dims=[512, 256, 128, 128], de_blocks=[4,4,4,4], - gmp_dim=64,cls_dim=64, **kwargs) - -def model31I(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, - activation="relu", bias=True, use_xyz=True, normalize="anchor", - dim_expansion=[2, 2, 2, 1], pre_blocks=[3, 3, 3, 3], pos_blocks=[3, 3, 3, 3], - k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], - de_dims=[512, 256, 128, 128], de_blocks=[4, 4, 4, 4], - gmp_dim=64,cls_dim=64, **kwargs) - -def model31J(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, - activation="leakyrelu", bias=True, use_xyz=True, normalize="anchor", - dim_expansion=[2, 2, 2, 2], pre_blocks=[2, 2, 2, 2], pos_blocks=[2, 2, 2, 2], - k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], - de_dims=[512, 256, 128, 128], de_blocks=[4,4,4,4], - gmp_dim=64,cls_dim=64, **kwargs) - - -def model31K(num_classes=50, **kwargs) -> PointMLP31: - return PointMLP31(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, - activation="leakyrelu0.2", bias=True, use_xyz=True, normalize="anchor", - dim_expansion=[2, 2, 2, 2], pre_blocks=[2, 2, 2, 2], pos_blocks=[2, 2, 2, 2], - k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4], - de_dims=[512, 256, 128, 128], de_blocks=[4,4,4,4], - gmp_dim=64,cls_dim=64, **kwargs) - - - if __name__ == '__main__': data = torch.rand(2, 3, 2048) norm = torch.rand(2, 3, 2048) cls_label = torch.rand([2, 16]) print("===> testing modelD ...") - model = model31D(50) + model = model31G(50) out = model(data, cls_label) # [2,2048,50] print(out.shape) - - model = model31A(50) - out = model(data, cls_label) # [2,2048,50] - print(out.shape) - - model = model31B(50) - out = model(data, cls_label) # [2,2048,50] - print(out.shape) - - model = model31C(50) - out = model(data, cls_label) # [2,50, 2048] - print(out.shape)