diff --git a/ci/unit_tests/test_endoscopic_tool_segmentation.py b/ci/unit_tests/test_endoscopic_tool_segmentation.py index 56c7207a..94a8dbfa 100644 --- a/ci/unit_tests/test_endoscopic_tool_segmentation.py +++ b/ci/unit_tests/test_endoscopic_tool_segmentation.py @@ -31,14 +31,23 @@ ] TEST_CASE_2 = [ # inference - { - "bundle_root": "models/endoscopic_tool_segmentation", - "handlers#0#_disabled_": True, - "preprocessing#transforms#2#spatial_size": [32, 32], - } + {"bundle_root": "models/endoscopic_tool_segmentation", "preprocessing#transforms#2#spatial_size": [32, 32]} ] +def test_order(test_name1, test_name2): + def get_order(name): + if "train" in name: + return 1 + if "eval" in name: + return 2 + if "infer" in name: + return 3 + return 4 + + return get_order(test_name1) - get_order(test_name2) + + class TestEndoscopicSeg(unittest.TestCase): def setUp(self): self.dataset_dir = tempfile.mkdtemp() @@ -105,4 +114,6 @@ def test_infer_config(self, override): if __name__ == "__main__": - unittest.main() + loader = unittest.TestLoader() + loader.sortTestMethodsUsing = test_order + unittest.main(testLoader=loader) diff --git a/models/endoscopic_tool_segmentation/configs/inference.json b/models/endoscopic_tool_segmentation/configs/inference.json index 0f140d04..aec38d88 100644 --- a/models/endoscopic_tool_segmentation/configs/inference.json +++ b/models/endoscopic_tool_segmentation/configs/inference.json @@ -1,10 +1,16 @@ { "imports": [ "$import glob", + "$import numpy", "$import os" ], "bundle_root": ".", + "image_key": "image", "output_dir": "$@bundle_root + '/eval'", + "output_ext": ".png", + "output_dtype": "$numpy.float32", + "output_postfix": "trans", + "separate_folder": true, "dataset_dir": "/workspace/data/endoscopic_tool_dataset", "datalist": "$list(sorted(glob.glob(os.path.join(@dataset_dir,'test', '*', '*[!seg].jpg'))))", "device": "$torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')", @@ -24,18 +30,18 @@ "transforms": [ { "_target_": "LoadImaged", - "keys": "image", + "keys": "@image_key", "image_only": false }, { "_target_": "EnsureChannelFirstd", - "keys": "image", + "keys": "@image_key", "channel_dim": -1 }, { "_target_": "Resized", "keys": [ - "image" + "@image_key" ], "spatial_size": [ 736, @@ -48,7 +54,7 @@ { "_target_": "ScaleIntensityd", "keys": [ - "image" + "@image_key" ] } ] @@ -75,7 +81,7 @@ "_target_": "Invertd", "keys": "pred", "transform": "@preprocessing", - "orig_keys": "image", + "orig_keys": "@image_key", "meta_key_postfix": "meta_dict", "nearest_interp": false, "to_tensor": true @@ -100,21 +106,16 @@ "keys": "pred", "meta_keys": "pred_meta_dict", "output_dir": "@output_dir", - "output_ext": ".png", + "output_ext": "@output_ext", + "output_dtype": "@output_dtype", + "output_postfix": "@output_postfix", + "separate_folder": "@separate_folder", "scale": 255, "squeeze_end_dims": true } ] }, "handlers": [ - { - "_target_": "CheckpointLoader", - "load_path": "$@bundle_root + '/models/model.pt'", - "load_dict": { - "model": "@network" - }, - "map_location": "@device" - }, { "_target_": "StatsHandler", "iteration_log": false @@ -129,8 +130,17 @@ "postprocessing": "@postprocessing", "val_handlers": "@handlers" }, + "checkpointloader": { + "_target_": "CheckpointLoader", + "load_path": "$@bundle_root + '/models/model.pt'", + "load_dict": { + "model": "@network" + }, + "map_location": "@device" + }, "initialize": [ - "$monai.utils.set_determinism(seed=123)" + "$monai.utils.set_determinism(seed=123)", + "$@checkpointloader(@evaluator)" ], "run": [ "$@evaluator.run()" diff --git a/models/endoscopic_tool_segmentation/configs/inference_trt.json b/models/endoscopic_tool_segmentation/configs/inference_trt.json index adfbca41..ec1e88ab 100644 --- a/models/endoscopic_tool_segmentation/configs/inference_trt.json +++ b/models/endoscopic_tool_segmentation/configs/inference_trt.json @@ -4,7 +4,9 @@ "$import os", "$import torch_tensorrt" ], - "handlers#0#_disabled_": true, "network_def": "$torch.jit.load(@bundle_root + '/models/model_trt.ts')", - "evaluator#amp": false + "evaluator#amp": false, + "initialize": [ + "$monai.utils.set_determinism(seed=123)" + ] } diff --git a/models/endoscopic_tool_segmentation/configs/metadata.json b/models/endoscopic_tool_segmentation/configs/metadata.json index 1fba50a7..612e253b 100644 --- a/models/endoscopic_tool_segmentation/configs/metadata.json +++ b/models/endoscopic_tool_segmentation/configs/metadata.json @@ -1,7 +1,8 @@ { "schema": "https://github.com/Project-MONAI/MONAI-extra-test-data/releases/download/0.8.1/meta_schema_20220324.json", - "version": "0.5.6", + "version": "0.5.7", "changelog": { + "0.5.7": "add checkpoint loader for infer", "0.5.6": "update to use monai 1.3.0", "0.5.5": "update AddChanneld with EnsureChannelFirstd and set image_only to False", "0.5.4": "fix the wrong GPU index issue of multi-node", diff --git a/models/pancreas_ct_dints_segmentation/configs/inference.yaml b/models/pancreas_ct_dints_segmentation/configs/inference.yaml index d48732b8..ef81e4cf 100644 --- a/models/pancreas_ct_dints_segmentation/configs/inference.yaml +++ b/models/pancreas_ct_dints_segmentation/configs/inference.yaml @@ -1,13 +1,19 @@ --- imports: - "$import glob" +- "$import numpy" - "$import os" 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: "." +image_key: "image" output_dir: "$@bundle_root + '/eval'" +output_ext: ".nii.gz" +output_dtype: "$numpy.float32" +output_postfix: "trans" +separate_folder: true dataset_dir: "/workspace/data/msd/Task07_Pancreas" data_list_file_path: "$@bundle_root + '/configs/dataset_0.json'" datalist: "$monai.data.load_decathlon_datalist(@data_list_file_path, data_list_key='testing', @@ -35,28 +41,28 @@ preprocessing: _target_: Compose transforms: - _target_: LoadImaged - keys: image + keys: "@image_key" - _target_: EnsureChannelFirstd - keys: image + keys: "@image_key" - _target_: Orientationd - keys: image + keys: "@image_key" axcodes: RAS - _target_: Spacingd - keys: image + keys: "@image_key" pixdim: - 1 - 1 - 1 mode: bilinear - _target_: ScaleIntensityRanged - keys: image + keys: "@image_key" a_min: -87 a_max: 199 b_min: 0 b_max: 1 clip: true - _target_: EnsureTyped - keys: image + keys: "@image_key" dataset: _target_: Dataset data: "@datalist" @@ -84,7 +90,7 @@ postprocessing: - _target_: Invertd keys: pred transform: "@preprocessing" - orig_keys: image + orig_keys: "@image_key" meta_key_postfix: meta_dict nearest_interp: false to_tensor: true @@ -95,11 +101,11 @@ postprocessing: keys: pred meta_keys: pred_meta_dict output_dir: "@output_dir" + output_ext: "@output_ext" + output_dtype: "@output_dtype" + output_postfix: "@output_postfix" + separate_folder: "@separate_folder" handlers: -- _target_: CheckpointLoader - load_path: "$@bundle_root + '/models/model.pt'" - load_dict: - model: "@network" - _target_: StatsHandler iteration_log: false evaluator: @@ -111,7 +117,13 @@ evaluator: postprocessing: "@postprocessing" val_handlers: "@handlers" amp: true +checkpointloader: + _target_: CheckpointLoader + load_path: "$@bundle_root + '/models/model.pt'" + load_dict: + model: "@network" initialize: - "$setattr(torch.backends.cudnn, 'benchmark', True)" +- "$@checkpointloader(@evaluator)" run: - "$@evaluator.run()" diff --git a/models/pancreas_ct_dints_segmentation/configs/inference_trt.yaml b/models/pancreas_ct_dints_segmentation/configs/inference_trt.yaml index 1bb4820d..b4ce1756 100644 --- a/models/pancreas_ct_dints_segmentation/configs/inference_trt.yaml +++ b/models/pancreas_ct_dints_segmentation/configs/inference_trt.yaml @@ -3,6 +3,7 @@ imports: - "$import glob" - "$import os" - "$import torch_tensorrt" -handlers#0#_disabled_: true network_def: "$torch.jit.load(@bundle_root + '/models/model_trt.ts')" evaluator#amp: false +initialize: +- "$setattr(torch.backends.cudnn, 'benchmark', True)" diff --git a/models/pancreas_ct_dints_segmentation/configs/metadata.json b/models/pancreas_ct_dints_segmentation/configs/metadata.json index 05717126..2f9cb0c6 100644 --- a/models/pancreas_ct_dints_segmentation/configs/metadata.json +++ b/models/pancreas_ct_dints_segmentation/configs/metadata.json @@ -1,7 +1,8 @@ { "schema": "https://github.com/Project-MONAI/MONAI-extra-test-data/releases/download/0.8.1/meta_schema_20220324.json", - "version": "0.4.5", + "version": "0.4.6", "changelog": { + "0.4.6": "add checkpoint loader for infer", "0.4.5": "set image_only to False", "0.4.4": "update the benchmark results of TensorRT", "0.4.3": "add support for TensorRT conversion and inference", diff --git a/models/pathology_nuclick_annotation/configs/inference.json b/models/pathology_nuclick_annotation/configs/inference.json index c21e9c89..bb3e4661 100644 --- a/models/pathology_nuclick_annotation/configs/inference.json +++ b/models/pathology_nuclick_annotation/configs/inference.json @@ -1,12 +1,18 @@ { "imports": [ "$import glob", + "$import numpy", "$import json", "$import pathlib", "$import os" ], "bundle_root": ".", + "image_key": "image", "output_dir": "$@bundle_root + '/eval'", + "output_ext": ".png", + "output_dtype": "$numpy.float32", + "output_postfix": "trans", + "separate_folder": true, "dataset_dir": "/workspace/data/CoNSePNuclei", "images": "$list(sorted(glob.glob(@dataset_dir + '/Test/Images/*.png')))[:1]", "centroids": "$list(sorted(glob.glob(@dataset_dir + '/Test/Centroids/*.txt')))[:1]", @@ -32,17 +38,17 @@ "transforms": [ { "_target_": "LoadImaged", - "keys": "image", + "keys": "@image_key", "dtype": "uint8", "image_only": false }, { "_target_": "EnsureChannelFirstd", - "keys": "image" + "keys": "@image_key" }, { "_target_": "ScaleIntensityRanged", - "keys": "image", + "keys": "@image_key", "a_min": 0.0, "a_max": 255.0, "b_min": -1.0, @@ -50,13 +56,13 @@ }, { "_target_": "AddClickSignalsd", - "image": "image", + "image": "@image_key", "foreground": "foreground", "gaussian": false }, { "_target_": "SqueezeDimd", - "keys": "image" + "keys": "@image_key" } ] }, @@ -97,18 +103,14 @@ "keys": "pred", "meta_keys": "pred_meta_dict", "output_dir": "@output_dir", - "output_ext": ".png" + "output_ext": "@output_ext", + "output_dtype": "@output_dtype", + "output_postfix": "@output_postfix", + "separate_folder": "@separate_folder" } ] }, "handlers": [ - { - "_target_": "CheckpointLoader", - "load_path": "$@bundle_root + '/models/model.pt'", - "load_dict": { - "model": "@network" - } - }, { "_target_": "StatsHandler", "iteration_log": false @@ -124,10 +126,18 @@ "val_handlers": "@handlers", "amp": true }, + "checkpointloader": { + "_target_": "CheckpointLoader", + "load_path": "$@bundle_root + '/models/model.pt'", + "load_dict": { + "model": "@network" + } + }, "initialize": [ "$import sys", "$sys.path.append(@bundle_root)", - "$monai.utils.set_determinism(seed=123)" + "$monai.utils.set_determinism(seed=123)", + "$@checkpointloader(@evaluator)" ], "run": [ "$@evaluator.run()" diff --git a/models/pathology_nuclick_annotation/configs/inference_trt.json b/models/pathology_nuclick_annotation/configs/inference_trt.json index 23c2c168..5d6bb807 100644 --- a/models/pathology_nuclick_annotation/configs/inference_trt.json +++ b/models/pathology_nuclick_annotation/configs/inference_trt.json @@ -6,7 +6,11 @@ "$import os", "$import torch_tensorrt" ], - "handlers#0#_disabled_": true, "network_def": "$torch.jit.load(@bundle_root + '/models/model_trt.ts')", - "evaluator#amp": false + "evaluator#amp": false, + "initialize": [ + "$import sys", + "$sys.path.append(@bundle_root)", + "$monai.utils.set_determinism(seed=123)" + ] } diff --git a/models/pathology_nuclick_annotation/configs/metadata.json b/models/pathology_nuclick_annotation/configs/metadata.json index a02729f1..1dfafe62 100644 --- a/models/pathology_nuclick_annotation/configs/metadata.json +++ b/models/pathology_nuclick_annotation/configs/metadata.json @@ -1,7 +1,8 @@ { "schema": "https://github.com/Project-MONAI/MONAI-extra-test-data/releases/download/0.8.1/meta_schema_20220324.json", - "version": "0.1.6", + "version": "0.1.7", "changelog": { + "0.1.7": "add checkpoint loader for infer", "0.1.6": "set image_only to False", "0.1.5": "add support for TensorRT conversion and inference", "0.1.4": "fix the wrong GPU index issue of multi-node", diff --git a/models/swin_unetr_btcv_segmentation/configs/inference.json b/models/swin_unetr_btcv_segmentation/configs/inference.json index 9980d60c..be9bb859 100644 --- a/models/swin_unetr_btcv_segmentation/configs/inference.json +++ b/models/swin_unetr_btcv_segmentation/configs/inference.json @@ -1,10 +1,16 @@ { "imports": [ "$import glob", + "$import numpy", "$import os" ], "bundle_root": ".", + "image_key": "image", "output_dir": "$@bundle_root + '/eval'", + "output_ext": ".nii.gz", + "output_dtype": "$numpy.float32", + "output_postfix": "trans", + "separate_folder": true, "dataset_dir": "/workspace/data/RawData/", "datalist": "$list(sorted(glob.glob(@dataset_dir + '/imagesTs/*.nii.gz')))", "device": "$torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')", @@ -23,21 +29,21 @@ "transforms": [ { "_target_": "LoadImaged", - "keys": "image", + "keys": "@image_key", "reader": "ITKReader" }, { "_target_": "EnsureChannelFirstd", - "keys": "image" + "keys": "@image_key" }, { "_target_": "Orientationd", - "keys": "image", + "keys": "@image_key", "axcodes": "RAS" }, { "_target_": "Spacingd", - "keys": "image", + "keys": "@image_key", "pixdim": [ 1.5, 1.5, @@ -47,7 +53,7 @@ }, { "_target_": "ScaleIntensityRanged", - "keys": "image", + "keys": "@image_key", "a_min": -175, "a_max": 250, "b_min": 0.0, @@ -56,7 +62,7 @@ }, { "_target_": "EnsureTyped", - "keys": "image" + "keys": "@image_key" } ] }, @@ -94,7 +100,7 @@ "_target_": "Invertd", "keys": "pred", "transform": "@preprocessing", - "orig_keys": "image", + "orig_keys": "@image_key", "nearest_interp": false, "to_tensor": true }, @@ -106,18 +112,15 @@ { "_target_": "SaveImaged", "keys": "pred", - "output_dir": "@output_dir" + "output_dir": "@output_dir", + "output_ext": "@output_ext", + "output_dtype": "@output_dtype", + "output_postfix": "@output_postfix", + "separate_folder": "@separate_folder" } ] }, "handlers": [ - { - "_target_": "CheckpointLoader", - "load_path": "$@bundle_root + '/models/model.pt'", - "load_dict": { - "model": "@network" - } - }, { "_target_": "StatsHandler", "iteration_log": false @@ -133,8 +136,16 @@ "val_handlers": "@handlers", "amp": true }, + "checkpointloader": { + "_target_": "CheckpointLoader", + "load_path": "$@bundle_root + '/models/model.pt'", + "load_dict": { + "model": "@network" + } + }, "initialize": [ - "$monai.utils.set_determinism(seed=123)" + "$monai.utils.set_determinism(seed=123)", + "$@checkpointloader(@evaluator)" ], "run": [ "$@evaluator.run()" diff --git a/models/swin_unetr_btcv_segmentation/configs/metadata.json b/models/swin_unetr_btcv_segmentation/configs/metadata.json index 7895b092..96a75990 100644 --- a/models/swin_unetr_btcv_segmentation/configs/metadata.json +++ b/models/swin_unetr_btcv_segmentation/configs/metadata.json @@ -1,7 +1,8 @@ { "schema": "https://github.com/Project-MONAI/MONAI-extra-test-data/releases/download/0.8.1/meta_schema_20220324.json", - "version": "0.5.1", + "version": "0.5.2", "changelog": { + "0.5.2": "add checkpoint loader for infer", "0.5.1": "remove meta_dict usage", "0.5.0": "fix the wrong GPU index issue of multi-node", "0.4.9": "remove error dollar symbol in readme", diff --git a/models/wholeBody_ct_segmentation/configs/inference.json b/models/wholeBody_ct_segmentation/configs/inference.json index dbecbafb..8fcf0e2b 100644 --- a/models/wholeBody_ct_segmentation/configs/inference.json +++ b/models/wholeBody_ct_segmentation/configs/inference.json @@ -6,10 +6,16 @@ }, "imports": [ "$import glob", + "$import numpy", "$import os" ], "bundle_root": ".", + "image_key": "image", "output_dir": "$@bundle_root + '/eval'", + "output_ext": ".nii.gz", + "output_dtype": "$numpy.float32", + "output_postfix": "trans", + "separate_folder": true, "dataset_dir": "sampledata", "datalist": "$list(sorted(glob.glob(@dataset_dir + '/imagesTs/*.nii.gz')))", "device": "$torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')", @@ -40,35 +46,35 @@ "transforms": [ { "_target_": "LoadImaged", - "keys": "image" + "keys": "@image_key" }, { "_target_": "EnsureTyped", - "keys": "image" + "keys": "@image_key" }, { "_target_": "EnsureChannelFirstd", - "keys": "image" + "keys": "@image_key" }, { "_target_": "Orientationd", - "keys": "image", + "keys": "@image_key", "axcodes": "RAS" }, { "_target_": "Spacingd", - "keys": "image", + "keys": "@image_key", "pixdim": "@pixdim", "mode": "bilinear" }, { "_target_": "NormalizeIntensityd", - "keys": "image", + "keys": "@image_key", "nonzero": true }, { "_target_": "ScaleIntensityd", - "keys": "image", + "keys": "@image_key", "minv": -1.0, "maxv": 1.0 } @@ -116,25 +122,22 @@ "_target_": "Invertd", "keys": "pred", "transform": "@preprocessing", - "orig_keys": "image", + "orig_keys": "@image_key", "nearest_interp": true, "to_tensor": true }, { "_target_": "SaveImaged", "keys": "pred", - "output_dir": "@output_dir" + "output_dir": "@output_dir", + "output_ext": "@output_ext", + "output_dtype": "@output_dtype", + "output_postfix": "@output_postfix", + "separate_folder": "@separate_folder" } ] }, "handlers": [ - { - "_target_": "CheckpointLoader", - "load_path": "$@bundle_root + '/models/' + @modelname", - "load_dict": { - "model": "@network" - } - }, { "_target_": "StatsHandler", "iteration_log": false @@ -150,8 +153,16 @@ "val_handlers": "@handlers", "amp": true }, + "checkpointloader": { + "_target_": "CheckpointLoader", + "load_path": "$@bundle_root + '/models/' + @modelname", + "load_dict": { + "model": "@network" + } + }, "initialize": [ - "$setattr(torch.backends.cudnn, 'benchmark', True)" + "$setattr(torch.backends.cudnn, 'benchmark', True)", + "$@checkpointloader(@evaluator)" ], "run": [ "$@evaluator.run()" diff --git a/models/wholeBody_ct_segmentation/configs/inference_trt.json b/models/wholeBody_ct_segmentation/configs/inference_trt.json index adfbca41..8a14798b 100644 --- a/models/wholeBody_ct_segmentation/configs/inference_trt.json +++ b/models/wholeBody_ct_segmentation/configs/inference_trt.json @@ -4,7 +4,9 @@ "$import os", "$import torch_tensorrt" ], - "handlers#0#_disabled_": true, "network_def": "$torch.jit.load(@bundle_root + '/models/model_trt.ts')", - "evaluator#amp": false + "evaluator#amp": false, + "initialize": [ + "$setattr(torch.backends.cudnn, 'benchmark', True)" + ] } diff --git a/models/wholeBody_ct_segmentation/configs/metadata.json b/models/wholeBody_ct_segmentation/configs/metadata.json index b2e5303a..9bb779b1 100644 --- a/models/wholeBody_ct_segmentation/configs/metadata.json +++ b/models/wholeBody_ct_segmentation/configs/metadata.json @@ -1,7 +1,8 @@ { "schema": "https://github.com/Project-MONAI/MONAI-extra-test-data/releases/download/0.8.1/meta_schema_20220324.json", - "version": "0.2.1", + "version": "0.2.2", "changelog": { + "0.2.2": "add checkpoint loader for infer", "0.2.1": "remove meta_dict usage", "0.2.0": "add support for TensorRT conversion and inference", "0.1.9": "fix the wrong GPU index issue of multi-node",