def train_pipeline(pointcloud_segments): augmentation_pipeline = Pipeline\ ([ ('RandomRemover', RandomRemover()), ('PlaneRemover', PlaneRemover()), ('EigenAligner', EigenAligner()), ('Rotator', RandomRotator()), ]) pointcloud_segments = augmentation_pipeline.fit_transform(pointcloud_segments) preprocessing_pipeline = Pipeline([ ('CoordinatesRescaler', CoordinatesRescaler(scale_method = "fit", center_method = "mean")), # ('Jitter', Jitter()), ('Voxelizer', Voxelizer()), # ('VoxelNormalizer', VoxelNormalizer(train_ids=train_ids)) ]) voxelbox = preprocessing_pipeline.fit_transform(pointcloud_segments) return voxelbox
lids = total[:, 0] labels_dict = dict(zip(lids, labels)) labels=np.array([labels_dict[i] for i in ids]) # print('labels.size', labels.size) N_CLASSES = np.unique(ids).size # choose cars only cars = ids[np.where(labels==1)] chosen_segments = segments[np.where(labels==1)] chosen_ids = ids[np.where(labels==1)] # print('chosen_segments.size', chosen_segments.size) # create pipeline ========================================================================== preprocessing_pipeline = Pipeline([ ('EigenAligner', EigenAligner()), ('CoordinatesRescaler', CoordinatesRescaler(scale_method="fit", center_method="mean", voxel_shape=VOXEL_SHAPE)), ('Voxelizer', Voxelizer(voxel_shape = VOXEL_SHAPE)), # ('VoxelNormalizer', VoxelNormalizer(train_ids=train_ids)) ]) # split data ============================================================================ train_part=0.7 unique_ids = np.unique(ids) # np.random.shuffle(unique_ids) train_n=int(0.7*unique_ids.size) train_unique_ids=unique_ids[:train_n] test_unique_ids=unique_ids[train_n:] train_ids=[i for i, id in enumerate(ids) if id in train_unique_ids]
pointcloud_segments = PlaneRemover().fit_transform(pointcloud_segments) pointcloud_segment = pointcloud_segments[SEGMENT_ID] print(pointcloud_segment.shape) pointcloud_segments = EigenAligner().fit_transform(pointcloud_segments) pointcloud_segment = pointcloud_segments[SEGMENT_ID] print(pointcloud_segment.shape) pointcloud_segments = RandomRotator().fit_transform(pointcloud_segments) pointcloud_segment = pointcloud_segments[SEGMENT_ID] print(pointcloud_segment.shape) coordinates_scaler = CoordinatesRescaler(scale_method="fixed", center_method="mean", scale=np.array((8, 8, 4)), voxel_shape=np.array((32, 32, 16)), min_scale_threshold=np.array( (3.2, 3.2, 1.6))) pointcloud_segments = coordinates_scaler.fit_transform(pointcloud_segments) pointcloud_segment = pointcloud_segments[SEGMENT_ID] print(pointcloud_segment.shape) voxelbox_segments = Voxelizer().fit_transform(pointcloud_segments) voxelbox_segment = voxelbox_segments[SEGMENT_ID] print(voxelbox_segment.shape) pointcloud_segments = EigenAligner().fit_transform(pointcloud_segments) pointcloud_segment = pointcloud_segments[SEGMENT_ID] print(pointcloud_segment.shape)