Exemple #1
0
def get_data_fields(mode, cfg):
    ''' Returns the data fields.

    Args:
        mode (str): the mode which is used
        cfg (dict): imported yaml config
    '''
    points_transform = data.SubsamplePoints(cfg['data']['points_subsample'])
    with_transforms = cfg['model']['use_camera']

    fields = {}
    fields['points'] = data.PointsField(
        cfg['data']['points_file'],
        points_transform,
        with_transforms=with_transforms,
        unpackbits=cfg['data']['points_unpackbits'],
    )

    if mode in ('val', 'test'):
        points_iou_file = cfg['data']['points_iou_file']
        voxels_file = cfg['data']['voxels_file']
        if points_iou_file is not None:
            fields['points_iou'] = data.PointsField(
                points_iou_file,
                with_transforms=with_transforms,
                unpackbits=cfg['data']['points_unpackbits'],
            )
        if voxels_file is not None:
            fields['voxels'] = data.VoxelsField(voxels_file)

    return fields
Exemple #2
0
def get_data_fields(split, cfg, **kwargs):
    ''' Returns the data fields.

    Args:
        split (str): the split which should be used
        cfg (dict): loaded yaml config
    '''
    with_transforms = cfg['data']['with_transforms']

    fields = {}

    if split == 'train':
        fields['voxels'] = data.VoxelsField(cfg['data']['voxels_file'])
    elif split in ('val', 'test'):
        fields['points_iou'] = data.PointsField(
            cfg['data']['points_iou_file'],
            with_transforms=with_transforms,
            unpackbits=cfg['data']['points_unpackbits'],
        )

    return fields
Exemple #3
0
if args.generation_dir == "":
    generation_dir = os.path.join(out_dir, cfg['generation']['generation_dir'])
else:
    generation_dir = os.path.join(out_dir, args.generation_dir)

if not args.eval_input:
    out_file = os.path.join(generation_dir, 'eval_meshes_full.pkl')
    out_file_class = os.path.join(generation_dir, 'eval_meshes.csv')
else:
    out_file = os.path.join(generation_dir, 'eval_input_full.pkl')
    out_file_class = os.path.join(generation_dir, 'eval_input.csv')

# Dataset
points_field = data.PointsField(
    cfg['data']['points_iou_file'],
    unpackbits=cfg['data']['points_unpackbits'],
)
pointcloud_field = data.PointCloudField(cfg['data']['pointcloud_chamfer_file'])
fields = {
    'points_iou': points_field,
    'pointcloud_chamfer': pointcloud_field,
    'idx': data.IndexField(),
}

print('Test split: ', cfg['data']['test_split'])

if args.da:
    dataset_folder = cfg['data']['uda_path']
    categories_to_use = cfg['data']['uda_classes']
else:
    dataset_folder = cfg['data']['path']
if not args.eval_input:
    out_file = os.path.join(generation_dir, 'eval_meshes_full.pkl')
    out_file_class = os.path.join(generation_dir, 'eval_meshes.csv')
else:
    out_file = os.path.join(generation_dir, 'eval_input_full.pkl')
    out_file_class = os.path.join(generation_dir, 'eval_input.csv')

# Dataset
if 'test_range' in cfg['data']:
    input_range = cfg['data']['test_range']
    print('Test range:', input_range)
else:
    input_range = None

points_field = data.PointsField(cfg['data']['points_iou_file'],
                                unpackbits=cfg['data']['points_unpackbits'],
                                input_range=input_range)
pointcloud_field = data.PointCloudField(cfg['data']['pointcloud_chamfer_file'])
fields = {
    'points_iou': points_field,
    'pointcloud_chamfer': pointcloud_field,
    'idx': data.IndexField(),
}

print('Test split: ', cfg['data']['test_split'])

dataset_folder = cfg['data']['path']
dataset = data.Shapes3dDataset(dataset_folder,
                               fields,
                               cfg['data']['test_split'],
                               categories=cfg['data']['classes'])
def get_data_fields(mode, cfg):
    ''' Returns the data fields.

    Args:
        mode (str): the mode which is used
        cfg (dict): imported yaml config
    '''
    points_transform = data.SubsamplePoints(cfg['data']['points_subsample'])
    if cfg.get('sdf_generation', False):
        points_transform = None
    with_transforms = cfg['model']['use_camera']

    fields = {}
    fields['points'] = data.PointsField(
        cfg['data']['points_file'],
        points_transform,
        with_transforms=with_transforms,
        unpackbits=cfg['data']['points_unpackbits'],
    )

    if not cfg.get('sdf_generation', False) and cfg['trainer'].get(
            'is_sdf', False):
        sdf_points_transform = data.SubsampleSDFPoints(
            cfg['data']['points_subsample'])
        fields['sdf_points'] = data.SDFPointsField(
            cfg['data']['sdf_points_file'],
            sdf_points_transform,
            with_transforms=with_transforms)

    pointcloud_transform = data.SubsamplePointcloud(
        cfg['data']['pointcloud_target_n'])
    if cfg.get('sdf_generation', False):
        pointcloud_transform = None

    fields['pointcloud'] = data.PointCloudField(cfg['data']['pointcloud_file'],
                                                pointcloud_transform,
                                                with_transforms=True)
    fields['angles'] = nsd_data.SphericalCoordinateField(
        cfg['data']['primitive_points_sample_n'],
        mode,
        is_normal_icosahedron=cfg['data'].get('is_normal_icosahedron', False),
        is_normal_uv_sphere=cfg['data'].get('is_normal_uv_sphere', False),
        icosahedron_subdiv=cfg['data'].get('icosahedron_subdiv', 2),
        icosahedron_uv_margin=cfg['data'].get('icosahedron_uv_margin', 1e-5),
        icosahedron_uv_margin_phi=cfg['data'].get('icosahedron_uv_margin_phi',
                                                  1e-5),
        uv_sphere_length=cfg['data'].get('uv_sphere_length', 20),
        normal_mesh_no_invert=cfg['data'].get('normal_mesh_no_invert', False))
    if mode in ('val', 'test'):
        points_iou_file = cfg['data']['points_iou_file']
        voxels_file = cfg['data']['voxels_file']
        if points_iou_file is not None:
            fields['points_iou'] = data.PointsField(
                points_iou_file,
                with_transforms=with_transforms,
                unpackbits=cfg['data']['points_unpackbits'],
            )
        if voxels_file is not None:
            fields['voxels'] = data.VoxelsField(voxels_file)

    return fields
def get_occ_data_fields(mode, cfg):
    ''' Returns the data fields.

    Args:
        mode (str): the mode which is used
        cfg (dict): imported yaml config
    '''
    N = cfg['data']['points_subsample']
    points_transform = data.SubsamplePoints(cfg['data']['points_subsample'])
    with_transforms = cfg['model']['use_camera']

    if mode == 'train':
        if 'input_range' in cfg['data']:
            input_range = cfg['data']['input_range']
            print('Input range:', input_range)
        else:
            input_range = None
    else:
        if 'test_range' in cfg['data']:
            input_range = cfg['data']['test_range']
            print('Test range:', input_range)
        else:
            input_range = None

    fields = {}
    points_file = cfg['data']['points_file']
    if points_file.endswith('.npz'):
        fields['points'] = data.PointsField(
            cfg['data']['points_file'], points_transform,
            with_transforms=with_transforms,
            unpackbits=cfg['data']['points_unpackbits'],
            input_range=input_range
        )
    elif points_file.endswith('.h5'):
        fields['points'] = data.PointsH5Field(
            cfg['data']['points_file'], subsample_n=N,
            with_transforms=with_transforms,
            input_range=input_range
        )
    else:
        raise NotImplementedError

    if mode in ('val', 'test'):
        points_iou_file = cfg['data']['points_iou_file']
        voxels_file = cfg['data']['voxels_file']
        if points_iou_file is not None:
            if points_iou_file.endswith('.npz'):
                fields['points_iou'] = data.PointsField(
                    points_iou_file,
                    with_transforms=with_transforms,
                    unpackbits=cfg['data']['points_unpackbits'],
                    input_range=input_range
                )
            elif points_iou_file.endswith('.h5'):
                fields['points_iou'] = data.PointsH5Field(
                    points_iou_file, 
                    with_transforms=with_transforms,
                    input_range=input_range
                )
            else:
                raise NotImplementedError

        if voxels_file is not None:
            fields['voxels'] = data.VoxelsField(voxels_file)

    return fields