def __init__(self, name, volume_config, slicing_config, defect_augmentation_config, master_config=None): assert isinstance(volume_config, dict) assert isinstance(slicing_config, dict) assert isinstance(defect_augmentation_config, dict) assert 'raw' in volume_config assert 'segmentation' in volume_config volume_config = deepcopy(volume_config) self.scaling_factors = volume_config.pop("scaling_factors") # Get kwargs for raw volume raw_volume_kwargs = dict(volume_config.get('raw')) # check if we have special dict entries for names in the defect augmentation # slicing config augmentation_config = deepcopy(defect_augmentation_config) for slicing_key, slicing_item in augmentation_config[ 'artifact_source']['slicing_config'].items(): if isinstance(slicing_item, dict): new_item = augmentation_config['artifact_source'][ 'slicing_config'][slicing_key][name] augmentation_config['artifact_source']['slicing_config'][ slicing_key] = new_item raw_volume_kwargs.update( {'defect_augmentation_config': augmentation_config}) raw_volume_kwargs.update(slicing_config) # Build raw volume self.raw_volume = RawVolumeWithDefectAugmentation(name=name, **raw_volume_kwargs) # Get kwargs for segmentation volume segmentation_volume_kwargs = dict(volume_config.get('segmentation')) segmentation_volume_kwargs.update(slicing_config) self.affinity_config = segmentation_volume_kwargs.pop( 'affinity_config', None) # Build segmentation volume self.segmentation_volume = SegmentationVolume( name=name, **segmentation_volume_kwargs) rejection_threshold = volume_config.get('rejection_threshold', 0.92) super().__init__(self.raw_volume, self.segmentation_volume, sync=True, rejection_dataset_indices=1, rejection_criterion=RejectSingleLabelVolumes( 1.0, 0.95)) # Set master config (for transforms) self.master_config = {} if master_config is None else master_config # Get transforms self.transforms = self.get_transforms()
def __init__(self, name, volume_config, slicing_config, defect_augmentation_config, master_config=None): assert isinstance(volume_config, dict) assert isinstance(slicing_config, dict) assert isinstance(defect_augmentation_config, dict) assert 'raw' in volume_config assert 'segmentation' in volume_config volume_config = deepcopy(volume_config) # Get kwargs for raw volume raw_volume_kwargs = dict(volume_config.get('raw')) # check if we have special dict entries for names in the defect augmentation # slicing config augmentation_config = deepcopy(defect_augmentation_config) for slicing_key, slicing_item in augmentation_config[ 'artifact_source']['slicing_config'].items(): if isinstance(slicing_item, dict): new_item = augmentation_config['artifact_source'][ 'slicing_config'][slicing_key][name] augmentation_config['artifact_source']['slicing_config'][ slicing_key] = new_item raw_volume_kwargs.update( {'defect_augmentation_config': augmentation_config}) raw_volume_kwargs.update(slicing_config) # Build raw volume ignore_slice_list = deepcopy( augmentation_config.get("ignore_slice_list", None)) if isinstance(ignore_slice_list, dict): ignore_slice_list = ignore_slice_list.get(name, []) self.raw_volume = RawVolumeWithDefectAugmentation( name=name, ignore_slice_list=ignore_slice_list, **raw_volume_kwargs) # Get kwargs for segmentation volume segmentation_volume_kwargs = dict(volume_config.get('segmentation')) segmentation_volume_kwargs.update(slicing_config) self.affinity_config = segmentation_volume_kwargs.pop( 'affinity_config', None) # Build segmentation volume self.segmentation_volume = SegmentationVolume( name=name, **segmentation_volume_kwargs) volumes_to_load = [self.raw_volume, self.segmentation_volume] # Load additional masks: self.extra_masks_volume = None if volume_config.get('extra_masks', False): extra_masks_kwargs = dict(volume_config.get('extra_masks')) extra_masks_kwargs.update(slicing_config) self.extra_masks_volume = SegmentationVolume(name=name, **extra_masks_kwargs) volumes_to_load.append(self.extra_masks_volume) rejection_threshold = volume_config.get('rejection_threshold', 0.5) super().__init__(*volumes_to_load, sync=True, rejection_dataset_indices=1, rejection_criterion=RejectSingleLabelVolumes( 1.0, rejection_threshold, defected_label=master_config.get( 'duplicate_GT_defected_slices', {}).get('defect_label', -1))) # Set master config (for transforms) self.master_config = {} if master_config is None else deepcopy( master_config) # Get transforms self.transforms = self.get_transforms()
def __init__(self, name, volume_config, slicing_config, defect_augmentation_config, master_config=None): raise DeprecationWarning("Use newer version in segmfriends") assert isinstance(volume_config, dict) assert isinstance(slicing_config, dict) assert isinstance(defect_augmentation_config, dict) assert 'raw' in volume_config assert 'segmentation' in volume_config assert 'various_masks' in volume_config volume_config = deepcopy(volume_config) # Get kwargs for raw volume raw_volume_kwargs = dict(volume_config.get('raw')) # check if we have special dict entries for names in the defect augmentation # slicing config augmentation_config = deepcopy(defect_augmentation_config) for slicing_key, slicing_item in augmentation_config[ 'artifact_source']['slicing_config'].items(): if isinstance(slicing_item, dict): new_item = augmentation_config['artifact_source'][ 'slicing_config'][slicing_key][name] augmentation_config['artifact_source']['slicing_config'][ slicing_key] = new_item raw_volume_kwargs.update( {'defect_augmentation_config': augmentation_config}) raw_volume_kwargs.update(slicing_config) # Build raw volume self.raw_volume = RawVolumeWithDefectAugmentation(name=name, **raw_volume_kwargs) # Get kwargs for segmentation volume segmentation_volume_kwargs = dict(volume_config.get('segmentation')) segmentation_volume_kwargs.update(slicing_config) self.affinity_config = segmentation_volume_kwargs.pop( 'affinity_config', None) # Build segmentation volume self.segmentation_volume = SegmentationVolume( name=name, **segmentation_volume_kwargs) # Load additional masks: various_masks_kwargs = dict(volume_config.get('various_masks')) various_masks_kwargs.update(slicing_config) self.mask_volume = SegmentationVolume(name=name, **various_masks_kwargs) rejection_threshold = volume_config.get('rejection_threshold', 0.5) super().__init__(self.raw_volume, self.segmentation_volume, self.mask_volume, sync=True, rejection_dataset_indices=1, rejection_criterion=RejectSingleLabelVolumes( 1.0, rejection_threshold, defected_label=master_config.get( 'duplicate_GT_defected_slices', {}).get('defect_label', -1))) # Set master config (for transforms) self.master_config = {} if master_config is None else deepcopy( master_config) # Get transforms self.transforms = self.get_transforms()