File size: 5,023 Bytes
22a3b73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
{
    "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()"
    ]
}