Skip to content

Commit 8c0b243

Browse files
Update transforms in deepEdit App (#664)
Signed-off-by: Andres <[email protected]> Co-authored-by: SACHIDANAND ALLE <[email protected]>
1 parent 5b34830 commit 8c0b243

File tree

5 files changed

+5
-77
lines changed

5 files changed

+5
-77
lines changed

monailabel/deepedit/multilabel/transforms.py

-38
Original file line numberDiff line numberDiff line change
@@ -635,44 +635,6 @@ def __call__(self, data: Mapping[Hashable, np.ndarray]) -> Dict[Hashable, np.nda
635635
return d
636636

637637

638-
# A transform to get single modality if there are more and do label sanity
639-
class SingleModalityLabelSanityd(MapTransform):
640-
"""
641-
Gets single modality and perform label sanity check
642-
643-
Error is the label is not in the same range:
644-
https://stdworkflow.com/866/runtimeerror-cudnn-error-cudnn-status-not-initialized
645-
"""
646-
647-
def __init__(
648-
self,
649-
keys: KeysCollection,
650-
label_names=None,
651-
allow_missing_keys: bool = False,
652-
):
653-
super().__init__(keys, allow_missing_keys)
654-
self.label_names = label_names
655-
656-
def __call__(self, data):
657-
d = dict(data)
658-
for key in self.keys:
659-
if key == "label":
660-
logger.info(f"Input image shape check in SingleModalityLabelSanityd transform: {d[key].shape}")
661-
if key == "image":
662-
meta_data = d["image_meta_dict"]
663-
if meta_data["spatial_shape"].shape[0] > 3:
664-
if meta_data["spatial_shape"][4] > 0:
665-
logger.info(
666-
f"Image {meta_data['filename_or_obj'].split('/')[-1]} has more than one modality "
667-
f"- taking FIRST modality ..."
668-
)
669-
670-
d[key] = d[key][..., 0]
671-
meta_data["spatial_shape"][4] = 0.0
672-
673-
return d
674-
675-
676638
class AddGuidanceFromPointsCustomd(Transform):
677639
"""
678640
Add guidance based on user clicks. ONLY WORKS FOR 3D

monailabel/deepedit/transforms.py

-29
Original file line numberDiff line numberDiff line change
@@ -294,35 +294,6 @@ def __call__(self, data):
294294
return d
295295

296296

297-
# A transform to check for single modality and single label
298-
class CheckSingleLabelSingleModalityd(MapTransform):
299-
"""
300-
Checks single modality and single label
301-
"""
302-
303-
def __call__(self, data):
304-
d = dict(data)
305-
for key in self.keys:
306-
if key == "label":
307-
meta_data = d["label_meta_dict"]
308-
if len(np.unique(d[key])) > 2:
309-
logger.info(
310-
f"Label {meta_data['filename_or_obj'].split('/')[-1]} has more than one mask - "
311-
f" Consider using Multilabel DeepEdit App ... FINISHING"
312-
)
313-
raise Exception("Multilabel Error")
314-
315-
if key == "image":
316-
meta_data = d["image_meta_dict"]
317-
if d[key].shape[0] > 1:
318-
logger.error(
319-
f"Image {meta_data['filename_or_obj'].split('/')[-1]} has more than one modality "
320-
f"- Multimodality is not yet supported ... FINISHING"
321-
)
322-
raise Exception("Multimodality/Multisequence images NOT supported")
323-
return d
324-
325-
326297
class CropGuidanceForegroundd(Transform):
327298
"""
328299
Update guidance based on foreground crop.

monailabel/tasks/scoring/tta.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
RandFlipd,
3131
RandRotated,
3232
Resized,
33-
Spacingd,
3433
ToTensord,
3534
)
3635
from monai.transforms.compose import Compose
@@ -41,7 +40,7 @@
4140
from monai.utils.enums import CommonKeys, InverseKeys
4241
from tqdm import tqdm
4342

44-
from monailabel.deepedit.transforms import CheckSingleLabelSingleModalityd, DiscardAddGuidanced
43+
from monailabel.deepedit.transforms import DiscardAddGuidanced
4544
from monailabel.interfaces.datastore import Datastore
4645
from monailabel.interfaces.tasks.scoring import ScoringMethod
4746

@@ -73,9 +72,9 @@ def __init__(
7372
def pre_transforms(self):
7473
t = [
7574
LoadImaged(keys="image", reader="nibabelreader"),
76-
CheckSingleLabelSingleModalityd(keys="image"),
7775
AddChanneld(keys="image"),
78-
Spacingd(keys="image", pixdim=self.spacing),
76+
# Spacing might not be needed as resize transform is used later.
77+
# Spacingd(keys="image", pixdim=self.spacing),
7978
RandAffined(
8079
keys="image",
8180
prob=1,

sample-apps/deepedit/lib/infer.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
ToTensord,
2727
)
2828

29-
from monailabel.deepedit.transforms import CheckSingleLabelSingleModalityd, DiscardAddGuidanced, ResizeGuidanceCustomd
29+
from monailabel.deepedit.transforms import DiscardAddGuidanced, ResizeGuidanceCustomd
3030
from monailabel.interfaces.tasks.infer import InferTask, InferType
3131
from monailabel.transform.post import Restored
3232

@@ -66,7 +66,6 @@ def pre_transforms(self, data=None) -> Sequence[Callable]:
6666
return [
6767
LoadImaged(keys="image"),
6868
EnsureChannelFirstd(keys="image"),
69-
CheckSingleLabelSingleModalityd(keys="image"),
7069
Orientationd(keys="image", axcodes="RAS"),
7170
NormalizeIntensityd(keys="image"),
7271
Resized(keys="image", spatial_size=self.spatial_size, mode="area"),
@@ -122,7 +121,6 @@ def pre_transforms(self, data=None) -> Sequence[Callable]:
122121
return [
123122
LoadImaged(keys="image", reader="nibabelreader"),
124123
EnsureChannelFirstd(keys="image"),
125-
CheckSingleLabelSingleModalityd(keys="image"),
126124
# Spacing might not be needed as resize transform is used later.
127125
# Spacingd(keys=["image", "label"], pixdim=self.target_spacing, mode=("bilinear", "nearest")),
128126
Orientationd(keys="image", axcodes="RAS"),

sample-apps/deepedit/lib/train.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737

3838
from monailabel.deepedit.handlers import TensorBoardImageHandler
3939
from monailabel.deepedit.interaction import Interaction
40-
from monailabel.deepedit.transforms import CheckSingleLabelSingleModalityd, PosNegClickProbAddRandomGuidanced
40+
from monailabel.deepedit.transforms import PosNegClickProbAddRandomGuidanced
4141
from monailabel.tasks.train.basic_train import BasicTrainTask, Context
4242

4343
logger = logging.getLogger(__name__)
@@ -94,7 +94,6 @@ def train_pre_transforms(self, context: Context):
9494
return [
9595
LoadImaged(keys=("image", "label"), reader="nibabelreader"),
9696
EnsureChannelFirstd(keys=("image", "label")),
97-
CheckSingleLabelSingleModalityd(keys=("image", "label")),
9897
# Spacing might not be needed as resize transform is used later.
9998
# Spacingd(keys=["image", "label"], pixdim=self.target_spacing, mode=("bilinear", "nearest")),
10099
Orientationd(keys=["image", "label"], axcodes="RAS"),
@@ -127,7 +126,6 @@ def val_pre_transforms(self, context: Context):
127126
return [
128127
LoadImaged(keys=("image", "label"), reader="nibabelreader"),
129128
EnsureChannelFirstd(keys=("image", "label")),
130-
CheckSingleLabelSingleModalityd(keys=("image", "label")),
131129
# Spacing might not be needed as resize transform is used later.
132130
# Spacingd(keys=["image", "label"], pixdim=self.target_spacing, mode=("bilinear", "nearest")),
133131
Orientationd(keys=["image", "label"], axcodes="RAS"),

0 commit comments

Comments
 (0)