tensorflow/models · error · ConfigurationError

Class ' ' is assigned to both ' ' and ' '.

Error message

Class '{class_name}' is assigned to both '{seen_classes[class_name]}' and '{category_name}'.

What it means

Duplicate-assignment validation in build_collapsed_categories_config: the same class name appears under two different categories (tracked via the seen_classes dict). A class can only collapse into one category; duplicates would make get_category_for_class ambiguous, so the loader reports both conflicting category names.

Solutions

  1. Keep the class in only one category and delete it from the other
  2. Split into two distinct class names if the classes are genuinely different concepts
  3. Reorganize the categories so they are disjoint sets over the classes list
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at official/projects/waste_identification_ml/model_inference_with_tracking/sam3_dinov3_tracking_pipeline/config_loader.py:300 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tensorflow/models@e006f5f0d5 (2026-08-24). Data as JSON: /api/errors/66d4aaab3151622d. Report an issue: GitHub.

Appendix: source

Thrown at official/projects/waste_identification_ml/model_inference_with_tracking/sam3_dinov3_tracking_pipeline/config_loader.py:300

  for category_name, class_list in raw_mapping.items():
    if not isinstance(class_list, Sequence) or isinstance(class_list, str):
      raise ConfigurationError(
          f"Category '{category_name}' must map to a list of class names."
      )
    if not class_list:
      raise ConfigurationError(
          f"Category '{category_name}' must map to a non-empty list of class "
          "names."
      )
    mapping_dict[str(category_name)] = list(class_list)
    for class_name in class_list:
      if class_name not in class_names:
        raise ConfigurationError(
            f"Class '{class_name}' in category '{category_name}' is not "
            "present in the top-level 'classes' list."
        )
      if class_name in seen_classes:
        raise ConfigurationError(
            f"Class '{class_name}' is assigned to both "
            f"'{seen_classes[class_name]}' and '{category_name}'."
        )
      seen_classes[class_name] = category_name

  unmapped_classes = [c for c in classes if c not in seen_classes]
  if unmapped_classes:
    raise ConfigurationError(
        "The following classes are not assigned to any collapsed category: "
        f"{unmapped_classes}"
    )

  return CollapsedCategoriesConfig(enable=True, mapping=mapping_dict)


@dataclasses.dataclass(frozen=True, kw_only=True)
class PipelineConfig:
  """Root configuration object representing the entire pipeline state."""

View on GitHub (pinned to e006f5f0d5)