Skip to content

Commit bff3af2

Browse files
update to support metatensor (#826)
Signed-off-by: Yiheng Wang <[email protected]>
1 parent 25eda85 commit bff3af2

File tree

6 files changed

+10
-44
lines changed

6 files changed

+10
-44
lines changed

kaggle/RANZCR/4th_place_solution/configs/cfg_seg_40_1024d_full.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import numpy as np
22
from monai.transforms import (
3-
CastToTyped,
43
CenterSpatialCropd,
54
Compose,
6-
EnsureTyped,
75
Lambdad,
86
NormalizeIntensityd,
97
RandAffined,
@@ -60,10 +58,8 @@
6058
max_spatial_size=(84, 84),
6159
prob=0.5,
6260
),
63-
CastToTyped(keys="input", dtype=np.float32),
6461
NormalizeIntensityd(keys="input", nonzero=False),
6562
Lambdad(keys="input", func=lambda x: x.clip(-20, 20)),
66-
EnsureTyped(keys=("input", "mask")),
6763
]
6864
)
6965

@@ -80,10 +76,8 @@
8076
CenterSpatialCropd(
8177
keys=("input", "mask"), roi_size=(cfg.img_size[0], cfg.img_size[1])
8278
),
83-
CastToTyped(keys="input", dtype=np.float32),
8479
NormalizeIntensityd(keys="input", nonzero=False),
8580
Lambdad(keys="input", func=lambda x: x.clip(-20, 20)),
86-
EnsureTyped(keys=("input", "mask")),
8781
]
8882
)
8983

@@ -97,9 +91,7 @@
9791
align_corners=False,
9892
),
9993
SpatialPadd(keys=("input", "mask"), spatial_size=(1008, 1008)),
100-
CastToTyped(keys="input", dtype=np.float32),
10194
NormalizeIntensityd(keys="input", nonzero=False),
10295
Lambdad(keys="input", func=lambda x: x.clip(-20, 20)),
103-
EnsureTyped(keys=("input", "mask")),
10496
]
10597
)

kaggle/RANZCR/4th_place_solution/configs/cfg_seg_philipp_16_ch_1024_ap_full.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import numpy as np
22
from monai.transforms import (
3-
CastToTyped,
43
CenterSpatialCropd,
54
Compose,
6-
EnsureTyped,
75
Lambdad,
86
NormalizeIntensityd,
97
RandAffined,
@@ -62,10 +60,8 @@
6260
max_spatial_size=(102, 102),
6361
prob=0.5,
6462
),
65-
CastToTyped(keys="input", dtype=np.float32),
6663
NormalizeIntensityd(keys="input", nonzero=False),
6764
Lambdad(keys="input", func=lambda x: x.clip(-20, 20)),
68-
EnsureTyped(keys=("input", "mask")),
6965
]
7066
)
7167

@@ -82,10 +78,8 @@
8278
CenterSpatialCropd(
8379
keys=("input", "mask"), roi_size=(cfg.img_size[0], cfg.img_size[1])
8480
),
85-
CastToTyped(keys="input", dtype=np.float32),
8681
NormalizeIntensityd(keys="input", nonzero=False),
8782
Lambdad(keys="input", func=lambda x: x.clip(-20, 20)),
88-
EnsureTyped(keys=("input", "mask")),
8983
]
9084
)
9185

@@ -99,9 +93,7 @@
9993
align_corners=False,
10094
),
10195
SpatialPadd(keys=("input", "mask"), spatial_size=(1120, 1120)),
102-
CastToTyped(keys="input", dtype=np.float32),
10396
NormalizeIntensityd(keys="input", nonzero=False),
10497
Lambdad(keys="input", func=lambda x: x.clip(-20, 20)),
105-
EnsureTyped(keys=("input", "mask")),
10698
]
10799
)

kaggle/RANZCR/4th_place_solution/configs/cfg_seg_philipp_16_ch_1024_nons_full.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import numpy as np
22
from monai.transforms import (
3-
CastToTyped,
43
CenterSpatialCropd,
54
Compose,
6-
EnsureTyped,
75
Lambdad,
86
NormalizeIntensityd,
97
RandAffined,
@@ -63,10 +61,8 @@
6361
max_spatial_size=(102, 102),
6462
prob=0.5,
6563
),
66-
CastToTyped(keys="input", dtype=np.float32),
6764
NormalizeIntensityd(keys="input", nonzero=False),
6865
Lambdad(keys="input", func=lambda x: x.clip(-20, 20)),
69-
EnsureTyped(keys=("input", "mask")),
7066
]
7167
)
7268

@@ -83,10 +79,8 @@
8379
CenterSpatialCropd(
8480
keys=("input", "mask"), roi_size=(cfg.img_size[0], cfg.img_size[1])
8581
),
86-
CastToTyped(keys="input", dtype=np.float32),
8782
NormalizeIntensityd(keys="input", nonzero=False),
8883
Lambdad(keys="input", func=lambda x: x.clip(-20, 20)),
89-
EnsureTyped(keys=("input", "mask")),
9084
]
9185
)
9286

@@ -100,9 +94,7 @@
10094
align_corners=False,
10195
),
10296
SpatialPadd(keys=("input", "mask"), spatial_size=(1120, 1120)),
103-
CastToTyped(keys="input", dtype=np.float32),
10497
NormalizeIntensityd(keys="input", nonzero=False),
10598
Lambdad(keys="input", func=lambda x: x.clip(-20, 20)),
106-
EnsureTyped(keys=("input", "mask")),
10799
]
108100
)

kaggle/RANZCR/4th_place_solution/data/seg_data.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def load_one(self, study_id: str):
7272
"""
7373
ext = self.cfg.image_extension
7474
fp = self.data_folder + study_id + ext
75-
img = self.img_reader(filename=fp).transpose(1, 0)
75+
img = self.img_reader(filename=fp).numpy().transpose(1, 0)
7676
img = img[:, :, None]
7777

7878
return img
@@ -129,7 +129,7 @@ def __getitem__(self, idx):
129129
img = self.load_one(study_id)
130130
# convert the shape into (Channel, height, width)
131131
mask = self.get_mask(study_id, img.shape, is_annotated).transpose(2, 0, 1)
132-
data = {"input": img.transpose(2, 0, 1), "mask": mask}
132+
data = {"input": torch.tensor(img.transpose(2, 0, 1)), "mask": torch.tensor(mask)}
133133
if self.aug:
134134
data = self.aug(data)
135135

kaggle/RANZCR/4th_place_solution/train.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,6 @@ def run_eval(model, val_dataloader, cfg, writer, epoch):
224224

225225
val_preds = torch.cat(val_preds)
226226
val_targets = torch.cat(val_targets)
227-
val_preds = val_preds.cpu().numpy().astype(np.float32)
228-
val_targets = val_targets.cpu().numpy().astype(np.float32)
229227
avg_auc = compute_roc_auc(val_preds, val_targets, average="macro")
230228
writer.add_scalar("val_avg_auc", avg_auc, epoch)
231229

modules/dynunet_pipeline/transforms.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
NormalizeIntensity, RandCropByPosNegLabeld,
55
RandFlipd, RandGaussianNoised,
66
RandGaussianSmoothd, RandScaleIntensityd,
7-
RandZoomd, SpatialCrop, SpatialPadd, EnsureTyped)
7+
RandZoomd, SpatialCrop, SpatialPadd, ToTensord, EnsureTyped)
88
from monai.transforms.compose import MapTransform
99
from monai.transforms.utils import generate_spatial_bounding_box
1010
from skimage.transform import resize
@@ -31,6 +31,7 @@ def get_task_transforms(mode, task_id, pos_sample_num, neg_sample_num, num_sampl
3131
normalize_values=normalize_values[task_id],
3232
model_mode=mode,
3333
),
34+
ToTensord(keys="image"),
3435
]
3536
# 3. spatial transforms
3637
if mode == "train":
@@ -66,23 +67,11 @@ def get_task_transforms(mode, task_id, pos_sample_num, neg_sample_num, num_sampl
6667
RandFlipd(["image", "label"], spatial_axis=[0], prob=0.5),
6768
RandFlipd(["image", "label"], spatial_axis=[1], prob=0.5),
6869
RandFlipd(["image", "label"], spatial_axis=[2], prob=0.5),
69-
CastToTyped(keys=["image", "label"], dtype=(np.float32, np.uint8)),
70-
EnsureTyped(keys=["image", "label"]),
71-
]
72-
elif mode == "validation":
73-
other_transforms = [
74-
CastToTyped(keys=["image", "label"], dtype=(np.float32, np.uint8)),
75-
EnsureTyped(keys=["image", "label"]),
76-
]
77-
else:
78-
other_transforms = [
79-
CastToTyped(keys=["image"], dtype=(np.float32)),
80-
EnsureTyped(keys=["image"]),
8170
]
8271

83-
all_transforms = load_transforms + sample_transforms + other_transforms
84-
return Compose(all_transforms)
85-
72+
return Compose(load_transforms + sample_transforms + other_transforms)
73+
else:
74+
return Compose(load_transforms + sample_transforms)
8675

8776
def resample_image(image, shape, anisotrophy_flag):
8877
resized_channels = []
@@ -273,6 +262,7 @@ def __call__(self, data):
273262
# load data
274263
d = dict(data)
275264
image = d["image"]
265+
276266
image_spacings = d["image_meta_dict"]["pixdim"][1:4].tolist()
277267

278268
if "label" in self.keys:
@@ -294,6 +284,8 @@ def __call__(self, data):
294284
# calculate shape
295285
resample_flag = False
296286
anisotrophy_flag = False
287+
288+
image = image.numpy()
297289
if self.target_spacing != image_spacings:
298290
# resample
299291
resample_flag = True

0 commit comments

Comments
 (0)