in models/trunks/pointnet.py [0:0]
def __init__(self, input_feature_dim=0, scale=1, use_mlp=False, mlp_dim=None):
super().__init__()
self.use_mlp = use_mlp
self.sa1 = PointnetSAModuleVotes(
npoint=2048,
radius=0.2,
nsample=64,
mlp=[input_feature_dim, 64*scale, 64*scale, 128*scale],
use_xyz=True,
normalize_xyz=True
)
self.sa2 = PointnetSAModuleVotes(
npoint=1024,
radius=0.4,
nsample=32,
mlp=[128*scale, 128*scale, 128*scale, 256*scale],
use_xyz=True,
normalize_xyz=True
)
self.sa3 = PointnetSAModuleVotes(
npoint=512,
radius=0.8,
nsample=16,
mlp=[256*scale, 128*scale, 128*scale, 256*scale],
use_xyz=True,
normalize_xyz=True
)
self.sa4 = PointnetSAModuleVotes(
npoint=256,
radius=1.2,
nsample=16,
mlp=[256*scale, 128*scale, 128*scale, 256*scale],
use_xyz=True,
normalize_xyz=True
)
if scale == 1:
self.fp1 = PointnetFPModule(mlp=[256+256,512,512])
self.fp2 = PointnetFPModule(mlp=[512+256,512,512])
else:
self.fp1 = PointnetFPModule(mlp=[256*scale+256*scale,256*scale,256*scale])
self.fp2 = PointnetFPModule(mlp=[256*scale+256*scale,256*scale,256*scale])
if use_mlp:
self.head = MLP(mlp_dim)
self.all_feat_names = [
"sa1",
"sa2",
"sa3",
"sa4",
"fp1",
"fp2",
]