This commit is contained in:
Xu Ma 2021-10-04 12:50:22 -04:00
parent 5fb50b9eda
commit 4a38583069
2 changed files with 6 additions and 142 deletions

View file

@ -1,5 +1,2 @@
from __future__ import absolute_import from __future__ import absolute_import
from .curvenet_seg import CurveNet from .pointMLP import pointMLP
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

View file

@ -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
import torch.nn as nn 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, 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", 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], 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], k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4],
de_dims=[512, 256, 128, 128], de_blocks=[2,2,2,2], de_dims=[512, 256, 128, 128], de_blocks=[2,2,2,2],
gmp_dim=64,cls_dim=64, **kwargs): gmp_dim=64,cls_dim=64, **kwargs):
super(PointMLP31, self).__init__() super(PointMLP, self).__init__()
self.stages = len(pre_blocks) self.stages = len(pre_blocks)
self.class_num = num_classes self.class_num = num_classes
self.points = points self.points = points
@ -455,143 +445,20 @@ class PointMLP31(nn.Module):
return x return x
def model31A(num_classes=50, **kwargs) -> PointMLP31: def pointMLP(num_classes=50, **kwargs) -> PointMLP:
return PointMLP31(num_classes=num_classes, points=2048, embed_dim=64, groups=1, res_expansion=1.0, return PointMLP(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,
activation="relu", bias=True, use_xyz=True, normalize="anchor", 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], 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], k_neighbors=[32, 32, 32, 32], reducers=[4, 4, 4, 4],
de_dims=[512, 256, 128, 128], de_blocks=[4,4,4,4], de_dims=[512, 256, 128, 128], de_blocks=[4,4,4,4],
gmp_dim=64,cls_dim=64, **kwargs) 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__': if __name__ == '__main__':
data = torch.rand(2, 3, 2048) data = torch.rand(2, 3, 2048)
norm = torch.rand(2, 3, 2048) norm = torch.rand(2, 3, 2048)
cls_label = torch.rand([2, 16]) cls_label = torch.rand([2, 16])
print("===> testing modelD ...") print("===> testing modelD ...")
model = model31D(50) model = model31G(50)
out = model(data, cls_label) # [2,2048,50] out = model(data, cls_label) # [2,2048,50]
print(out.shape) 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)