tracel-ai/burn · error

Unrecognized image color type

Error message

Unrecognized image color type

What it means

Exhaustiveness guard in `segmentation_mask_to_vec_usize`: only L8, L16, Rgb8, and Rgb16 image color types are converted; any other `image::ColorType` (e.g. RGBA, palette, or alpha-bearing formats) reaching the loader triggers the panic. The failing input is an image file whose color type the image folder dataset does not support for segmentation masks.

Source

Thrown at crates/burn-dataset/src/vision/image_folder.rs:261

    // Image as Vec<PixelDepth>
    // if rgb8 or rgb16, keep only the first channel assuming all channels are the same

    match image.color() {
        ColorType::L8 => image.into_luma8().iter().map(|&x| x as usize).collect(),
        ColorType::L16 => image.into_luma16().iter().map(|&x| x as usize).collect(),
        ColorType::Rgb8 => image
            .into_rgb8()
            .iter()
            .step_by(3)
            .map(|&x| x as usize)
            .collect(),
        ColorType::Rgb16 => image
            .into_rgb16()
            .iter()
            .step_by(3)
            .map(|&x| x as usize)
            .collect(),
        _ => panic!("Unrecognized image color type"),
    }
}

/// Parse the image annotation to the corresponding type.
fn parse_image_annotation(
    annotation: &AnnotationRaw,
    classes: &HashMap<String, usize>,
) -> Annotation {
    // TODO: add support for other annotations
    // - [ ] Object bounding boxes
    // - [x] Segmentation mask
    // For now, only image classification labels and segmentation are supported.

    // Map class string to label id
    match annotation {
        AnnotationRaw::Label(name) => Annotation::Label(*classes.get(name).unwrap()),
        AnnotationRaw::MultiLabel(names) => Annotation::MultiLabel(
            names

View on GitHub (pinned to d16f7ba2ed)

Solutions

  1. Pre-convert mask images to 8-bit grayscale or RGB (no alpha) before placing them in the dataset folder.
  2. Re-save PNG masks as palette-free `L` or `RGB` mode (e.g. with ImageMagick or PIL) to drop RGBA/palette color types.
  3. Extend the match to handle additional ColorTypes such as Rgba8/A8 if masks legitimately use alpha channels.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/burn-dataset/src/vision/image_folder.rs:261 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tracel-ai/burn@d16f7ba2ed (2026-09-05). Data as JSON: /api/errors/4c56b8eefc0703be. Report an issue: GitHub.