| --- |
| imports: |
| - "$import glob" |
| - "$import json" |
| - "$import os" |
| - "$import ignite" |
| - "$from scipy import ndimage" |
| input_channels: 1 |
| output_classes: 3 |
| arch_ckpt_path: "$@bundle_root + '/models/search_code_18590.pt'" |
| arch_ckpt: "$torch.load(@arch_ckpt_path, map_location=torch.device('cuda'))" |
| bundle_root: "." |
| ckpt_dir: "$@bundle_root + '/models'" |
| output_dir: "$@bundle_root + '/eval'" |
| dataset_dir: "/workspace/data/msd/Task07_Pancreas" |
| data_list_file_path: "$@bundle_root + '/configs/dataset_0.json'" |
| train_datalist: "$monai.data.load_decathlon_datalist(@data_list_file_path, data_list_key='training', |
| base_dir=@dataset_dir)" |
| val_datalist: "$monai.data.load_decathlon_datalist(@data_list_file_path, data_list_key='validation', |
| base_dir=@dataset_dir)" |
| device: "$torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')" |
| dints_space: |
| _target_: monai.networks.nets.TopologyInstance |
| channel_mul: 1 |
| num_blocks: 12 |
| num_depths: 4 |
| use_downsample: true |
| arch_code: |
| - "$@arch_ckpt['arch_code_a']" |
| - "$@arch_ckpt['arch_code_c']" |
| device: "$torch.device('cuda')" |
| network_def: |
| _target_: monai.networks.nets.DiNTS |
| dints_space: "@dints_space" |
| in_channels: "@input_channels" |
| num_classes: "@output_classes" |
| use_downsample: true |
| node_a: "$@arch_ckpt['node_a']" |
| network: "$@network_def.to(@device)" |
| loss: |
| _target_: DiceCELoss |
| include_background: false |
| to_onehot_y: true |
| softmax: true |
| squared_pred: true |
| batch: true |
| smooth_nr: 1.0e-05 |
| smooth_dr: 1.0e-05 |
| optimizer: |
| _target_: torch.optim.SGD |
| params: "$@network.parameters()" |
| momentum: 0.9 |
| weight_decay: 4.0e-05 |
| lr: 0.025 |
| lr_scheduler: |
| _target_: torch.optim.lr_scheduler.StepLR |
| optimizer: "@optimizer" |
| step_size: 80 |
| gamma: 0.5 |
| image_key: image |
| label_key: label |
| val_interval: 10 |
| train: |
| deterministic_transforms: |
| - _target_: LoadImaged |
| keys: |
| - "@image_key" |
| - "@label_key" |
| image_only: false |
| - _target_: EnsureChannelFirstd |
| keys: |
| - "@image_key" |
| - "@label_key" |
| - _target_: Orientationd |
| keys: |
| - "@image_key" |
| - "@label_key" |
| axcodes: RAS |
| - _target_: Spacingd |
| keys: |
| - "@image_key" |
| - "@label_key" |
| pixdim: |
| - 1 |
| - 1 |
| - 1 |
| mode: |
| - bilinear |
| - nearest |
| align_corners: |
| - true |
| - true |
| - _target_: CastToTyped |
| keys: "@image_key" |
| dtype: "$torch.float32" |
| - _target_: ScaleIntensityRanged |
| keys: "@image_key" |
| a_min: -87 |
| a_max: 199 |
| b_min: 0 |
| b_max: 1 |
| clip: true |
| - _target_: CastToTyped |
| keys: |
| - "@image_key" |
| - "@label_key" |
| dtype: |
| - "$np.float16" |
| - "$np.uint8" |
| - _target_: CopyItemsd |
| keys: "@label_key" |
| times: 1 |
| names: |
| - label4crop |
| - _target_: Lambdad |
| keys: label4crop |
| func: "$lambda x, s=@output_classes: np.concatenate(tuple([ndimage.binary_dilation((x==_k).astype(x.dtype), |
| iterations=48).astype(float) for _k in range(s)]), axis=0)" |
| overwrite: true |
| - _target_: EnsureTyped |
| keys: |
| - "@image_key" |
| - "@label_key" |
| - _target_: CastToTyped |
| keys: "@image_key" |
| dtype: "$torch.float32" |
| - _target_: SpatialPadd |
| keys: |
| - "@image_key" |
| - "@label_key" |
| - label4crop |
| spatial_size: |
| - 96 |
| - 96 |
| - 96 |
| mode: |
| - reflect |
| - constant |
| - constant |
| random_transforms: |
| - _target_: RandCropByLabelClassesd |
| keys: |
| - "@image_key" |
| - "@label_key" |
| label_key: label4crop |
| num_classes: "@output_classes" |
| ratios: "$[1,] * @output_classes" |
| spatial_size: |
| - 96 |
| - 96 |
| - 96 |
| num_samples: 1 |
| - _target_: Lambdad |
| keys: label4crop |
| func: "$lambda x: 0" |
| - _target_: RandRotated |
| keys: |
| - "@image_key" |
| - "@label_key" |
| range_x: 0.3 |
| range_y: 0.3 |
| range_z: 0.3 |
| mode: |
| - bilinear |
| - nearest |
| prob: 0.2 |
| - _target_: RandZoomd |
| keys: |
| - "@image_key" |
| - "@label_key" |
| min_zoom: 0.8 |
| max_zoom: 1.2 |
| mode: |
| - trilinear |
| - nearest |
| align_corners: |
| - true |
| - |
| prob: 0.16 |
| - _target_: RandGaussianSmoothd |
| keys: "@image_key" |
| sigma_x: |
| - 0.5 |
| - 1.15 |
| sigma_y: |
| - 0.5 |
| - 1.15 |
| sigma_z: |
| - 0.5 |
| - 1.15 |
| prob: 0.15 |
| - _target_: RandScaleIntensityd |
| keys: "@image_key" |
| factors: 0.3 |
| prob: 0.5 |
| - _target_: RandShiftIntensityd |
| keys: "@image_key" |
| offsets: 0.1 |
| prob: 0.5 |
| - _target_: RandGaussianNoised |
| keys: "@image_key" |
| std: 0.01 |
| prob: 0.15 |
| - _target_: RandFlipd |
| keys: |
| - "@image_key" |
| - "@label_key" |
| spatial_axis: 0 |
| prob: 0.5 |
| - _target_: RandFlipd |
| keys: |
| - "@image_key" |
| - "@label_key" |
| spatial_axis: 1 |
| prob: 0.5 |
| - _target_: RandFlipd |
| keys: |
| - "@image_key" |
| - "@label_key" |
| spatial_axis: 2 |
| prob: 0.5 |
| - _target_: CastToTyped |
| keys: |
| - "@image_key" |
| - "@label_key" |
| dtype: |
| - "$torch.float32" |
| - "$torch.uint8" |
| - _target_: ToTensord |
| keys: |
| - "@image_key" |
| - "@label_key" |
| preprocessing: |
| _target_: Compose |
| transforms: "$@train#deterministic_transforms + @train#random_transforms" |
| dataset: |
| _target_: CacheDataset |
| data: "@train_datalist" |
| transform: "@train#preprocessing" |
| cache_rate: 0.125 |
| num_workers: 4 |
| dataloader: |
| _target_: DataLoader |
| dataset: "@train#dataset" |
| batch_size: 2 |
| shuffle: true |
| num_workers: 4 |
| inferer: |
| _target_: SimpleInferer |
| postprocessing: |
| _target_: Compose |
| transforms: |
| - _target_: Activationsd |
| keys: pred |
| softmax: true |
| - _target_: AsDiscreted |
| keys: |
| - pred |
| - label |
| argmax: |
| - true |
| - false |
| to_onehot: "@output_classes" |
| handlers: |
| - _target_: LrScheduleHandler |
| lr_scheduler: "@lr_scheduler" |
| print_lr: true |
| - _target_: ValidationHandler |
| validator: "@validate#evaluator" |
| epoch_level: true |
| interval: "@val_interval" |
| - _target_: StatsHandler |
| tag_name: train_loss |
| output_transform: "$monai.handlers.from_engine(['loss'], first=True)" |
| - _target_: TensorBoardStatsHandler |
| log_dir: "@output_dir" |
| tag_name: train_loss |
| output_transform: "$monai.handlers.from_engine(['loss'], first=True)" |
| key_metric: |
| train_accuracy: |
| _target_: ignite.metrics.Accuracy |
| output_transform: "$monai.handlers.from_engine(['pred', 'label'])" |
| trainer: |
| _target_: SupervisedTrainer |
| max_epochs: 400 |
| device: "@device" |
| train_data_loader: "@train#dataloader" |
| network: "@network" |
| loss_function: "@loss" |
| optimizer: "@optimizer" |
| inferer: "@train#inferer" |
| postprocessing: "@train#postprocessing" |
| key_train_metric: "@train#key_metric" |
| train_handlers: "@train#handlers" |
| amp: true |
| validate: |
| preprocessing: |
| _target_: Compose |
| transforms: "%train#deterministic_transforms" |
| dataset: |
| _target_: CacheDataset |
| data: "@val_datalist" |
| transform: "@validate#preprocessing" |
| cache_rate: 0.125 |
| dataloader: |
| _target_: DataLoader |
| dataset: "@validate#dataset" |
| batch_size: 1 |
| shuffle: false |
| num_workers: 4 |
| inferer: |
| _target_: SlidingWindowInferer |
| roi_size: |
| - 96 |
| - 96 |
| - 96 |
| sw_batch_size: 6 |
| overlap: 0.625 |
| postprocessing: "%train#postprocessing" |
| handlers: |
| - _target_: StatsHandler |
| iteration_log: false |
| - _target_: TensorBoardStatsHandler |
| log_dir: "@output_dir" |
| iteration_log: false |
| - _target_: CheckpointSaver |
| save_dir: "@ckpt_dir" |
| save_dict: |
| model: "@network" |
| save_key_metric: true |
| key_metric_filename: model.pt |
| key_metric: |
| val_mean_dice: |
| _target_: MeanDice |
| include_background: false |
| output_transform: "$monai.handlers.from_engine(['pred', 'label'])" |
| additional_metrics: |
| val_accuracy: |
| _target_: ignite.metrics.Accuracy |
| output_transform: "$monai.handlers.from_engine(['pred', 'label'])" |
| evaluator: |
| _target_: SupervisedEvaluator |
| device: "@device" |
| val_data_loader: "@validate#dataloader" |
| network: "@network" |
| inferer: "@validate#inferer" |
| postprocessing: "@validate#postprocessing" |
| key_val_metric: "@validate#key_metric" |
| additional_metrics: "@validate#additional_metrics" |
| val_handlers: "@validate#handlers" |
| amp: true |
| initialize: |
| - "$monai.utils.set_determinism(seed=123)" |
| run: |
| - "$@train#trainer.run()" |
|
|