Issues with multiple labels and masks overlapping in Monailabel

Hey everyone, I’m labeling brain segments in MONAILabel.

The masks / ROIs used as input for Monailabel are a subselection extracted by slicerio.extract_segments() function from a 3DSlicer Segmentation node.

I modified the config files from the models DeepEdit and Segmentation (from the radiology app) to match our masks, but I haven’t made much progress so far.

Here is a screenshot of the DeepEdit config file

I’ve included 5 masks so far, which are clearly identified in 3D Slicer (see figure below):

In 3D Slicer, the 5 labels are separate and clearly identified

However, when I open them in MONAI Label, the labels often get collapsed. For example, the ipsilateral and contralateral hemisphere labels may collapse into the contralateral hemisphere, the cerebellum and lateral ventricles become one label, and some labels are completely absent (see figure below):

In Monailabel, all 5 labels are collapsed into 3 - cerebellum, ipsilateral and contralateral lateral ventricles

Has anyone encountered this issue before or have any advice on how to fix it?

UPDATE: We are still stuck with the overlapping label maps. It seems the most labels collapse into the last 2 or 3 segments (as shown previously in Figure 3).
This problem ONLY occurs in Monailabel module, but not with the 3D Slicer segment editor.

Find below the object information from the mask when loaded with Monailabel.
Thank you so much!

Python 3.9.10 (main, Mar 2 2025, 20:55:00) [MSC v.1942 64 bit (AMD64)] on win32

seg = labelmapNode.GetSegmentation()
print(seg)
vtkSegmentation (0000020B12988720)
Debug: Off
Modified Time: 8177604
SourceRepresentationName: Binary labelmap
Number of segments: 5
Segments:
Ipsilateral Hemisphere:
Name: Ipsilateral Hemisphere
Color: (0.501961, 0.682353, 0.501961)
NameAutoGenerated: true
ColorAutoGenerated: true
Debug: Off
Modified Time: 8346968
Representations:
Binary labelmap:
ClassName: vtkOrientedImageData
Origin: -14.9414 -14.9414 -129.807
Spacing: 0.11719 0.11719 0.4
Extent: 0 255 0 255 0 39
Scalar type: unsigned char
Number of components: 1
IJKToRASDirections:
1 0 0
0 1 -1.28205e-07
0 0 1
Tags:
TerminologyEntry: Segmentation category and type - 3D Slicer General Anatomy list~SCT^85756007^Tissue~SCT^85756007^Tissue~^^~Anatomic codes - DICOM master list~^^~^^
Contralateral Hemisphere:
Name: Contralateral Hemisphere
Color: (0.945098, 0.839216, 0.568627)
NameAutoGenerated: true
ColorAutoGenerated: true
Debug: Off
Modified Time: 8347271
Representations:
Binary labelmap:
ClassName: vtkOrientedImageData
Origin: -14.9414 -14.9414 -129.807
Spacing: 0.11719 0.11719 0.4
Extent: 0 255 0 255 0 39
Scalar type: unsigned char
Number of components: 1
IJKToRASDirections:
1 0 0
0 1 -1.28205e-07
0 0 1
Tags:
TerminologyEntry: Segmentation category and type - 3D Slicer General Anatomy list~SCT^85756007^Tissue~SCT^85756007^Tissue~^^~Anatomic codes - DICOM master list~^^~^^
Cerebellum:
Name: Cerebellum
Color: (0.694118, 0.478431, 0.396078)
NameAutoGenerated: true
ColorAutoGenerated: true
Debug: Off
Modified Time: 8347574
Representations:
Binary labelmap:
ClassName: vtkOrientedImageData
Origin: -14.9414 -14.9414 -129.807
Spacing: 0.11719 0.11719 0.4
Extent: 0 255 0 255 0 39
Scalar type: unsigned char
Number of components: 1
IJKToRASDirections:
1 0 0
0 1 -1.28205e-07
0 0 1
Tags:
TerminologyEntry: Segmentation category and type - 3D Slicer General Anatomy list~SCT^85756007^Tissue~SCT^85756007^Tissue~^^~Anatomic codes - DICOM master list~^^~^^
Ipsilateral Lateral Ventricle:
Name: Ipsilateral Lateral Ventricle
Color: (0.435294, 0.721569, 0.823529)
NameAutoGenerated: true
ColorAutoGenerated: true
Debug: Off
Modified Time: 8347877
Representations:
Binary labelmap:
ClassName: vtkOrientedImageData
Origin: -14.9414 -14.9414 -129.807
Spacing: 0.11719 0.11719 0.4
Extent: 0 255 0 255 0 39
Scalar type: unsigned char
Number of components: 1
IJKToRASDirections:
1 0 0
0 1 -1.28205e-07
0 0 1
Tags:
TerminologyEntry: Segmentation category and type - 3D Slicer General Anatomy list~SCT^85756007^Tissue~SCT^85756007^Tissue~^^~Anatomic codes - DICOM master list~^^~^^
Contralateral Lateral Ventricle:
Name: Contralateral Lateral Ventricle
Color: (0.847059, 0.396078, 0.309804)
NameAutoGenerated: true
ColorAutoGenerated: true
Debug: Off
Modified Time: 8347894
Representations:
Binary labelmap:
ClassName: vtkOrientedImageData
Origin: -14.9414 -14.9414 -129.807
Spacing: 0.11719 0.11719 0.4
Extent: 0 255 0 255 0 39
Scalar type: unsigned char
Number of components: 1
IJKToRASDirections:
1 0 0
0 1 -1.28205e-07
0 0 1
Tags:
TerminologyEntry: Segmentation category and type - 3D Slicer General Anatomy list~SCT^85756007^Tissue~SCT^85756007^Tissue~^^~Anatomic codes - DICOM master list~^^~^^
Segment converter:
Debug: Off
Modified Time: 8096804
Reference Count: 1
Registered Events: (none)
Rules:
Rule[0]:
Name: Binary labelmap to closed surface
SourceRepresentationName: Binary labelmap
TargetRepresentationName: Closed surface
ConversionParameters:
Decimation factor: 0.0 [Desired reduction in the total number of polygons. Range: 0.0 (no decimation) to 1.0 (as much simplification as possible). Value of 0.8 typically reduces data set size by 80% without losing too much details.]
Smoothing factor: 0.5 [Smoothing factor. Range: 0.0 (no smoothing) to 1.0 (strong smoothing).]
Compute surface normals: 1 [Compute surface normals. 1 (default) = surface normals are computed. 0 = surface normals are not computed (slightly faster but produces less smooth surface display, not used if vtkSurfaceNets3D is used).]
Conversion method: 0 [Conversion method. 0 (default) = vtkDiscreteFlyingEdges3D is used to generate closed surface.1 = vtkSurfaceNets3D (more performant than flying edges).]
SurfaceNets smoothing: 0 [SurfaceNets smoothing. 0 (default) = Smoothing done by vtkWindowedSincPolyDataFilter1 = Smoothing done in surface nets filter.]
Joint smoothing: 0 [Perform joint smoothing.]
Debug: Off
Modified Time: 8096806
Reference Count: 2
Registered Events: (none)
Rule[1]:
Name: Closed surface to binary labelmap (simple image stencil)
SourceRepresentationName: Closed surface
TargetRepresentationName: Binary labelmap
ConversionParameters:
Reference image geometry: 0.11718999999999999;0;0;-14.941405999999999;0;0.11718999999999999;-5.128205128921935e-8;-14.94140500000001;0;0;0.40000017948717936;-129.74360700000003;0;0;0;1;0;255;0;255;0;39; [Image geometry description string determining the geometry of the labelmap that is created in course of conversion. Can be copied from a volume, using the button.]
Oversampling factor: 1 [Determines the oversampling of the reference image geometry. If it’s a number, then all segments are oversampled with the same value (value of 1 means no oversampling). If it has the value “A”, then automatic oversampling is calculated.]
Crop to reference image geometry: 0 [Crop the model to the extent of reference geometry. 0 (default) = created labelmap will contain the entire model. 1 = created labelmap extent will be within reference image extent.]
Collapse labelmaps: 1 [Merge the labelmaps into as few shared labelmaps as possible 1 = created labelmaps will be shared if possible without overwriting each other.]
Debug: Off
Modified Time: 8096808
Reference Count: 2
Registered Events: (none)
Rule[2]:
Name: Closed surface to fractional labelmap (simple image stencil)
SourceRepresentationName: Closed surface
TargetRepresentationName: Fractional labelmap
ConversionParameters:
Reference image geometry: 0.11718999999999999;0;0;-14.941405999999999;0;0.11718999999999999;-5.128205128921935e-8;-14.94140500000001;0;0;0.40000017948717936;-129.74360700000003;0;0;0;1;0;255;0;255;0;39; [Image geometry description string determining the geometry of the labelmap that is created in course of conversion. Can be copied from a volume, using the button.]
Oversampling factor: 1 [Determines the oversampling of the reference image geometry. If it’s a number, then all segments are oversampled with the same value (value of 1 means no oversampling). If it has the value “A”, then automatic oversampling is calculated.]
Crop to reference image geometry: 0 [Crop the model to the extent of reference geometry. 0 (default) = created labelmap will contain the entire model. 1 = created labelmap extent will be within reference image extent.]
Collapse labelmaps: 1 [Merge the labelmaps into as few shared labelmaps as possible 1 = created labelmaps will be shared if possible without overwriting each other.]
Debug: Off
Modified Time: 8096810
Reference Count: 2
Registered Events: (none)
Rule[3]:
Name: Fractional labelmap to closed surface
SourceRepresentationName: Fractional labelmap
TargetRepresentationName: Closed surface
ConversionParameters:
Decimation factor: 0.0 [Desired reduction in the total number of polygons. Range: 0.0 (no decimation) to 1.0 (as much simplification as possible). Value of 0.8 typically reduces data set size by 80% without losing too much details.]
Smoothing factor: 0.5 [Smoothing factor. Range: 0.0 (no smoothing) to 1.0 (strong smoothing).]
Compute surface normals: 1 [Compute surface normals. 1 (default) = surface normals are computed. 0 = surface normals are not computed (slightly faster but produces less smooth surface display, not used if vtkSurfaceNets3D is used).]
Conversion method: 0 [Conversion method. 0 (default) = vtkDiscreteFlyingEdges3D is used to generate closed surface.1 = vtkSurfaceNets3D (more performant than flying edges).]
SurfaceNets smoothing: 0 [SurfaceNets smoothing. 0 (default) = Smoothing done by vtkWindowedSincPolyDataFilter1 = Smoothing done in surface nets filter.]
Joint smoothing: 0 [Perform joint smoothing.]
Fractional labelmap oversampling factor: 1 [Determines the oversampling of the reference image geometry. All segments are oversampled with the same value (value of 1 means no oversampling).]
Threshold fraction: 0.5 [Determines the threshold that the closed surface is created at as a fractional value between 0 and 1.]
Debug: Off
Modified Time: 8096812
Reference Count: 2
Registered Events: (none)