def get_inputs_field(mode, cfg): ''' Returns the inputs fields. Args: mode (str): the mode which is used cfg (dict): config dictionary ''' input_type = cfg['data']['input_type'] with_transforms = cfg['data']['with_transforms'] if input_type is None: inputs_field = None elif input_type == 'img': if mode == 'train' and cfg['data']['img_augment']: resize_op = transforms.RandomResizedCrop( cfg['data']['img_size'], (0.75, 1.), (1., 1.)) else: resize_op = transforms.Resize((cfg['data']['img_size'])) transform = transforms.Compose([ resize_op, transforms.ToTensor(), ]) with_camera = cfg['data']['img_with_camera'] if mode == 'train': random_view = True else: random_view = False inputs_field = data.ImagesField( cfg['data']['img_folder'], transform, with_camera=with_camera, random_view=random_view ) elif input_type == 'pointcloud': transform = transforms.Compose([ data.SubsamplePointcloud(cfg['data']['pointcloud_n']), data.PointcloudNoise(cfg['data']['pointcloud_noise']) ]) with_transforms = cfg['data']['with_transforms'] inputs_field = data.PointCloudField( cfg['data']['pointcloud_file'], transform, with_transforms=with_transforms ) elif input_type == 'voxels': inputs_field = data.VoxelsField( cfg['data']['voxels_file'] ) elif input_type == 'idx': inputs_field = data.IndexField() else: raise ValueError( 'Invalid input type (%s)' % input_type) return inputs_field
def get_data_fields(split, cfg, **kwargs): with_transforms = cfg['data']['with_transforms'] # TODO: put this into config pointcloud_n = 3000 pointcloud_transform = data.SubsamplePointcloud(pointcloud_n) fields = {} fields['pointcloud'] = data.PointCloudField( cfg['data']['pointcloud_file'], pointcloud_transform, with_transforms=with_transforms) return fields
def get_data_fields(mode, cfg): ''' Returns the respective data fields. Args: mode (string): which split should be performed (train/test) cfg (yaml file): config file ''' with_transforms = cfg['data']['with_transforms'] pointcloud_transform = data.SubsamplePointcloud( cfg['data']['pointcloud_n']) fields = {} fields['pointcloud'] = data.PointCloudField( cfg['data']['pointcloud_file'], pointcloud_transform, with_transforms=with_transforms) return fields
def get_data_fields(mode, cfg): ''' Returns the data fields. Args: mode (str): the mode which is used cfg (dict): imported yaml config ''' fields = {} if 'output_points_count' in cfg['model']: output_points_count = cfg['model']['output_points_count'] else: output_points_count = 2048 transform = transforms.Compose( [data.SubsamplePointcloud(output_points_count)]) fields['pointcloud'] = data.PointCloudField(cfg['data']['pointcloud_file'], transform, with_transforms=True) return fields
def get_data_fields(mode, cfg, **kwargs): r''' Returns the data fields. Args: mode (string): The split that is used (train/val/test) cfg (yaml object): the config file ''' with_transforms = cfg['data']['with_transforms'] pointcloud_transform = data.SubsamplePointcloud( cfg['data']['pointcloud_target_n']) fields = {} fields['pointcloud'] = data.PointCloudField( cfg['data']['pointcloud_file'], pointcloud_transform, with_transforms=with_transforms) if mode in ('val', 'test'): pointcloud_chamfer_file = cfg['data']['pointcloud_chamfer_file'] if pointcloud_chamfer_file is not None: fields['pointcloud_chamfer'] = data.PointCloudField( pointcloud_chamfer_file) return fields
def get_inputs_field(mode, cfg): ''' Returns the inputs fields. Args: mode (str): the mode which is used cfg (dict): config dictionary ''' input_type = cfg['data']['input_type'] with_transforms = cfg['data']['with_transforms'] if input_type is None: inputs_field = None elif input_type == 'img': if mode == 'train' and cfg['data']['img_augment']: resize_op = transforms.RandomResizedCrop(cfg['data']['img_size'], (0.75, 1.), (1., 1.)) else: resize_op = transforms.Resize((cfg['data']['img_size'])) transform = transforms.Compose([ resize_op, transforms.ToTensor(), ]) with_camera = cfg['data']['img_with_camera'] if mode == 'train': random_view = True else: random_view = False if 'img_extension' in cfg['data']: inputs_field = data.ImagesField( cfg['data']['img_folder'], transform, extension=cfg['data']['img_extension'], with_camera=with_camera, random_view=random_view) else: inputs_field = data.ImagesField(cfg['data']['img_folder'], transform, with_camera=with_camera, random_view=random_view) elif input_type == 'img_with_depth': # data augment not supported transform = transforms.Compose([ transforms.Resize((cfg['data']['img_size'])), transforms.ToTensor(), ]) with_camera = cfg['data']['img_with_camera'] if mode == 'train': random_view = True else: random_view = False data_params = { 'with_camera': with_camera, 'random_view': random_view, } if 'absolute_depth' in cfg['data']: data_params['absolute_depth'] = cfg['data']['absolute_depth'] if 'with_minmax' in cfg['data']: data_params['with_minmax'] = cfg['data']['with_minmax'] if 'img_extension' in cfg['data']: data_params['extension'] = cfg['data']['img_extension'] inputs_field = data.ImagesWithDepthField('img', 'depth', 'mask', transform, **data_params) elif input_type == 'depth_pred': # data augment not supported transform = transforms.Compose([ transforms.Resize((cfg['data']['img_size'])), transforms.ToTensor(), ]) with_camera = cfg['data']['img_with_camera'] if mode == 'train': random_view = True else: random_view = False data_params = { 'with_camera': with_camera, 'random_view': random_view, } if 'absolute_depth' in cfg['data']: data_params['absolute_depth'] = cfg['data']['absolute_depth'] if 'with_minmax' in cfg['data']: data_params['with_minmax'] = cfg['data']['with_minmax'] if 'pred_with_img' in cfg['model']: data_params['with_img'] = cfg['model']['pred_with_img'] if 'img_extension' in cfg['data']: data_params['extension'] = cfg['data']['img_extension'] inputs_field = data.DepthPredictedField('img', 'depth', 'mask', cfg['data']['depth_pred_root'], 'depth_pred', transform, **data_params) elif input_type == 'depth_pointcloud': t_lst = [] if 'depth_pointcloud_n' in cfg['data'] and cfg['data'][ 'depth_pointcloud_n'] is not None: t_lst.append( data.SubsampleDepthPointcloud( cfg['data']['depth_pointcloud_n'])) if 'depth_pointcloud_noise' in cfg['data'] and cfg['data'][ 'depth_pointcloud_noise'] is not None: t_lst.append( data.PointcloudNoise(cfg['data']['depth_pointcloud_noise'])) transform = transforms.Compose(t_lst) if mode == 'train': random_view = True else: random_view = False data_params = { 'random_view': random_view, 'with_camera': True, 'img_folder_name': 'img' } if 'view_penalty' in cfg['training'] and cfg['training'][ 'view_penalty']: data_params['with_mask'] = True data_params['mask_folder_name'] = 'mask' data_params['mask_flow_folder_name'] = 'mask_flow' data_params['extension'] = 'png' img_transform = transforms.Compose([ transforms.Resize((cfg['data']['img_size'])), transforms.ToTensor(), ]) data_params['img_transform'] = img_transform data_params['with_depth_pred'] = True data_params['depth_pred_folder_name'] = 'depth_pred' inputs_field = data.DepthPointCloudField( cfg['data']['depth_pointcloud_root'], cfg['data']['depth_pointcloud_folder'], transform, **data_params) elif input_type == 'multi_img': if mode == 'train' and cfg['data']['img_augment']: resize_op = transforms.RandomResizedCrop(cfg['data']['img_size'], (0.75, 1.), (1., 1.)) else: resize_op = transforms.Resize((cfg['data']['img_size'])) transform = transforms.Compose([ resize_op, transforms.ToTensor(), ]) with_camera = cfg['data']['img_with_camera'] if mode == 'train': random_view = True else: random_view = False inputs_field = data.ImagesField(cfg['data']['img_folder'], transform, with_camera=with_camera, random_view=random_view) elif input_type == 'pointcloud': transform = transforms.Compose([ data.SubsamplePointcloud(cfg['data']['pointcloud_n']), data.PointcloudNoise(cfg['data']['pointcloud_noise']) ]) with_transforms = cfg['data']['with_transforms'] inputs_field = data.PointCloudField(cfg['data']['pointcloud_file'], transform, with_transforms=with_transforms) elif input_type == 'voxels': inputs_field = data.VoxelsField(cfg['data']['voxels_file']) elif input_type == 'idx': inputs_field = data.IndexField() else: raise ValueError('Invalid input type (%s)' % input_type) return inputs_field
def get_inputs_field(mode, cfg, use_target_domain = False): ''' Returns the inputs fields. Args: mode (str): the mode which is used cfg (dict): config dictionary use_target_domain (bool): whether to use the target_domain dataset ''' input_type = cfg['data']['input_type'] with_transforms = cfg['data']['with_transforms'] if input_type is None: inputs_field = None elif input_type == 'img': if mode == 'train' and cfg['data']['img_augment']: resize_op = transforms.RandomResizedCrop( cfg['data']['img_size'], (0.75, 1.), (1., 1.)) else: resize_op = transforms.Resize((cfg['data']['img_size'])) transform = transforms.Compose([ resize_op, transforms.ToTensor(), ]) with_camera = cfg['data']['img_with_camera'] if mode == 'train': random_view = True else: random_view = False if use_target_domain: img_folder_name = cfg['data']['uda_img_folder'] filename_pattern= cfg['data']['uda_bg_configure'] else: img_folder_name = cfg['data']['img_folder'] filename_pattern = cfg['data']['img_filename_pattern'] inputs_field = data.ImagesField( img_folder_name, transform, with_camera=with_camera, random_view=random_view, filename_pattern=filename_pattern, extensions=['jpg', 'jpeg', 'png'] ) elif input_type == 'pointcloud': transform = transforms.Compose([ data.SubsamplePointcloud(cfg['data']['pointcloud_n']), data.PointcloudNoise(cfg['data']['pointcloud_noise']) ]) with_transforms = cfg['data']['with_transforms'] inputs_field = data.PointCloudField( cfg['data']['pointcloud_file'], transform, with_transforms=with_transforms ) elif input_type == 'voxels': inputs_field = data.VoxelsField( cfg['data']['voxels_file'] ) elif input_type == 'idx': inputs_field = data.IndexField() else: raise ValueError( 'Invalid input type (%s)' % input_type) return inputs_field
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 preprocess(points): output = data.SubsamplePointcloud( cfg["data"]["pointcloud_n"])(points) output = data.PointcloudNoise( cfg["data"]["pointcloud_noise"])(output) return output