def test_points_range_filter(): pcd_range = [0.0, 0.0, 0.0, 3.0, 3.0, 3.0] points_range_filter = PointsRangeFilter(pcd_range) points = np.fromfile('tests/data/scannet/points/scene0000_00.bin', np.float32).reshape(-1, 6) ins_mask = np.fromfile('tests/data/scannet/instance_mask/scene0000_00.bin', np.long) sem_mask = np.fromfile('tests/data/scannet/semantic_mask/scene0000_00.bin', np.long) points = DepthPoints(points.copy(), points_dim=6, attribute_dims=dict(color=[3, 4, 5])) input_dict = dict(points=points.clone(), pts_instance_mask=ins_mask.copy(), pts_semantic_mask=sem_mask.copy()) results = points_range_filter(input_dict) shuffle_pts = results['points'] shuffle_ins_mask = results['pts_instance_mask'] shuffle_sem_mask = results['pts_semantic_mask'] select_idx = np.array( [5, 11, 22, 26, 27, 33, 46, 47, 56, 63, 74, 78, 79, 91]) expected_pts = points.tensor.numpy()[select_idx] expected_ins_mask = ins_mask[select_idx] expected_sem_mask = sem_mask[select_idx] assert np.allclose(shuffle_pts.tensor.numpy(), expected_pts) assert np.all(shuffle_ins_mask == expected_ins_mask) assert np.all(shuffle_sem_mask == expected_sem_mask) repr_str = repr(points_range_filter) expected_repr_str = f'PointsRangeFilter(point_cloud_range={pcd_range})' assert repr_str == expected_repr_str
def test_point_shuffle(): np.random.seed(0) torch.manual_seed(0) point_shuffle = PointShuffle() points = np.fromfile('tests/data/scannet/points/scene0000_00.bin', np.float32).reshape(-1, 6) ins_mask = np.fromfile('tests/data/scannet/instance_mask/scene0000_00.bin', np.long) sem_mask = np.fromfile('tests/data/scannet/semantic_mask/scene0000_00.bin', np.long) points = DepthPoints(points.copy(), points_dim=6, attribute_dims=dict(color=[3, 4, 5])) input_dict = dict(points=points.clone(), pts_instance_mask=ins_mask.copy(), pts_semantic_mask=sem_mask.copy()) results = point_shuffle(input_dict) shuffle_pts = results['points'] shuffle_ins_mask = results['pts_instance_mask'] shuffle_sem_mask = results['pts_semantic_mask'] shuffle_idx = np.array([ 44, 19, 93, 90, 71, 69, 37, 95, 53, 91, 81, 42, 80, 85, 74, 56, 76, 63, 82, 40, 26, 92, 57, 10, 16, 66, 89, 41, 97, 8, 31, 24, 35, 30, 65, 7, 98, 23, 20, 29, 78, 61, 94, 15, 4, 52, 59, 5, 54, 46, 3, 28, 2, 70, 6, 60, 49, 68, 55, 72, 79, 77, 45, 1, 32, 34, 11, 0, 22, 12, 87, 50, 25, 47, 36, 96, 9, 83, 62, 84, 18, 17, 75, 67, 13, 48, 39, 21, 64, 88, 38, 27, 14, 73, 33, 58, 86, 43, 99, 51 ]) expected_pts = points.tensor.numpy()[shuffle_idx] expected_ins_mask = ins_mask[shuffle_idx] expected_sem_mask = sem_mask[shuffle_idx] assert np.allclose(shuffle_pts.tensor.numpy(), expected_pts) assert np.all(shuffle_ins_mask == expected_ins_mask) assert np.all(shuffle_sem_mask == expected_sem_mask) repr_str = repr(point_shuffle) expected_repr_str = 'PointShuffle' assert repr_str == expected_repr_str