| { |
| "val_images": "$list(sorted(glob.glob(@dataset_dir + '/Test/image*.npy')))", |
| "val_labels": "$list(sorted(glob.glob(@dataset_dir + '/Test/label*.npy')))", |
| "data_list": "$[{'image': i, 'label': j} for i, j in zip(@val_images, @val_labels)]", |
| "network_def": { |
| "_target_": "HoVerNet", |
| "mode": "@hovernet_mode", |
| "adapt_standard_resnet": true, |
| "in_channels": 3, |
| "out_classes": 5 |
| }, |
| "sw_batch_size": 16, |
| "validate#dataset": { |
| "_target_": "CacheDataset", |
| "data": "@data_list", |
| "transform": "@validate#preprocessing", |
| "cache_rate": 1.0, |
| "num_workers": 4 |
| }, |
| "validate#preprocessing_transforms": [ |
| { |
| "_target_": "LoadImaged", |
| "keys": [ |
| "image", |
| "label" |
| ] |
| }, |
| { |
| "_target_": "SplitDimd", |
| "keys": "label", |
| "output_postfixes": [ |
| "inst", |
| "type" |
| ], |
| "dim": -1 |
| }, |
| { |
| "_target_": "EnsureChannelFirstd", |
| "keys": [ |
| "image", |
| "label_inst", |
| "label_type" |
| ], |
| "channel_dim": -1 |
| }, |
| { |
| "_target_": "CastToTyped", |
| "keys": [ |
| "image", |
| "label_inst" |
| ], |
| "dtype": "$torch.int" |
| }, |
| { |
| "_target_": "ScaleIntensityRanged", |
| "keys": "image", |
| "a_min": 0.0, |
| "a_max": 255.0, |
| "b_min": 0.0, |
| "b_max": 1.0, |
| "clip": true |
| }, |
| { |
| "_target_": "ComputeHoVerMapsd", |
| "keys": "label_inst" |
| }, |
| { |
| "_target_": "Lambdad", |
| "keys": "label_inst", |
| "func": "$lambda x: x > 0", |
| "overwrite": "label" |
| }, |
| { |
| "_target_": "CastToTyped", |
| "keys": [ |
| "image", |
| "label_inst", |
| "label_type" |
| ], |
| "dtype": "$torch.float32" |
| } |
| ], |
| "validate#handlers": [ |
| { |
| "_target_": "CheckpointLoader", |
| "load_path": "$os.path.join(@bundle_root, 'models', 'model.pt')", |
| "load_dict": { |
| "model": "@network" |
| } |
| }, |
| { |
| "_target_": "StatsHandler", |
| "output_transform": "$lambda x: None", |
| "iteration_log": false |
| }, |
| { |
| "_target_": "MetricsSaver", |
| "save_dir": "@output_dir", |
| "metrics": [ |
| "val_mean_dice" |
| ], |
| "metric_details": [ |
| "val_mean_dice" |
| ], |
| "batch_transform": "$lambda x: [xx['image'].meta for xx in x]", |
| "summary_ops": "*" |
| } |
| ], |
| "validate#inferer": { |
| "_target_": "SlidingWindowHoVerNetInferer", |
| "roi_size": "@patch_size", |
| "sw_batch_size": "@sw_batch_size", |
| "overlap": "$1.0 - float(@out_size) / float(@patch_size)", |
| "padding_mode": "constant", |
| "cval": 0, |
| "progress": true, |
| "extra_input_padding": "$((@patch_size - @out_size) // 2,) * 4" |
| }, |
| "postprocessing_pred": { |
| "_target_": "Compose", |
| "transforms": [ |
| { |
| "_target_": "HoVerNetInstanceMapPostProcessingd", |
| "sobel_kernel_size": 21, |
| "marker_threshold": 0.5, |
| "marker_radius": 2, |
| "device": "@device" |
| }, |
| { |
| "_target_": "HoVerNetNuclearTypePostProcessingd", |
| "device": "@device" |
| }, |
| { |
| "_target_": "SaveImaged", |
| "keys": "instance_map", |
| "meta_keys": "image_meta_dict", |
| "output_ext": ".nii.gz", |
| "output_dir": "@output_dir", |
| "output_postfix": "instance_map", |
| "output_dtype": "uint32", |
| "separate_folder": false |
| }, |
| { |
| "_target_": "SaveImaged", |
| "keys": "type_map", |
| "meta_keys": "image_meta_dict", |
| "output_ext": ".nii.gz", |
| "output_dir": "@output_dir", |
| "output_postfix": "type_map", |
| "output_dtype": "uint8", |
| "separate_folder": false |
| }, |
| { |
| "_target_": "Lambdad", |
| "keys": "instance_map", |
| "func": "$lambda x: x > 0", |
| "overwrite": "nucleus_prediction" |
| } |
| ] |
| }, |
| "validate#postprocessing": { |
| "_target_": "Lambdad", |
| "keys": "pred", |
| "func": "@postprocessing_pred" |
| }, |
| "initialize": [ |
| "$setattr(torch.backends.cudnn, 'benchmark', True)" |
| ], |
| "run": [ |
| "$@validate#evaluator.run()" |
| ] |
| } |
|
|