Skip to content

Commit dfb14bd

Browse files
yiheng-wang-nvNic-Mapre-commit-ci[bot]
authored
1 Add Spleen bundle (#2)
* add spleen bundle Signed-off-by: Yiheng Wang <[email protected]> * add issue link Signed-off-by: Yiheng Wang <[email protected]> * modify bundle_root Signed-off-by: Yiheng Wang <[email protected]> * add toml file Signed-off-by: Yiheng Wang <[email protected]> * update spleen bundle Signed-off-by: Yiheng Wang <[email protected]> * [DLMED] update according to comments Signed-off-by: Nic Ma <[email protected]> * update ts model Signed-off-by: Yiheng Wang <[email protected]> * redefine spleen folder * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * revert false changes for deepedit update metadata * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * revert spleen error changes * revert ts model change * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * reproduce ts module * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * remove model files and add yml * update metadata info Signed-off-by: Yiheng Wang <[email protected]> Co-authored-by: Nic Ma <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 308203e commit dfb14bd

File tree

9 files changed

+741
-0
lines changed

9 files changed

+741
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
{
2+
"validate#postprocessing": {
3+
"_target_": "Compose",
4+
"transforms": [
5+
{
6+
"_target_": "Activationsd",
7+
"keys": "pred",
8+
"softmax": true
9+
},
10+
{
11+
"_target_": "Invertd",
12+
"keys": [
13+
"pred",
14+
"label"
15+
],
16+
"transform": "@validate#preprocessing",
17+
"orig_keys": "image",
18+
"meta_key_postfix": "meta_dict",
19+
"nearest_interp": [
20+
false,
21+
true
22+
],
23+
"to_tensor": true
24+
},
25+
{
26+
"_target_": "AsDiscreted",
27+
"keys": [
28+
"pred",
29+
"label"
30+
],
31+
"argmax": [
32+
true,
33+
false
34+
],
35+
"to_onehot": 2
36+
},
37+
{
38+
"_target_": "SaveImaged",
39+
"keys": "pred",
40+
"meta_keys": "pred_meta_dict",
41+
"output_dir": "@output_dir",
42+
"resample": false,
43+
"squeeze_end_dims": true
44+
}
45+
]
46+
},
47+
"validate#handlers": [
48+
{
49+
"_target_": "CheckpointLoader",
50+
"load_path": "$@ckpt_dir + '/model.pt'",
51+
"load_dict": {
52+
"model": "@network"
53+
}
54+
},
55+
{
56+
"_target_": "StatsHandler",
57+
"iteration_log": false
58+
},
59+
{
60+
"_target_": "MetricsSaver",
61+
"save_dir": "@output_dir",
62+
"metrics": [
63+
"val_mean_dice",
64+
"val_acc"
65+
],
66+
"metric_details": [
67+
"val_mean_dice"
68+
],
69+
"batch_transform": "$monai.handlers.from_engine(['image_meta_dict'])",
70+
"summary_ops": "*"
71+
}
72+
],
73+
"evaluating": [
74+
"$setattr(torch.backends.cudnn, 'benchmark', True)",
75+
"$@validate#evaluator.run()"
76+
]
77+
}
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
{
2+
"imports": [
3+
"$import glob",
4+
"$import os"
5+
],
6+
"bundle_root": "/workspace/data/tutorials/modules/bundle/spleen_segmentation",
7+
"output_dir": "$@bundle_root + '/eval'",
8+
"dataset_dir": "/workspace/data/Task09_Spleen",
9+
"datalist": "$list(sorted(glob.glob(@dataset_dir + '/imagesTs/*.nii.gz')))",
10+
"device": "$torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')",
11+
"network_def": {
12+
"_target_": "UNet",
13+
"spatial_dims": 3,
14+
"in_channels": 1,
15+
"out_channels": 2,
16+
"channels": [
17+
16,
18+
32,
19+
64,
20+
128,
21+
256
22+
],
23+
"strides": [
24+
2,
25+
2,
26+
2,
27+
2
28+
],
29+
"num_res_units": 2,
30+
"norm": "batch"
31+
},
32+
"network": "$@network_def.to(@device)",
33+
"preprocessing": {
34+
"_target_": "Compose",
35+
"transforms": [
36+
{
37+
"_target_": "LoadImaged",
38+
"keys": "image"
39+
},
40+
{
41+
"_target_": "EnsureChannelFirstd",
42+
"keys": "image"
43+
},
44+
{
45+
"_target_": "Orientationd",
46+
"keys": "image",
47+
"axcodes": "RAS"
48+
},
49+
{
50+
"_target_": "Spacingd",
51+
"keys": "image",
52+
"pixdim": [
53+
1.5,
54+
1.5,
55+
2.0
56+
],
57+
"mode": "bilinear"
58+
},
59+
{
60+
"_target_": "ScaleIntensityRanged",
61+
"keys": "image",
62+
"a_min": -57,
63+
"a_max": 164,
64+
"b_min": 0,
65+
"b_max": 1,
66+
"clip": true
67+
},
68+
{
69+
"_target_": "EnsureTyped",
70+
"keys": "image"
71+
}
72+
]
73+
},
74+
"dataset": {
75+
"_target_": "Dataset",
76+
"data": "$[{'image': i} for i in @datalist]",
77+
"transform": "@preprocessing"
78+
},
79+
"dataloader": {
80+
"_target_": "DataLoader",
81+
"dataset": "@dataset",
82+
"batch_size": 1,
83+
"shuffle": false,
84+
"num_workers": 4
85+
},
86+
"inferer": {
87+
"_target_": "SlidingWindowInferer",
88+
"roi_size": [
89+
96,
90+
96,
91+
96
92+
],
93+
"sw_batch_size": 4,
94+
"overlap": 0.5
95+
},
96+
"postprocessing": {
97+
"_target_": "Compose",
98+
"transforms": [
99+
{
100+
"_target_": "Activationsd",
101+
"keys": "pred",
102+
"softmax": true
103+
},
104+
{
105+
"_target_": "Invertd",
106+
"keys": "pred",
107+
"transform": "@preprocessing",
108+
"orig_keys": "image",
109+
"meta_key_postfix": "meta_dict",
110+
"nearest_interp": false,
111+
"to_tensor": true
112+
},
113+
{
114+
"_target_": "AsDiscreted",
115+
"keys": "pred",
116+
"argmax": true
117+
},
118+
{
119+
"_target_": "SaveImaged",
120+
"keys": "pred",
121+
"meta_keys": "pred_meta_dict",
122+
"output_dir": "@output_dir"
123+
}
124+
]
125+
},
126+
"handlers": [
127+
{
128+
"_target_": "CheckpointLoader",
129+
"load_path": "$@bundle_root + '/models/model.pt'",
130+
"load_dict": {
131+
"model": "@network"
132+
}
133+
},
134+
{
135+
"_target_": "StatsHandler",
136+
"iteration_log": false
137+
}
138+
],
139+
"evaluator": {
140+
"_target_": "SupervisedEvaluator",
141+
"device": "@device",
142+
"val_data_loader": "@dataloader",
143+
"network": "@network",
144+
"inferer": "@inferer",
145+
"postprocessing": "@postprocessing",
146+
"val_handlers": "@handlers",
147+
"amp": true
148+
},
149+
"evaluating": [
150+
"$setattr(torch.backends.cudnn, 'benchmark', True)",
151+
152+
]
153+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
[loggers]
2+
keys=root
3+
4+
[handlers]
5+
keys=consoleHandler
6+
7+
[formatters]
8+
keys=fullFormatter
9+
10+
[logger_root]
11+
level=INFO
12+
handlers=consoleHandler
13+
14+
[handler_consoleHandler]
15+
class=StreamHandler
16+
level=INFO
17+
formatter=fullFormatter
18+
args=(sys.stdout,)
19+
20+
[formatter_fullFormatter]
21+
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
{
2+
"schema": "https://github.com/Project-MONAI/MONAI-extra-test-data/releases/download/0.8.1/meta_schema_20220324.json",
3+
"version": "0.1.0",
4+
"changelog": {
5+
"0.1.0": "complete the model package",
6+
"0.0.1": "initialize the model package structure"
7+
},
8+
"monai_version": "0.9.0",
9+
"pytorch_version": "1.10.0",
10+
"numpy_version": "1.21.2",
11+
"optional_packages_version": {
12+
"nibabel": "3.2.1"
13+
},
14+
"task": "Decathlon spleen segmentation",
15+
"description": "A pre-trained model for volumetric (3D) segmentation of the spleen from CT image",
16+
"authors": "MONAI team",
17+
"copyright": "Copyright (c) MONAI Consortium",
18+
"data_source": "Task09_Spleen.tar from http://medicaldecathlon.com/",
19+
"data_type": "nibabel",
20+
"image_classes": "single channel data, intensity scaled to [0, 1]",
21+
"label_classes": "single channel data, 1 is spleen, 0 is everything else",
22+
"pred_classes": "2 channels OneHot data, channel 1 is spleen, channel 0 is background",
23+
"eval_metrics": {
24+
"mean_dice": 0.96
25+
},
26+
"intended_use": "This is an example, not to be used for diagnostic purposes",
27+
"references": [
28+
"Xia, Yingda, et al. '3D Semi-Supervised Learning with Uncertainty-Aware Multi-View Co-Training. arXiv preprint arXiv:1811.12506 (2018). https://arxiv.org/abs/1811.12506.",
29+
"Kerfoot E., Clough J., Oksuz I., Lee J., King A.P., Schnabel J.A. (2019) Left-Ventricle Quantification Using Residual U-Net. In: Pop M. et al. (eds) Statistical Atlases and Computational Models of the Heart. Atrial Segmentation and LV Quantification Challenges. STACOM 2018. Lecture Notes in Computer Science, vol 11395. Springer, Cham. https://doi.org/10.1007/978-3-030-12029-0_40"
30+
],
31+
"network_data_format": {
32+
"inputs": {
33+
"image": {
34+
"type": "image",
35+
"format": "hounsfield",
36+
"modality": "CT",
37+
"num_channels": 1,
38+
"spatial_shape": [
39+
96,
40+
96,
41+
96
42+
],
43+
"dtype": "float32",
44+
"value_range": [
45+
0,
46+
1
47+
],
48+
"is_patch_data": true,
49+
"channel_def": {
50+
"0": "image"
51+
}
52+
}
53+
},
54+
"outputs": {
55+
"pred": {
56+
"type": "image",
57+
"format": "segmentation",
58+
"num_channels": 2,
59+
"spatial_shape": [
60+
96,
61+
96,
62+
96
63+
],
64+
"dtype": "float32",
65+
"value_range": [
66+
0,
67+
1
68+
],
69+
"is_patch_data": true,
70+
"channel_def": {
71+
"0": "background",
72+
"1": "spleen"
73+
}
74+
}
75+
}
76+
}
77+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"device": "$torch.device(f'cuda:{dist.get_rank()}')",
3+
"network": {
4+
"_target_": "torch.nn.parallel.DistributedDataParallel",
5+
"module": "$@network_def.to(@device)",
6+
"device_ids": [
7+
"@device"
8+
]
9+
},
10+
"train#sampler": {
11+
"_target_": "DistributedSampler",
12+
"dataset": "@train#dataset",
13+
"even_divisible": true,
14+
"shuffle": true
15+
},
16+
"train#dataloader#sampler": "@train#sampler",
17+
"train#dataloader#shuffle": false,
18+
"train#trainer#train_handlers": "$@train#handlers[: -2 if dist.get_rank() > 0 else None]",
19+
"validate#sampler": {
20+
"_target_": "DistributedSampler",
21+
"dataset": "@validate#dataset",
22+
"even_divisible": false,
23+
"shuffle": false
24+
},
25+
"validate#dataloader#sampler": "@validate#sampler",
26+
"validate#evaluator#val_handlers": "$None if dist.get_rank() > 0 else @validate#handlers",
27+
"training": [
28+
"$import torch.distributed as dist",
29+
"$dist.init_process_group(backend='nccl')",
30+
"$torch.cuda.set_device(@device)",
31+
"$monai.utils.set_determinism(seed=123)",
32+
"$setattr(torch.backends.cudnn, 'benchmark', True)",
33+
"$@train#trainer.run()",
34+
"$dist.destroy_process_group()"
35+
]
36+
}

0 commit comments

Comments
 (0)